
bfd_boolean
debug_record_variable
          (void *handle,char *name,debug_type_conflict type,debug_var_kind kind,bfd_vma val)

{
  long lVar1;
  debug_name *pdVar2;
  debug_variable *pdVar3;
  undefined8 uVar4;
  debug_object_kind kind_00;
  debug_handle *info;
  debug_handle *info_00;
  
  if ((name == (char *)0x0) || (type == (debug_type_conflict)0x0)) {
    return 0;
  }
  if ((*(long *)((long)handle + 8) == 0) || (lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0)) {
    uVar4 = dcgettext(0,"debug_record_variable: no current file",5);
    fprintf(stderr,"%s\n",uVar4);
  }
  else {
    if (kind - DEBUG_GLOBAL < 2) {
      info_00 = (debug_handle *)(lVar1 + 0x10);
      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;
    }
    else {
      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);
      kind_00 = DEBUG_OBJECT_TYPE;
      if (*(long *)((long)handle + 0x20) == 0) {
        info_00 = (debug_handle *)(lVar1 + 0x10);
        kind_00 = DEBUG_OBJECT_TYPE;
      }
    }
    pdVar2 = debug_add_to_namespace
                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,
                        (debug_object_linkage)val);
    if (pdVar2 != (debug_name *)0x0) {
      pdVar3 = (debug_variable *)xmalloc(0x18);
      *(undefined4 *)&pdVar3->field_0x4 = 0;
      pdVar3->kind = kind;
      pdVar3->type = type;
      pdVar3->val = val;
      (pdVar2->u).variable = pdVar3;
      return 1;
    }
  }
  return 0;
}



undefined8 FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)

{
  long lVar1;
  int *piVar2;
  undefined8 uVar3;
  char cVar4;
  long lVar5;
  
  if ((param_2 == 0) || (param_3 == 0)) {
    return 0;
  }
  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {
    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);
    fprintf(stderr,"%s\n",uVar3);
  }
  else {
    if (param_4 - 1U < 2) {
      lVar5 = lVar1 + 0x10;
      cVar4 = (param_4 == 1) + '\x01';
    }
    else {
      cVar4 = '\0';
      lVar5 = *(long *)(param_1 + 0x20) + 0x28;
      if (*(long *)(param_1 + 0x20) == 0) {
        lVar5 = lVar1 + 0x10;
      }
    }
    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);
    if (lVar1 != 0) {
      piVar2 = (int *)xmalloc(0x18);
      piVar2[1] = 0;
      *piVar2 = param_4;
      *(long *)(piVar2 + 2) = param_3;
      *(undefined8 *)(piVar2 + 4) = param_5;
      *(int **)(lVar1 + 0x20) = piVar2;
      return 1;
    }
  }
  return 0;
}


TEST RSI,RSI
JZ 0x0012d508
TEST RDX,RDX
JZ 0x0012d508
PUSH R13
PUSH R12
MOV R12D,ECX
PUSH RBP
MOV RBP,R8
PUSH RBX
MOV RBX,RDX
SUB RSP,0x8
CMP qword ptr [RDI + 0x8],0x0
JZ 0x0012d4b0
MOV RAX,qword ptr [RDI + 0x10]
TEST RAX,RAX
JZ 0x0012d4b0
LEA EDX,[RCX + -0x1]
CMP EDX,0x1
JBE 0x0012d4f0
MOV RDX,qword ptr [RDI + 0x20]
ADD RAX,0x10
XOR ECX,ECX
LEA RDI,[RDX + 0x28]
TEST RDX,RDX
CMOVZ RDI,RAX
MOV EDX,0x2
CALL 0x0012b2b0
MOV R13,RAX
TEST RAX,RAX
JZ 0x0012d4db
MOV EDI,0x18
CALL 0x00107350
MOV dword ptr [RAX + 0x4],0x0
MOV dword ptr [RAX],R12D
MOV qword ptr [RAX + 0x8],RBX
MOV qword ptr [RAX + 0x10],RBP
MOV qword ptr [R13 + 0x20],RAX
ADD RSP,0x8
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
RET
MOV EDX,0x5
LEA RSI,[0x146500]
XOR EDI,EDI
CALL 0x00107230
MOV RDI,qword ptr [0x00157220]
LEA RSI,[0x1434a5]
MOV RDX,RAX
XOR EAX,EAX
CALL 0x00107850
ADD RSP,0x8
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
RET
XOR ECX,ECX
CMP R12D,0x1
LEA RDI,[RAX + 0x10]
SETZ CL
ADD ECX,0x1
JMP 0x0012d466
XOR EAX,EAX
RET
(translation_unit "undefined8 FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)\n\n{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)\n\n{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)" identifier (parameter_list "(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }" if (parenthesized_expression "((param_2 == 0) || (param_3 == 0))" ( (binary_expression "(param_2 == 0) || (param_3 == 0)" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" if (parenthesized_expression "((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0))" ( (binary_expression "(*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)" (parenthesized_expression "(*(long *)(param_1 + 8) == 0)" ( (binary_expression "*(long *)(param_1 + 8) == 0" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)" ( (comma_expression "lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) , (binary_expression "lVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }" { (expression_statement "uVar3 = dcgettext(0,"debug_record_variable: no current file",5);" (assignment_expression "uVar3 = dcgettext(0,"debug_record_variable: no current file",5)" identifier = (call_expression "dcgettext(0,"debug_record_variable: no current file",5)" identifier (argument_list "(0,"debug_record_variable: no current file",5)" ( number_literal , (string_literal ""debug_record_variable: no current file"" " string_content ") , number_literal )))) ;) (expression_statement "fprintf(stderr,"%s\n",uVar3);" (call_expression "fprintf(stderr,"%s\n",uVar3)" identifier (argument_list "(stderr,"%s\n",uVar3)" ( identifier , (string_literal ""%s\n"" " string_content escape_sequence ") , identifier ))) ;) }) (else_clause "else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" else (compound_statement "{\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" { (if_statement "if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" if (parenthesized_expression "(param_4 - 1U < 2)" ( (binary_expression "param_4 - 1U < 2" (binary_expression "param_4 - 1U" identifier - number_literal) < number_literal) )) (compound_statement "{\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }" { (expression_statement "lVar5 = lVar1 + 0x10;" (assignment_expression "lVar5 = lVar1 + 0x10" identifier = (binary_expression "lVar1 + 0x10" identifier + number_literal)) ;) (expression_statement "cVar4 = (param_4 == 1) + '\x01';" (assignment_expression "cVar4 = (param_4 == 1) + '\x01'" identifier = (binary_expression "(param_4 == 1) + '\x01'" (parenthesized_expression "(param_4 == 1)" ( (binary_expression "param_4 == 1" identifier == number_literal) )) + (char_literal "'\x01'" ' escape_sequence '))) ;) }) (else_clause "else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" else (compound_statement "{\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" { (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "lVar5 = *(long *)(param_1 + 0x20) + 0x28;" (assignment_expression "lVar5 = *(long *)(param_1 + 0x20) + 0x28" identifier = (binary_expression "*(long *)(param_1 + 0x20) + 0x28" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x20) == 0)" ( (binary_expression "*(long *)(param_1 + 0x20) == 0" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        lVar5 = lVar1 + 0x10;\n      }" { (expression_statement "lVar5 = lVar1 + 0x10;" (assignment_expression "lVar5 = lVar1 + 0x10" identifier = (binary_expression "lVar1 + 0x10" identifier + number_literal)) ;) })) }))) (expression_statement "lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);" (assignment_expression "lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4)" identifier = (call_expression "FUN_0012b2b0(lVar5,param_2,2,cVar4)" identifier (argument_list "(lVar5,param_2,2,cVar4)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }" { (expression_statement "piVar2 = (int *)xmalloc(0x18);" (assignment_expression "piVar2 = (int *)xmalloc(0x18)" identifier = (cast_expression "(int *)xmalloc(0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "piVar2[1] = 0;" (assignment_expression "piVar2[1] = 0" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar2 = param_4;" (assignment_expression "*piVar2 = param_4" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "*(long *)(piVar2 + 2) = param_3;" (assignment_expression "*(long *)(piVar2 + 2) = param_3" (pointer_expression "*(long *)(piVar2 + 2)" * (cast_expression "(long *)(piVar2 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2 + 2)" ( (binary_expression "piVar2 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(piVar2 + 4) = param_5;" (assignment_expression "*(undefined8 *)(piVar2 + 4) = param_5" (pointer_expression "*(undefined8 *)(piVar2 + 4)" * (cast_expression "(undefined8 *)(piVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2 + 4)" ( (binary_expression "piVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(lVar1 + 0x20) = piVar2;" (assignment_expression "*(int **)(lVar1 + 0x20) = piVar2" (pointer_expression "*(int **)(lVar1 + 0x20)" * (cast_expression "(int **)(lVar1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "bfd_boolean\ndebug_record_variable\n          (void *handle,char *name,debug_type_conflict type,debug_var_kind kind,bfd_vma val)\n\n{\n  long lVar1;\n  debug_name *pdVar2;\n  debug_variable *pdVar3;\n  undefined8 uVar4;\n  debug_object_kind kind_00;\n  debug_handle *info;\n  debug_handle *info_00;\n  \n  if ((name == (char *)0x0) || (type == (debug_type_conflict)0x0)) {\n    return 0;\n  }\n  if ((*(long *)((long)handle + 8) == 0) || (lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0)) {\n    uVar4 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar4);\n  }\n  else {\n    if (kind - DEBUG_GLOBAL < 2) {\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }\n    else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }\n    pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val);\n    if (pdVar2 != (debug_name *)0x0) {\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "bfd_boolean\ndebug_record_variable\n          (void *handle,char *name,debug_type_conflict type,debug_var_kind kind,bfd_vma val)\n\n{\n  long lVar1;\n  debug_name *pdVar2;\n  debug_variable *pdVar3;\n  undefined8 uVar4;\n  debug_object_kind kind_00;\n  debug_handle *info;\n  debug_handle *info_00;\n  \n  if ((name == (char *)0x0) || (type == (debug_type_conflict)0x0)) {\n    return 0;\n  }\n  if ((*(long *)((long)handle + 8) == 0) || (lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0)) {\n    uVar4 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar4);\n  }\n  else {\n    if (kind - DEBUG_GLOBAL < 2) {\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }\n    else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }\n    pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val);\n    if (pdVar2 != (debug_name *)0x0) {\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "debug_record_variable\n          (void *handle,char *name,debug_type_conflict type,debug_var_kind kind,bfd_vma val)" identifier (parameter_list "(void *handle,char *name,debug_type_conflict type,debug_var_kind kind,bfd_vma val)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "debug_type_conflict type" type_identifier identifier) , (parameter_declaration "debug_var_kind kind" type_identifier identifier) , (parameter_declaration "bfd_vma val" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  debug_name *pdVar2;\n  debug_variable *pdVar3;\n  undefined8 uVar4;\n  debug_object_kind kind_00;\n  debug_handle *info;\n  debug_handle *info_00;\n  \n  if ((name == (char *)0x0) || (type == (debug_type_conflict)0x0)) {\n    return 0;\n  }\n  if ((*(long *)((long)handle + 8) == 0) || (lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0)) {\n    uVar4 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar4);\n  }\n  else {\n    if (kind - DEBUG_GLOBAL < 2) {\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }\n    else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }\n    pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val);\n    if (pdVar2 != (debug_name *)0x0) {\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }\n  }\n  return 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "debug_name *pdVar2;" type_identifier (pointer_declarator "*pdVar2" * identifier) ;) (declaration "debug_variable *pdVar3;" type_identifier (pointer_declarator "*pdVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "debug_object_kind kind_00;" type_identifier identifier ;) (declaration "debug_handle *info;" type_identifier (pointer_declarator "*info" * identifier) ;) (declaration "debug_handle *info_00;" type_identifier (pointer_declarator "*info_00" * identifier) ;) (if_statement "if ((name == (char *)0x0) || (type == (debug_type_conflict)0x0)) {\n    return 0;\n  }" if (parenthesized_expression "((name == (char *)0x0) || (type == (debug_type_conflict)0x0))" ( (binary_expression "(name == (char *)0x0) || (type == (debug_type_conflict)0x0)" (parenthesized_expression "(name == (char *)0x0)" ( (binary_expression "name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(type == (debug_type_conflict)0x0)" ( (binary_expression "type == (debug_type_conflict)0x0" identifier == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*(long *)((long)handle + 8) == 0) || (lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0)) {\n    uVar4 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar4);\n  }\n  else {\n    if (kind - DEBUG_GLOBAL < 2) {\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }\n    else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }\n    pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val);\n    if (pdVar2 != (debug_name *)0x0) {\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }\n  }" if (parenthesized_expression "((*(long *)((long)handle + 8) == 0) || (lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0))" ( (binary_expression "(*(long *)((long)handle + 8) == 0) || (lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0)" (parenthesized_expression "(*(long *)((long)handle + 8) == 0)" ( (binary_expression "*(long *)((long)handle + 8) == 0" (pointer_expression "*(long *)((long)handle + 8)" * (cast_expression "(long *)((long)handle + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)handle + 8)" ( (binary_expression "(long)handle + 8" (cast_expression "(long)handle" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) || (parenthesized_expression "(lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0)" ( (comma_expression "lVar1 = *(long *)((long)handle + 0x10), lVar1 == 0" (assignment_expression "lVar1 = *(long *)((long)handle + 0x10)" identifier = (pointer_expression "*(long *)((long)handle + 0x10)" * (cast_expression "(long *)((long)handle + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)handle + 0x10)" ( (binary_expression "(long)handle + 0x10" (cast_expression "(long)handle" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (binary_expression "lVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar4 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar4);\n  }" { (expression_statement "uVar4 = dcgettext(0,"debug_record_variable: no current file",5);" (assignment_expression "uVar4 = dcgettext(0,"debug_record_variable: no current file",5)" identifier = (call_expression "dcgettext(0,"debug_record_variable: no current file",5)" identifier (argument_list "(0,"debug_record_variable: no current file",5)" ( number_literal , (string_literal ""debug_record_variable: no current file"" " string_content ") , number_literal )))) ;) (expression_statement "fprintf(stderr,"%s\n",uVar4);" (call_expression "fprintf(stderr,"%s\n",uVar4)" identifier (argument_list "(stderr,"%s\n",uVar4)" ( identifier , (string_literal ""%s\n"" " string_content escape_sequence ") , identifier ))) ;) }) (else_clause "else {\n    if (kind - DEBUG_GLOBAL < 2) {\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }\n    else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }\n    pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val);\n    if (pdVar2 != (debug_name *)0x0) {\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }\n  }" else (compound_statement "{\n    if (kind - DEBUG_GLOBAL < 2) {\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }\n    else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }\n    pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val);\n    if (pdVar2 != (debug_name *)0x0) {\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }\n  }" { (if_statement "if (kind - DEBUG_GLOBAL < 2) {\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }\n    else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }" if (parenthesized_expression "(kind - DEBUG_GLOBAL < 2)" ( (binary_expression "kind - DEBUG_GLOBAL < 2" (binary_expression "kind - DEBUG_GLOBAL" identifier - identifier) < number_literal) )) (compound_statement "{\n      info_00 = (debug_handle *)(lVar1 + 0x10);\n      kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;\n    }" { (expression_statement "info_00 = (debug_handle *)(lVar1 + 0x10);" (assignment_expression "info_00 = (debug_handle *)(lVar1 + 0x10)" identifier = (cast_expression "(debug_handle *)(lVar1 + 0x10)" ( (type_descriptor "debug_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) )))) ;) (expression_statement "kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG;" (assignment_expression "kind_00 = (kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG" identifier = (binary_expression "(kind == DEBUG_GLOBAL) + DEBUG_OBJECT_TAG" (parenthesized_expression "(kind == DEBUG_GLOBAL)" ( (binary_expression "kind == DEBUG_GLOBAL" identifier == identifier) )) + identifier)) ;) }) (else_clause "else {\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }" else (compound_statement "{\n      info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);\n      kind_00 = DEBUG_OBJECT_TYPE;\n      if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }\n    }" { (expression_statement "info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28);" (assignment_expression "info_00 = (debug_handle *)(*(long *)((long)handle + 0x20) + 0x28)" identifier = (cast_expression "(debug_handle *)(*(long *)((long)handle + 0x20) + 0x28)" ( (type_descriptor "debug_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)((long)handle + 0x20) + 0x28)" ( (binary_expression "*(long *)((long)handle + 0x20) + 0x28" (pointer_expression "*(long *)((long)handle + 0x20)" * (cast_expression "(long *)((long)handle + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)handle + 0x20)" ( (binary_expression "(long)handle + 0x20" (cast_expression "(long)handle" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) )))) ;) (expression_statement "kind_00 = DEBUG_OBJECT_TYPE;" (assignment_expression "kind_00 = DEBUG_OBJECT_TYPE" identifier = identifier) ;) (if_statement "if (*(long *)((long)handle + 0x20) == 0) {\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }" if (parenthesized_expression "(*(long *)((long)handle + 0x20) == 0)" ( (binary_expression "*(long *)((long)handle + 0x20) == 0" (pointer_expression "*(long *)((long)handle + 0x20)" * (cast_expression "(long *)((long)handle + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)handle + 0x20)" ( (binary_expression "(long)handle + 0x20" (cast_expression "(long)handle" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n        info_00 = (debug_handle *)(lVar1 + 0x10);\n        kind_00 = DEBUG_OBJECT_TYPE;\n      }" { (expression_statement "info_00 = (debug_handle *)(lVar1 + 0x10);" (assignment_expression "info_00 = (debug_handle *)(lVar1 + 0x10)" identifier = (cast_expression "(debug_handle *)(lVar1 + 0x10)" ( (type_descriptor "debug_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) )))) ;) (expression_statement "kind_00 = DEBUG_OBJECT_TYPE;" (assignment_expression "kind_00 = DEBUG_OBJECT_TYPE" identifier = identifier) ;) })) }))) (expression_statement "pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val);" (assignment_expression "pdVar2 = debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val)" identifier = (call_expression "debug_add_to_namespace\n                       (info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val)" identifier (argument_list "(info_00,(debug_namespace **)name,(char *)0x2,kind_00,\n                        (debug_object_linkage)val)" ( identifier , (cast_expression "(debug_namespace **)name" ( (type_descriptor "debug_namespace **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , (cast_expression "(char *)0x2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , (cast_expression "(debug_object_linkage)val" ( (type_descriptor "debug_object_linkage" type_identifier) ) identifier) )))) ;) (if_statement "if (pdVar2 != (debug_name *)0x0) {\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }" if (parenthesized_expression "(pdVar2 != (debug_name *)0x0)" ( (binary_expression "pdVar2 != (debug_name *)0x0" identifier != (cast_expression "(debug_name *)0x0" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pdVar3 = (debug_variable *)xmalloc(0x18);\n      *(undefined4 *)&pdVar3->field_0x4 = 0;\n      pdVar3->kind = kind;\n      pdVar3->type = type;\n      pdVar3->val = val;\n      (pdVar2->u).variable = pdVar3;\n      return 1;\n    }" { (expression_statement "pdVar3 = (debug_variable *)xmalloc(0x18);" (assignment_expression "pdVar3 = (debug_variable *)xmalloc(0x18)" identifier = (cast_expression "(debug_variable *)xmalloc(0x18)" ( (type_descriptor "debug_variable *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)&pdVar3->field_0x4 = 0;" (assignment_expression "*(undefined4 *)&pdVar3->field_0x4 = 0" (pointer_expression "*(undefined4 *)&pdVar3->field_0x4" * (cast_expression "(undefined4 *)&pdVar3->field_0x4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar3->field_0x4" & (field_expression "pdVar3->field_0x4" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pdVar3->kind = kind;" (assignment_expression "pdVar3->kind = kind" (field_expression "pdVar3->kind" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar3->type = type;" (assignment_expression "pdVar3->type = type" (field_expression "pdVar3->type" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar3->val = val;" (assignment_expression "pdVar3->val = val" (field_expression "pdVar3->val" identifier -> field_identifier) = identifier) ;) (expression_statement "(pdVar2->u).variable = pdVar3;" (assignment_expression "(pdVar2->u).variable = pdVar3" (field_expression "(pdVar2->u).variable" (parenthesized_expression "(pdVar2->u)" ( (field_expression "pdVar2->u" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined8 FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)\n\n{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)\n\n{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)" identifier (parameter_list "(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }" if (parenthesized_expression "((param_2 == 0) || (param_3 == 0))" ( (binary_expression "(param_2 == 0) || (param_3 == 0)" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" if (parenthesized_expression "((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0))" ( (binary_expression "(*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)" (parenthesized_expression "(*(long *)(param_1 + 8) == 0)" ( (binary_expression "*(long *)(param_1 + 8) == 0" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)" ( (comma_expression "lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) , (binary_expression "lVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }" { (expression_statement "uVar3 = dcgettext(0,"debug_record_variable: no current file",5);" (assignment_expression "uVar3 = dcgettext(0,"debug_record_variable: no current file",5)" identifier = (call_expression "dcgettext(0,"debug_record_variable: no current file",5)" identifier (argument_list "(0,"debug_record_variable: no current file",5)" ( number_literal , (string_literal ""debug_record_variable: no current file"" " string_content ") , number_literal )))) ;) (expression_statement "fprintf(stderr,"%s\n",uVar3);" (call_expression "fprintf(stderr,"%s\n",uVar3)" identifier (argument_list "(stderr,"%s\n",uVar3)" ( identifier , (string_literal ""%s\n"" " string_content escape_sequence ") , identifier ))) ;) }) (else_clause "else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" else (compound_statement "{\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" { (if_statement "if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" if (parenthesized_expression "(param_4 - 1U < 2)" ( (binary_expression "param_4 - 1U < 2" (binary_expression "param_4 - 1U" identifier - number_literal) < number_literal) )) (compound_statement "{\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }" { (expression_statement "lVar5 = lVar1 + 0x10;" (assignment_expression "lVar5 = lVar1 + 0x10" identifier = (binary_expression "lVar1 + 0x10" identifier + number_literal)) ;) (expression_statement "cVar4 = (param_4 == 1) + '\x01';" (assignment_expression "cVar4 = (param_4 == 1) + '\x01'" identifier = (binary_expression "(param_4 == 1) + '\x01'" (parenthesized_expression "(param_4 == 1)" ( (binary_expression "param_4 == 1" identifier == number_literal) )) + (char_literal "'\x01'" ' escape_sequence '))) ;) }) (else_clause "else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" else (compound_statement "{\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" { (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "lVar5 = *(long *)(param_1 + 0x20) + 0x28;" (assignment_expression "lVar5 = *(long *)(param_1 + 0x20) + 0x28" identifier = (binary_expression "*(long *)(param_1 + 0x20) + 0x28" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x20) == 0)" ( (binary_expression "*(long *)(param_1 + 0x20) == 0" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        lVar5 = lVar1 + 0x10;\n      }" { (expression_statement "lVar5 = lVar1 + 0x10;" (assignment_expression "lVar5 = lVar1 + 0x10" identifier = (binary_expression "lVar1 + 0x10" identifier + number_literal)) ;) })) }))) (expression_statement "lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);" (assignment_expression "lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4)" identifier = (call_expression "FUN_0012b2b0(lVar5,param_2,2,cVar4)" identifier (argument_list "(lVar5,param_2,2,cVar4)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }" { (expression_statement "piVar2 = (int *)xmalloc(0x18);" (assignment_expression "piVar2 = (int *)xmalloc(0x18)" identifier = (cast_expression "(int *)xmalloc(0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "piVar2[1] = 0;" (assignment_expression "piVar2[1] = 0" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar2 = param_4;" (assignment_expression "*piVar2 = param_4" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "*(long *)(piVar2 + 2) = param_3;" (assignment_expression "*(long *)(piVar2 + 2) = param_3" (pointer_expression "*(long *)(piVar2 + 2)" * (cast_expression "(long *)(piVar2 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2 + 2)" ( (binary_expression "piVar2 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(piVar2 + 4) = param_5;" (assignment_expression "*(undefined8 *)(piVar2 + 4) = param_5" (pointer_expression "*(undefined8 *)(piVar2 + 4)" * (cast_expression "(undefined8 *)(piVar2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2 + 4)" ( (binary_expression "piVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(lVar1 + 0x20) = piVar2;" (assignment_expression "*(int **)(lVar1 + 0x20) = piVar2" (pointer_expression "*(int **)(lVar1 + 0x20)" * (cast_expression "(int **)(lVar1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) + (char_literal ' escape_sequence '))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , 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 ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return LIT ;) })) }))) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)\n\n{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_0012d410(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)" (identifier "FUN_0012d410") (parameter_list "(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")"))) (compound_statement "{\n  long lVar1;\n  int *piVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  \n  if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }\n  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (if_statement "if ((param_2 == 0) || (param_3 == 0)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((param_2 == 0) || (param_3 == 0))" (( "(") (binary_expression "(param_2 == 0) || (param_3 == 0)" (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }\n  else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0))" (( "(") (binary_expression "(*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)" (parenthesized_expression "(*(long *)(param_1 + 8) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 8) == 0" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)" (( "(") (comma_expression "lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (, ",") (binary_expression "lVar1 == 0" (identifier "lVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);\n    fprintf(stderr,"%s\n",uVar3);\n  }" ({ "{") (expression_statement "uVar3 = dcgettext(0,"debug_record_variable: no current file",5);" (assignment_expression "uVar3 = dcgettext(0,"debug_record_variable: no current file",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"debug_record_variable: no current file",5)" (identifier "dcgettext") (argument_list "(0,"debug_record_variable: no current file",5)" (( "(") (number_literal "0") (, ",") (string_literal ""debug_record_variable: no current file"" (" """) (string_content "debug_record_variable: no current file") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "fprintf(stderr,"%s\n",uVar3);" (call_expression "fprintf(stderr,"%s\n",uVar3)" (identifier "fprintf") (argument_list "(stderr,"%s\n",uVar3)" (( "(") (identifier "stderr") (, ",") (string_literal ""%s\n"" (" """) (string_content "%s") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" (else "else") (compound_statement "{\n    if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }\n    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);\n    if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }\n  }" ({ "{") (if_statement "if (param_4 - 1U < 2) {\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }\n    else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" (if "if") (parenthesized_expression "(param_4 - 1U < 2)" (( "(") (binary_expression "param_4 - 1U < 2" (binary_expression "param_4 - 1U" (identifier "param_4") (- "-") (number_literal "1U")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      lVar5 = lVar1 + 0x10;\n      cVar4 = (param_4 == 1) + '\x01';\n    }" ({ "{") (expression_statement "lVar5 = lVar1 + 0x10;" (assignment_expression "lVar5 = lVar1 + 0x10" (identifier "lVar5") (= "=") (binary_expression "lVar1 + 0x10" (identifier "lVar1") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "cVar4 = (param_4 == 1) + '\x01';" (assignment_expression "cVar4 = (param_4 == 1) + '\x01'" (identifier "cVar4") (= "=") (binary_expression "(param_4 == 1) + '\x01'" (parenthesized_expression "(param_4 == 1)" (( "(") (binary_expression "param_4 == 1" (identifier "param_4") (== "==") (number_literal "1")) () ")")) (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (} "}")) (else_clause "else {\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" (else "else") (compound_statement "{\n      cVar4 = '\0';\n      lVar5 = *(long *)(param_1 + 0x20) + 0x28;\n      if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }\n    }" ({ "{") (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" (identifier "cVar4") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "lVar5 = *(long *)(param_1 + 0x20) + 0x28;" (assignment_expression "lVar5 = *(long *)(param_1 + 0x20) + 0x28" (identifier "lVar5") (= "=") (binary_expression "*(long *)(param_1 + 0x20) + 0x28" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "0x28"))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x20) == 0) {\n        lVar5 = lVar1 + 0x10;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x20) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) == 0" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        lVar5 = lVar1 + 0x10;\n      }" ({ "{") (expression_statement "lVar5 = lVar1 + 0x10;" (assignment_expression "lVar5 = lVar1 + 0x10" (identifier "lVar5") (= "=") (binary_expression "lVar1 + 0x10" (identifier "lVar1") (+ "+") (number_literal "0x10"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);" (assignment_expression "lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4)" (identifier "lVar1") (= "=") (call_expression "FUN_0012b2b0(lVar5,param_2,2,cVar4)" (identifier "FUN_0012b2b0") (argument_list "(lVar5,param_2,2,cVar4)" (( "(") (identifier "lVar5") (, ",") (identifier "param_2") (, ",") (number_literal "2") (, ",") (identifier "cVar4") () ")")))) (; ";")) (if_statement "if (lVar1 != 0) {\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }" (if "if") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar2 = (int *)xmalloc(0x18);\n      piVar2[1] = 0;\n      *piVar2 = param_4;\n      *(long *)(piVar2 + 2) = param_3;\n      *(undefined8 *)(piVar2 + 4) = param_5;\n      *(int **)(lVar1 + 0x20) = piVar2;\n      return 1;\n    }" ({ "{") (expression_statement "piVar2 = (int *)xmalloc(0x18);" (assignment_expression "piVar2 = (int *)xmalloc(0x18)" (identifier "piVar2") (= "=") (cast_expression "(int *)xmalloc(0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x18)" (identifier "xmalloc") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "piVar2[1] = 0;" (assignment_expression "piVar2[1] = 0" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar2 = param_4;" (assignment_expression "*piVar2 = param_4" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(long *)(piVar2 + 2) = param_3;" (assignment_expression "*(long *)(piVar2 + 2) = param_3" (pointer_expression "*(long *)(piVar2 + 2)" (* "*") (cast_expression "(long *)(piVar2 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar2 + 2)" (( "(") (binary_expression "piVar2 + 2" (identifier "piVar2") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined8 *)(piVar2 + 4) = param_5;" (assignment_expression "*(undefined8 *)(piVar2 + 4) = param_5" (pointer_expression "*(undefined8 *)(piVar2 + 4)" (* "*") (cast_expression "(undefined8 *)(piVar2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar2 + 4)" (( "(") (binary_expression "piVar2 + 4" (identifier "piVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(int **)(lVar1 + 0x20) = piVar2;" (assignment_expression "*(int **)(lVar1 + 0x20) = piVar2" (pointer_expression "*(int **)(lVar1 + 0x20)" (* "*") (cast_expression "(int **)(lVar1 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x20)" (( "(") (binary_expression "lVar1 + 0x20" (identifier "lVar1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "piVar2")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1
function_1
          (void *handle,char *var_1,type_2 var_2,type_3 var_6,type_4 val)

{
  long var_3;
  type_5 *var_10;
  type_6 *pdVar3;
  type_7 uVar4;
  type_8 kind_00;
  type_9 *info;
  type_9 *info_00;
  
  if ((var_1 == (char *)0x0) || (var_2 == (type_2)0x0)) {
    return 0;
  }
  if ((*(long *)((long)handle + 8) == 0) || (var_3 = *(long *)((long)handle + 0x10), var_3 == 0)) {
    uVar4 = var_4(0,"debug_record_variable: no current file",5);
    var_5(stderr,"%s\n",uVar4);
  }
  else {
    if (var_6 - var_7 < 2) {
      info_00 = (type_9 *)(var_3 + 0x10);
      kind_00 = (var_6 == var_7) + var_8;
    }
    else {
      info_00 = (type_9 *)(*(long *)((long)handle + 0x20) + 0x28);
      kind_00 = DEBUG_OBJECT_TYPE;
      if (*(long *)((long)handle + 0x20) == 0) {
        info_00 = (type_9 *)(var_3 + 0x10);
        kind_00 = DEBUG_OBJECT_TYPE;
      }
    }
    var_10 = var_9
                       (info_00,(type_10 **)var_1,(char *)0x2,kind_00,
                        (type_11)val);
    if (var_10 != (type_5 *)0x0) {
      pdVar3 = (type_6 *)var_11(0x18);
      *(type_12 *)&pdVar3->field_0x4 = 0;
      pdVar3->var_6 = var_6;
      pdVar3->var_2 = var_2;
      pdVar3->val = val;
      (var_10->u).variable = pdVar3;
      return 1;
    }
  }
  return 0;
}


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

undefined8 MASKED(long param_1,long param_2,long param_3,int param_4,undefined8 param_5)

{
  long lVar1;
  int *piVar2;
  undefined8 uVar3;
  char cVar4;
  long lVar5;
  
  if ((param_2 == 0) || (param_3 == 0)) {
    return 0;
  }
  if ((*(long *)(param_1 + 8) == 0) || (lVar1 = *(long *)(param_1 + 0x10), lVar1 == 0)) {
    uVar3 = dcgettext(0,"debug_record_variable: no current file",5);
    fprintf(stderr,"%s\n",uVar3);
  }
  else {
    if (param_4 - 1U < 2) {
      lVar5 = lVar1 + 0x10;
      cVar4 = (param_4 == 1) + '\x01';
    }
    else {
      cVar4 = '\0';
      lVar5 = *(long *)(param_1 + 0x20) + 0x28;
      if (*(long *)(param_1 + 0x20) == 0) {
        lVar5 = lVar1 + 0x10;
      }
    }
    lVar1 = FUN_0012b2b0(lVar5,param_2,2,cVar4);
    if (lVar1 != 0) {
      piVar2 = (int *)xmalloc(0x18);
      piVar2[1] = 0;
      *piVar2 = param_4;
      *(long *)(piVar2 + 2) = param_3;
      *(undefined8 *)(piVar2 + 4) = param_5;
      *(int **)(lVar1 + 0x20) = piVar2;
      return 1;
    }
  }
  return 0;
}

