
void quick_reloc(bfd *abfd,bfd_size_type address,int which_howto,int symidx)

{
  arelent *paVar1;
  asymbol **ppaVar2;
  reloc_howto_type *prVar3;
  long lVar4;
  
  lVar4 = (long)relcount;
  if (relsize + -1 <= relcount) {
    relsize = relsize + 10;
    if (reltab == (arelent *)0x0) {
      reltab = (arelent *)xmalloc((long)relsize << 5);
      lVar4 = (long)relcount;
    }
    else {
      reltab = (arelent *)xrealloc(reltab);
      lVar4 = (long)relcount;
    }
  }
  paVar1 = reltab;
  reltab[lVar4].address = address;
  paVar1[lVar4].addend = 0;
  prVar3 = (reloc_howto_type *)bfd_reloc_type_lookup(abfd,which_howto);
  ppaVar2 = symtab;
  paVar1[lVar4].howto = prVar3;
  reltab[relcount].sym_ptr_ptr = ppaVar2 + symidx;
  relcount = relcount + 1;
  return;
}



void FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)

{
  undefined8 uVar1;
  long lVar2;
  long lVar3;
  
  lVar2 = (long)DAT_002b5b18;
  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {
    DAT_002b5b14 = DAT_002b5b14 + 10;
    if (DAT_002b5b20 == 0) {
      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);
      lVar2 = (long)DAT_002b5b18;
    }
    else {
      DAT_002b5b20 = xrealloc(DAT_002b5b20);
      lVar2 = (long)DAT_002b5b18;
    }
  }
  lVar3 = lVar2 * 0x20 + DAT_002b5b20;
  *(undefined8 *)(lVar3 + 8) = param_2;
  *(undefined8 *)(lVar3 + 0x10) = 0;
  uVar1 = bfd_reloc_type_lookup(param_1,param_3);
  lVar2 = DAT_002b5b40;
  *(undefined8 *)(lVar3 + 0x18) = uVar1;
  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;
  DAT_002b5b18 = DAT_002b5b18 + 1;
  return;
}


PUSH R14
MOV R14D,EDX
MOV RAX,qword ptr [0x002b5b20]
PUSH R13
MOV R13,RSI
PUSH R12
MOV R12,RDI
MOV EDI,dword ptr [0x002b5b14]
PUSH RBP
MOVSXD RBP,ECX
PUSH RBX
MOVSXD RBX,dword ptr [0x002b5b18]
LEA EDX,[RDI + -0x1]
CMP EDX,EBX
JG 0x0014ccfa
ADD EDI,0xa
MOVSXD RSI,EDI
MOV dword ptr [0x002b5b14],EDI
SHL RSI,0x5
TEST RAX,RAX
JZ 0x0014cd58
MOV RDI,RAX
CALL 0x0010d400
MOVSXD RBX,dword ptr [0x002b5b18]
MOV qword ptr [0x002b5b20],RAX
SHL RBX,0x5
MOV ESI,R14D
MOV RDI,R12
ADD RBX,RAX
MOV qword ptr [RBX + 0x8],R13
MOV qword ptr [RBX + 0x10],0x0
CALL 0x0010d380
MOV RCX,qword ptr [0x002b5b40]
MOV qword ptr [RBX + 0x18],RAX
MOVSXD RAX,dword ptr [0x002b5b18]
LEA RCX,[RCX + RBP*0x8]
MOV RDX,RAX
SHL RAX,0x5
ADD RAX,qword ptr [0x002b5b20]
ADD EDX,0x1
MOV qword ptr [RAX],RCX
POP RBX
MOV dword ptr [0x002b5b18],EDX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RDI,RSI
CALL 0x0010dda0
MOVSXD RBX,dword ptr [0x002b5b18]
MOV qword ptr [0x002b5b20],RAX
JMP 0x0014ccfa
(translation_unit "void FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}\n\n" (function_definition "void FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}" primitive_type (function_declarator "FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" identifier = (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }" if (parenthesized_expression "(DAT_002b5b14 + -1 <= DAT_002b5b18)" ( (binary_expression "DAT_002b5b14 + -1 <= DAT_002b5b18" (binary_expression "DAT_002b5b14 + -1" identifier + number_literal) <= identifier) )) (compound_statement "{\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }" { (expression_statement "DAT_002b5b14 = DAT_002b5b14 + 10;" (assignment_expression "DAT_002b5b14 = DAT_002b5b14 + 10" identifier = (binary_expression "DAT_002b5b14 + 10" identifier + number_literal)) ;) (if_statement "if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" if (parenthesized_expression "(DAT_002b5b20 == 0)" ( (binary_expression "DAT_002b5b20 == 0" identifier == number_literal) )) (compound_statement "{\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }" { (expression_statement "DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);" (assignment_expression "DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5)" identifier = (call_expression "xmalloc((long)DAT_002b5b14 << 5)" identifier (argument_list "((long)DAT_002b5b14 << 5)" ( (binary_expression "(long)DAT_002b5b14 << 5" (cast_expression "(long)DAT_002b5b14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) )))) ;) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" identifier = (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }) (else_clause "else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" else (compound_statement "{\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" { (expression_statement "DAT_002b5b20 = xrealloc(DAT_002b5b20);" (assignment_expression "DAT_002b5b20 = xrealloc(DAT_002b5b20)" identifier = (call_expression "xrealloc(DAT_002b5b20)" identifier (argument_list "(DAT_002b5b20)" ( identifier )))) ;) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" identifier = (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }))) })) (expression_statement "lVar3 = lVar2 * 0x20 + DAT_002b5b20;" (assignment_expression "lVar3 = lVar2 * 0x20 + DAT_002b5b20" identifier = (binary_expression "lVar2 * 0x20 + DAT_002b5b20" (binary_expression "lVar2 * 0x20" identifier * number_literal) + identifier)) ;) (expression_statement "*(undefined8 *)(lVar3 + 8) = param_2;" (assignment_expression "*(undefined8 *)(lVar3 + 8) = param_2" (pointer_expression "*(undefined8 *)(lVar3 + 8)" * (cast_expression "(undefined8 *)(lVar3 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar3 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar3 + 0x10)" * (cast_expression "(undefined8 *)(lVar3 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = bfd_reloc_type_lookup(param_1,param_3);" (assignment_expression "uVar1 = bfd_reloc_type_lookup(param_1,param_3)" identifier = (call_expression "bfd_reloc_type_lookup(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) (expression_statement "lVar2 = DAT_002b5b40;" (assignment_expression "lVar2 = DAT_002b5b40" identifier = identifier) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x18) = uVar1;" (assignment_expression "*(undefined8 *)(lVar3 + 0x18) = uVar1" (pointer_expression "*(undefined8 *)(lVar3 + 0x18)" * (cast_expression "(undefined8 *)(lVar3 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;" (assignment_expression "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8" (pointer_expression "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" * (cast_expression "(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" ( (binary_expression "(long)DAT_002b5b18 * 0x20 + DAT_002b5b20" (binary_expression "(long)DAT_002b5b18 * 0x20" (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + identifier) )))) = (binary_expression "lVar2 + (long)param_4 * 8" identifier + (binary_expression "(long)param_4 * 8" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (expression_statement "DAT_002b5b18 = DAT_002b5b18 + 1;" (assignment_expression "DAT_002b5b18 = DAT_002b5b18 + 1" identifier = (binary_expression "DAT_002b5b18 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void quick_reloc(bfd *abfd,bfd_size_type address,int which_howto,int symidx)\n\n{\n  arelent *paVar1;\n  asymbol **ppaVar2;\n  reloc_howto_type *prVar3;\n  long lVar4;\n  \n  lVar4 = (long)relcount;\n  if (relsize + -1 <= relcount) {\n    relsize = relsize + 10;\n    if (reltab == (arelent *)0x0) {\n      reltab = (arelent *)xmalloc((long)relsize << 5);\n      lVar4 = (long)relcount;\n    }\n    else {\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }\n  }\n  paVar1 = reltab;\n  reltab[lVar4].address = address;\n  paVar1[lVar4].addend = 0;\n  prVar3 = (reloc_howto_type *)bfd_reloc_type_lookup(abfd,which_howto);\n  ppaVar2 = symtab;\n  paVar1[lVar4].howto = prVar3;\n  reltab[relcount].sym_ptr_ptr = ppaVar2 + symidx;\n  relcount = relcount + 1;\n  return;\n}\n\n" (function_definition "void quick_reloc(bfd *abfd,bfd_size_type address,int which_howto,int symidx)\n\n{\n  arelent *paVar1;\n  asymbol **ppaVar2;\n  reloc_howto_type *prVar3;\n  long lVar4;\n  \n  lVar4 = (long)relcount;\n  if (relsize + -1 <= relcount) {\n    relsize = relsize + 10;\n    if (reltab == (arelent *)0x0) {\n      reltab = (arelent *)xmalloc((long)relsize << 5);\n      lVar4 = (long)relcount;\n    }\n    else {\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }\n  }\n  paVar1 = reltab;\n  reltab[lVar4].address = address;\n  paVar1[lVar4].addend = 0;\n  prVar3 = (reloc_howto_type *)bfd_reloc_type_lookup(abfd,which_howto);\n  ppaVar2 = symtab;\n  paVar1[lVar4].howto = prVar3;\n  reltab[relcount].sym_ptr_ptr = ppaVar2 + symidx;\n  relcount = relcount + 1;\n  return;\n}" primitive_type (function_declarator "quick_reloc(bfd *abfd,bfd_size_type address,int which_howto,int symidx)" identifier (parameter_list "(bfd *abfd,bfd_size_type address,int which_howto,int symidx)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "bfd_size_type address" type_identifier identifier) , (parameter_declaration "int which_howto" primitive_type identifier) , (parameter_declaration "int symidx" primitive_type identifier) ))) (compound_statement "{\n  arelent *paVar1;\n  asymbol **ppaVar2;\n  reloc_howto_type *prVar3;\n  long lVar4;\n  \n  lVar4 = (long)relcount;\n  if (relsize + -1 <= relcount) {\n    relsize = relsize + 10;\n    if (reltab == (arelent *)0x0) {\n      reltab = (arelent *)xmalloc((long)relsize << 5);\n      lVar4 = (long)relcount;\n    }\n    else {\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }\n  }\n  paVar1 = reltab;\n  reltab[lVar4].address = address;\n  paVar1[lVar4].addend = 0;\n  prVar3 = (reloc_howto_type *)bfd_reloc_type_lookup(abfd,which_howto);\n  ppaVar2 = symtab;\n  paVar1[lVar4].howto = prVar3;\n  reltab[relcount].sym_ptr_ptr = ppaVar2 + symidx;\n  relcount = relcount + 1;\n  return;\n}" { (declaration "arelent *paVar1;" type_identifier (pointer_declarator "*paVar1" * identifier) ;) (declaration "asymbol **ppaVar2;" type_identifier (pointer_declarator "**ppaVar2" * (pointer_declarator "*ppaVar2" * identifier)) ;) (declaration "reloc_howto_type *prVar3;" type_identifier (pointer_declarator "*prVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar4 = (long)relcount;" (assignment_expression "lVar4 = (long)relcount" identifier = (cast_expression "(long)relcount" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if (relsize + -1 <= relcount) {\n    relsize = relsize + 10;\n    if (reltab == (arelent *)0x0) {\n      reltab = (arelent *)xmalloc((long)relsize << 5);\n      lVar4 = (long)relcount;\n    }\n    else {\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }\n  }" if (parenthesized_expression "(relsize + -1 <= relcount)" ( (binary_expression "relsize + -1 <= relcount" (binary_expression "relsize + -1" identifier + number_literal) <= identifier) )) (compound_statement "{\n    relsize = relsize + 10;\n    if (reltab == (arelent *)0x0) {\n      reltab = (arelent *)xmalloc((long)relsize << 5);\n      lVar4 = (long)relcount;\n    }\n    else {\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }\n  }" { (expression_statement "relsize = relsize + 10;" (assignment_expression "relsize = relsize + 10" identifier = (binary_expression "relsize + 10" identifier + number_literal)) ;) (if_statement "if (reltab == (arelent *)0x0) {\n      reltab = (arelent *)xmalloc((long)relsize << 5);\n      lVar4 = (long)relcount;\n    }\n    else {\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }" if (parenthesized_expression "(reltab == (arelent *)0x0)" ( (binary_expression "reltab == (arelent *)0x0" identifier == (cast_expression "(arelent *)0x0" ( (type_descriptor "arelent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      reltab = (arelent *)xmalloc((long)relsize << 5);\n      lVar4 = (long)relcount;\n    }" { (expression_statement "reltab = (arelent *)xmalloc((long)relsize << 5);" (assignment_expression "reltab = (arelent *)xmalloc((long)relsize << 5)" identifier = (cast_expression "(arelent *)xmalloc((long)relsize << 5)" ( (type_descriptor "arelent *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)relsize << 5)" identifier (argument_list "((long)relsize << 5)" ( (binary_expression "(long)relsize << 5" (cast_expression "(long)relsize" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "lVar4 = (long)relcount;" (assignment_expression "lVar4 = (long)relcount" identifier = (cast_expression "(long)relcount" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }) (else_clause "else {\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }" else (compound_statement "{\n      reltab = (arelent *)xrealloc(reltab);\n      lVar4 = (long)relcount;\n    }" { (expression_statement "reltab = (arelent *)xrealloc(reltab);" (assignment_expression "reltab = (arelent *)xrealloc(reltab)" identifier = (cast_expression "(arelent *)xrealloc(reltab)" ( (type_descriptor "arelent *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(reltab)" identifier (argument_list "(reltab)" ( identifier ))))) ;) (expression_statement "lVar4 = (long)relcount;" (assignment_expression "lVar4 = (long)relcount" identifier = (cast_expression "(long)relcount" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }))) })) (expression_statement "paVar1 = reltab;" (assignment_expression "paVar1 = reltab" identifier = identifier) ;) (expression_statement "reltab[lVar4].address = address;" (assignment_expression "reltab[lVar4].address = address" (field_expression "reltab[lVar4].address" (subscript_expression "reltab[lVar4]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "paVar1[lVar4].addend = 0;" (assignment_expression "paVar1[lVar4].addend = 0" (field_expression "paVar1[lVar4].addend" (subscript_expression "paVar1[lVar4]" identifier [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "prVar3 = (reloc_howto_type *)bfd_reloc_type_lookup(abfd,which_howto);" (assignment_expression "prVar3 = (reloc_howto_type *)bfd_reloc_type_lookup(abfd,which_howto)" identifier = (cast_expression "(reloc_howto_type *)bfd_reloc_type_lookup(abfd,which_howto)" ( (type_descriptor "reloc_howto_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_reloc_type_lookup(abfd,which_howto)" identifier (argument_list "(abfd,which_howto)" ( identifier , identifier ))))) ;) (expression_statement "ppaVar2 = symtab;" (assignment_expression "ppaVar2 = symtab" identifier = identifier) ;) (expression_statement "paVar1[lVar4].howto = prVar3;" (assignment_expression "paVar1[lVar4].howto = prVar3" (field_expression "paVar1[lVar4].howto" (subscript_expression "paVar1[lVar4]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "reltab[relcount].sym_ptr_ptr = ppaVar2 + symidx;" (assignment_expression "reltab[relcount].sym_ptr_ptr = ppaVar2 + symidx" (field_expression "reltab[relcount].sym_ptr_ptr" (subscript_expression "reltab[relcount]" identifier [ identifier ]) . field_identifier) = (binary_expression "ppaVar2 + symidx" identifier + identifier)) ;) (expression_statement "relcount = relcount + 1;" (assignment_expression "relcount = relcount + 1" identifier = (binary_expression "relcount + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}\n\n" (function_definition "void FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}" primitive_type (function_declarator "FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" identifier = (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }" if (parenthesized_expression "(DAT_002b5b14 + -1 <= DAT_002b5b18)" ( (binary_expression "DAT_002b5b14 + -1 <= DAT_002b5b18" (binary_expression "DAT_002b5b14 + -1" identifier + number_literal) <= identifier) )) (compound_statement "{\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }" { (expression_statement "DAT_002b5b14 = DAT_002b5b14 + 10;" (assignment_expression "DAT_002b5b14 = DAT_002b5b14 + 10" identifier = (binary_expression "DAT_002b5b14 + 10" identifier + number_literal)) ;) (if_statement "if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" if (parenthesized_expression "(DAT_002b5b20 == 0)" ( (binary_expression "DAT_002b5b20 == 0" identifier == number_literal) )) (compound_statement "{\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }" { (expression_statement "DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);" (assignment_expression "DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5)" identifier = (call_expression "xmalloc((long)DAT_002b5b14 << 5)" identifier (argument_list "((long)DAT_002b5b14 << 5)" ( (binary_expression "(long)DAT_002b5b14 << 5" (cast_expression "(long)DAT_002b5b14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) )))) ;) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" identifier = (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }) (else_clause "else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" else (compound_statement "{\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" { (expression_statement "DAT_002b5b20 = xrealloc(DAT_002b5b20);" (assignment_expression "DAT_002b5b20 = xrealloc(DAT_002b5b20)" identifier = (call_expression "xrealloc(DAT_002b5b20)" identifier (argument_list "(DAT_002b5b20)" ( identifier )))) ;) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" identifier = (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }))) })) (expression_statement "lVar3 = lVar2 * 0x20 + DAT_002b5b20;" (assignment_expression "lVar3 = lVar2 * 0x20 + DAT_002b5b20" identifier = (binary_expression "lVar2 * 0x20 + DAT_002b5b20" (binary_expression "lVar2 * 0x20" identifier * number_literal) + identifier)) ;) (expression_statement "*(undefined8 *)(lVar3 + 8) = param_2;" (assignment_expression "*(undefined8 *)(lVar3 + 8) = param_2" (pointer_expression "*(undefined8 *)(lVar3 + 8)" * (cast_expression "(undefined8 *)(lVar3 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar3 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar3 + 0x10)" * (cast_expression "(undefined8 *)(lVar3 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = bfd_reloc_type_lookup(param_1,param_3);" (assignment_expression "uVar1 = bfd_reloc_type_lookup(param_1,param_3)" identifier = (call_expression "bfd_reloc_type_lookup(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) (expression_statement "lVar2 = DAT_002b5b40;" (assignment_expression "lVar2 = DAT_002b5b40" identifier = identifier) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x18) = uVar1;" (assignment_expression "*(undefined8 *)(lVar3 + 0x18) = uVar1" (pointer_expression "*(undefined8 *)(lVar3 + 0x18)" * (cast_expression "(undefined8 *)(lVar3 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;" (assignment_expression "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8" (pointer_expression "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" * (cast_expression "(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" ( (binary_expression "(long)DAT_002b5b18 * 0x20 + DAT_002b5b20" (binary_expression "(long)DAT_002b5b18 * 0x20" (cast_expression "(long)DAT_002b5b18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + identifier) )))) = (binary_expression "lVar2 + (long)param_4 * 8" identifier + (binary_expression "(long)param_4 * 8" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (expression_statement "DAT_002b5b18 = DAT_002b5b18 + 1;" (assignment_expression "DAT_002b5b18 = DAT_002b5b18 + 1" identifier = (binary_expression "DAT_002b5b18 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT) + IDENT) )))) = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })))
(function_definition "void FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0014cca0(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)" (identifier "FUN_0014cca0") (parameter_list "(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (long)DAT_002b5b18;\n  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }\n  lVar3 = lVar2 * 0x20 + DAT_002b5b20;\n  *(undefined8 *)(lVar3 + 8) = param_2;\n  *(undefined8 *)(lVar3 + 0x10) = 0;\n  uVar1 = bfd_reloc_type_lookup(param_1,param_3);\n  lVar2 = DAT_002b5b40;\n  *(undefined8 *)(lVar3 + 0x18) = uVar1;\n  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;\n  DAT_002b5b18 = DAT_002b5b18 + 1;\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" (identifier "lVar2") (= "=") (cast_expression "(long)DAT_002b5b18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b18"))) (; ";")) (if_statement "if (DAT_002b5b14 + -1 <= DAT_002b5b18) {\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }" (if "if") (parenthesized_expression "(DAT_002b5b14 + -1 <= DAT_002b5b18)" (( "(") (binary_expression "DAT_002b5b14 + -1 <= DAT_002b5b18" (binary_expression "DAT_002b5b14 + -1" (identifier "DAT_002b5b14") (+ "+") (number_literal "-1")) (<= "<=") (identifier "DAT_002b5b18")) () ")")) (compound_statement "{\n    DAT_002b5b14 = DAT_002b5b14 + 10;\n    if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }\n  }" ({ "{") (expression_statement "DAT_002b5b14 = DAT_002b5b14 + 10;" (assignment_expression "DAT_002b5b14 = DAT_002b5b14 + 10" (identifier "DAT_002b5b14") (= "=") (binary_expression "DAT_002b5b14 + 10" (identifier "DAT_002b5b14") (+ "+") (number_literal "10"))) (; ";")) (if_statement "if (DAT_002b5b20 == 0) {\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }\n    else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" (if "if") (parenthesized_expression "(DAT_002b5b20 == 0)" (( "(") (binary_expression "DAT_002b5b20 == 0" (identifier "DAT_002b5b20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);\n      lVar2 = (long)DAT_002b5b18;\n    }" ({ "{") (expression_statement "DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);" (assignment_expression "DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5)" (identifier "DAT_002b5b20") (= "=") (call_expression "xmalloc((long)DAT_002b5b14 << 5)" (identifier "xmalloc") (argument_list "((long)DAT_002b5b14 << 5)" (( "(") (binary_expression "(long)DAT_002b5b14 << 5" (cast_expression "(long)DAT_002b5b14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b14")) (<< "<<") (number_literal "5")) () ")")))) (; ";")) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" (identifier "lVar2") (= "=") (cast_expression "(long)DAT_002b5b18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b18"))) (; ";")) (} "}")) (else_clause "else {\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" (else "else") (compound_statement "{\n      DAT_002b5b20 = xrealloc(DAT_002b5b20);\n      lVar2 = (long)DAT_002b5b18;\n    }" ({ "{") (expression_statement "DAT_002b5b20 = xrealloc(DAT_002b5b20);" (assignment_expression "DAT_002b5b20 = xrealloc(DAT_002b5b20)" (identifier "DAT_002b5b20") (= "=") (call_expression "xrealloc(DAT_002b5b20)" (identifier "xrealloc") (argument_list "(DAT_002b5b20)" (( "(") (identifier "DAT_002b5b20") () ")")))) (; ";")) (expression_statement "lVar2 = (long)DAT_002b5b18;" (assignment_expression "lVar2 = (long)DAT_002b5b18" (identifier "lVar2") (= "=") (cast_expression "(long)DAT_002b5b18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b18"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "lVar3 = lVar2 * 0x20 + DAT_002b5b20;" (assignment_expression "lVar3 = lVar2 * 0x20 + DAT_002b5b20" (identifier "lVar3") (= "=") (binary_expression "lVar2 * 0x20 + DAT_002b5b20" (binary_expression "lVar2 * 0x20" (identifier "lVar2") (* "*") (number_literal "0x20")) (+ "+") (identifier "DAT_002b5b20"))) (; ";")) (expression_statement "*(undefined8 *)(lVar3 + 8) = param_2;" (assignment_expression "*(undefined8 *)(lVar3 + 8) = param_2" (pointer_expression "*(undefined8 *)(lVar3 + 8)" (* "*") (cast_expression "(undefined8 *)(lVar3 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined8 *)(lVar3 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(lVar3 + 0x10) = 0" (pointer_expression "*(undefined8 *)(lVar3 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar3 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x10)" (( "(") (binary_expression "lVar3 + 0x10" (identifier "lVar3") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = bfd_reloc_type_lookup(param_1,param_3);" (assignment_expression "uVar1 = bfd_reloc_type_lookup(param_1,param_3)" (identifier "uVar1") (= "=") (call_expression "bfd_reloc_type_lookup(param_1,param_3)" (identifier "bfd_reloc_type_lookup") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "lVar2 = DAT_002b5b40;" (assignment_expression "lVar2 = DAT_002b5b40" (identifier "lVar2") (= "=") (identifier "DAT_002b5b40")) (; ";")) (expression_statement "*(undefined8 *)(lVar3 + 0x18) = uVar1;" (assignment_expression "*(undefined8 *)(lVar3 + 0x18) = uVar1" (pointer_expression "*(undefined8 *)(lVar3 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar3 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;" (assignment_expression "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8" (pointer_expression "*(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" (* "*") (cast_expression "(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)DAT_002b5b18 * 0x20 + DAT_002b5b20)" (( "(") (binary_expression "(long)DAT_002b5b18 * 0x20 + DAT_002b5b20" (binary_expression "(long)DAT_002b5b18 * 0x20" (cast_expression "(long)DAT_002b5b18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b18")) (* "*") (number_literal "0x20")) (+ "+") (identifier "DAT_002b5b20")) () ")")))) (= "=") (binary_expression "lVar2 + (long)param_4 * 8" (identifier "lVar2") (+ "+") (binary_expression "(long)param_4 * 8" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "DAT_002b5b18 = DAT_002b5b18 + 1;" (assignment_expression "DAT_002b5b18 = DAT_002b5b18 + 1" (identifier "DAT_002b5b18") (= "=") (binary_expression "DAT_002b5b18 + 1" (identifier "DAT_002b5b18") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *abfd,type_2 address,int which_howto,int var_8)

{
  type_3 *paVar1;
  type_4 **var_7;
  type_5 *prVar3;
  long lVar4;
  
  lVar4 = (long)var_2;
  if (var_1 + -1 <= var_2) {
    var_1 = var_1 + 10;
    if (var_3 == (type_3 *)0x0) {
      var_3 = (type_3 *)var_4((long)var_1 << 5);
      lVar4 = (long)var_2;
    }
    else {
      var_3 = (type_3 *)var_5(var_3);
      lVar4 = (long)var_2;
    }
  }
  paVar1 = var_3;
  var_3[lVar4].address = address;
  paVar1[lVar4].addend = 0;
  prVar3 = (type_5 *)var_6(abfd,which_howto);
  var_7 = symtab;
  paVar1[lVar4].howto = prVar3;
  var_3[var_2].sym_ptr_ptr = var_7 + var_8;
  var_2 = var_2 + 1;
  return;
}


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

void MASKED(undefined8 param_1,undefined8 param_2,undefined4 param_3,int param_4)

{
  undefined8 uVar1;
  long lVar2;
  long lVar3;
  
  lVar2 = (long)DAT_002b5b18;
  if (DAT_002b5b14 + -1 <= DAT_002b5b18) {
    DAT_002b5b14 = DAT_002b5b14 + 10;
    if (DAT_002b5b20 == 0) {
      DAT_002b5b20 = xmalloc((long)DAT_002b5b14 << 5);
      lVar2 = (long)DAT_002b5b18;
    }
    else {
      DAT_002b5b20 = xrealloc(DAT_002b5b20);
      lVar2 = (long)DAT_002b5b18;
    }
  }
  lVar3 = lVar2 * 0x20 + DAT_002b5b20;
  *(undefined8 *)(lVar3 + 8) = param_2;
  *(undefined8 *)(lVar3 + 0x10) = 0;
  uVar1 = bfd_reloc_type_lookup(param_1,param_3);
  lVar2 = DAT_002b5b40;
  *(undefined8 *)(lVar3 + 0x18) = uVar1;
  *(long *)((long)DAT_002b5b18 * 0x20 + DAT_002b5b20) = lVar2 + (long)param_4 * 8;
  DAT_002b5b18 = DAT_002b5b18 + 1;
  return;
}

