
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bfd * __regparm3 make_tail(bfd *parent)

{
  char *pcVar1;
  bfd *abfd;
  asection *paVar2;
  asection *paVar3;
  asection *sec;
  uchar *puVar4;
  uchar *puVar5;
  size_t sVar6;
  uchar *__dest;
  uint uVar7;
  int iVar8;
  uint uVar9;
  
  pcVar1 = (char *)xmalloc(0x14);
  sprintf(pcVar1,"d%06d.o",tmp_seq);
  tmp_seq = tmp_seq + 1;
  abfd = (bfd *)bfd_create(pcVar1,parent);
  bfd_find_target(pe_details->object_target,abfd);
  bfd_make_writable(abfd);
  bfd_set_format(abfd,1);
  (*abfd->xvec->_bfd_set_arch_mach)(abfd,pe_details->bfd_arch,0);
  symptr = 0;
  iVar8 = 0x14;
  symtab = (asymbol **)xmalloc();
  paVar2 = quick_section(abfd,".idata$4",0x100,iVar8);
  paVar3 = quick_section(abfd,".idata$5",0x100,iVar8);
  sec = quick_section(abfd,".idata$7",0x100,iVar8);
  pcVar1 = "";
  if (pe_details->underscored != 0) {
    pcVar1 = "_";
  }
  quick_symbol(abfd,pcVar1,dll_symname,"_iname",sec,2,0);
  bfd_set_section_size(abfd,paVar2,4,0);
  puVar4 = (uchar *)xmalloc(4);
  paVar2->contents = puVar4;
  puVar4[0] = '\0';
  puVar4[1] = '\0';
  puVar4[2] = '\0';
  puVar4[3] = '\0';
  bfd_set_section_size(abfd,paVar3,4,0);
  puVar5 = (uchar *)xmalloc(4);
  paVar3->contents = puVar5;
  puVar5[0] = '\0';
  puVar5[1] = '\0';
  puVar5[2] = '\0';
  puVar5[3] = '\0';
  sVar6 = strlen(dll_filename);
  uVar9 = sVar6 + 1;
  uVar7 = uVar9;
  if ((uVar9 & 1) != 0) {
    uVar7 = sVar6 + 2;
    sVar6 = uVar9;
  }
  iVar8 = (int)uVar7 >> 0x1f;
  uVar9 = uVar7;
  bfd_set_section_size(abfd,sec,uVar7,iVar8,uVar7,iVar8);
  __dest = (uchar *)xmalloc(uVar7);
  sec->contents = __dest;
  strcpy((char *)__dest,dll_filename);
  __dest[sVar6] = '\0';
  bfd_set_symtab(abfd,symtab,symptr);
  bfd_set_section_contents(abfd,paVar2,puVar4,0,0,4,0);
  bfd_set_section_contents(abfd,paVar3,puVar5,0,0,4,0);
  bfd_set_section_contents(abfd,sec,__dest,0,0,uVar9,iVar8);
  bfd_make_readable(abfd);
  return abfd;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 FUN_000637c0(undefined4 param_1)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  size_t sVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  
  pcVar1 = (char *)xmalloc(0x14);
  sprintf(pcVar1,"d%06d.o",DAT_001d1240);
  DAT_001d1240 = DAT_001d1240 + 1;
  iVar2 = bfd_create(pcVar1,param_1);
  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);
  bfd_make_writable(iVar2);
  bfd_set_format(iVar2,1);
  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);
  DAT_001d1244 = 0;
  DAT_001d1248 = xmalloc(0x14);
  iVar3 = FUN_00062b90();
  iVar4 = FUN_00062b90();
  iVar5 = FUN_00062b90();
  FUN_000617f0("_iname",iVar5,2,0);
  bfd_set_section_size(iVar2,iVar3,4,0);
  puVar6 = (undefined4 *)xmalloc(4);
  *(undefined4 **)(iVar3 + 0x84) = puVar6;
  *puVar6 = 0;
  bfd_set_section_size(iVar2,iVar4,4,0);
  puVar7 = (undefined4 *)xmalloc(4);
  *(undefined4 **)(iVar4 + 0x84) = puVar7;
  *puVar7 = 0;
  sVar8 = strlen(DAT_001d123c);
  uVar11 = sVar8 + 1;
  uVar10 = uVar11;
  if ((uVar11 & 1) != 0) {
    uVar10 = sVar8 + 2;
    sVar8 = uVar11;
  }
  iVar9 = (int)uVar10 >> 0x1f;
  uVar11 = uVar10;
  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);
  pcVar1 = (char *)xmalloc(uVar10);
  *(char **)(iVar5 + 0x84) = pcVar1;
  strcpy(pcVar1,DAT_001d123c);
  pcVar1[sVar8] = '\0';
  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);
  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);
  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);
  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);
  bfd_make_readable(iVar2);
  return iVar2;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
CALL 0x00017b80
ADD EBX,0x16b835
SUB ESP,0x38
PUSH 0x14
CALL 0x00016dc8
ADD ESP,0xc
PUSH dword ptr [EBX + 0x2240]
MOV ESI,EAX
LEA EAX,[EBX + 0xfffdeac1]
PUSH EAX
PUSH ESI
CALL 0x00016af0
POP EBP
POP EAX
PUSH EDI
PUSH ESI
ADD dword ptr [EBX + 0x2240],0x1
CALL 0x00016570
POP EDX
POP ECX
MOV ESI,EAX
PUSH EAX
MOV EAX,dword ptr [EBX + 0x227c]
PUSH dword ptr [EAX + 0x4]
CALL 0x00016b60
MOV dword ptr [ESP],ESI
CALL 0x000160f0
POP EDI
POP EBP
PUSH 0x1
PUSH ESI
CALL 0x00016680
MOV EDX,dword ptr [EBX + 0x227c]
ADD ESP,0xc
MOV EAX,dword ptr [ESI + 0x4]
PUSH 0x0
PUSH dword ptr [EDX + 0x10]
PUSH ESI
CALL dword ptr [EAX + 0x154]
MOV dword ptr [EBX + 0x2244],0x0
MOV dword ptr [ESP],0x14
CALL 0x00016dc8
MOV ECX,0x100
LEA EDX,[EBX + 0xfffdeadb]
MOV dword ptr [EBX + 0x2248],EAX
MOV EAX,ESI
CALL 0x00062b90
MOV ECX,0x100
LEA EDX,[EBX + 0xfffdead2]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,ESI
CALL 0x00062b90
MOV ECX,0x100
LEA EDX,[EBX + 0xfffdeac9]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,ESI
CALL 0x00062b90
MOV ECX,dword ptr [EBX + 0x2238]
ADD ESP,0x10
LEA EDX,[EBX + 0xfffdeb9b]
MOV EBP,EAX
MOV EAX,dword ptr [EBX + 0x227c]
MOV EAX,dword ptr [EAX + 0x14]
TEST EAX,EAX
JZ 0x000638be
LEA EDX,[EBX + 0xffead179]
LEA EAX,[EBX + 0xfffdeaa8]
PUSH 0x0
PUSH 0x2
PUSH EBP
PUSH EAX
MOV EAX,ESI
CALL 0x000617f0
PUSH 0x0
PUSH 0x4
MOV EDI,dword ptr [ESP + 0x24]
PUSH EDI
PUSH ESI
CALL 0x000167f0
ADD ESP,0x14
PUSH 0x4
CALL 0x00016dc8
MOV dword ptr [ESP + 0x24],EAX
MOV dword ptr [EDI + 0x84],EAX
MOV dword ptr [EAX],0x0
PUSH 0x0
PUSH 0x4
MOV EDI,dword ptr [ESP + 0x28]
PUSH EDI
PUSH ESI
CALL 0x000167f0
ADD ESP,0x14
PUSH 0x4
CALL 0x00016dc8
MOV ECX,EAX
MOV dword ptr [EDI + 0x84],ECX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ECX],0x0
POP ECX
PUSH dword ptr [EBX + 0x223c]
CALL 0x00016760
ADD ESP,0x10
MOV ECX,dword ptr [ESP]
LEA EDI,[EAX + 0x1]
MOV EDX,EAX
TEST EDI,0x1
MOV EAX,EDI
JZ 0x0006394d
LEA EAX,[EDX + 0x2]
MOV EDX,EDI
MOV EDI,EAX
MOV dword ptr [ESP + 0x18],EDX
CDQ
MOV dword ptr [ESP + 0x1c],ECX
MOV dword ptr [ESP + 0x4],EDX
MOV dword ptr [ESP],EAX
PUSH EDX
PUSH EAX
PUSH EBP
PUSH ESI
CALL 0x000167f0
MOV dword ptr [ESP],EDI
CALL 0x00016dc8
MOV EDI,EAX
MOV dword ptr [EBP + 0x84],EAX
POP EAX
POP EDX
PUSH dword ptr [EBX + 0x223c]
PUSH EDI
CALL 0x00016530
MOV EDX,dword ptr [ESP + 0x28]
ADD ESP,0xc
MOV byte ptr [EDI + EDX*0x1],0x0
PUSH dword ptr [EBX + 0x2244]
PUSH dword ptr [EBX + 0x2248]
PUSH ESI
CALL 0x00016650
ADD ESP,0xc
PUSH 0x0
PUSH 0x4
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x24]
PUSH ESI
CALL 0x00016460
ADD ESP,0x1c
PUSH 0x0
PUSH 0x4
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x30]
PUSH ECX
PUSH dword ptr [ESP + 0x28]
PUSH ESI
CALL 0x00016460
ADD ESP,0x1c
PUSH dword ptr [ESP + 0x8]
PUSH dword ptr [ESP + 0x8]
PUSH 0x0
PUSH 0x0
PUSH EDI
PUSH EBP
PUSH ESI
CALL 0x00016460
ADD ESP,0x14
PUSH ESI
CALL 0x00016160
ADD ESP,0x3c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_000637c0(undefined4 param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}\n\n" comment (function_definition "int __regparm3 FUN_000637c0(undefined4 param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000637c0(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (expression_statement "pcVar1 = (char *)xmalloc(0x14);" (assignment_expression "pcVar1 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar1,"d%06d.o",DAT_001d1240);" (call_expression "sprintf(pcVar1,"d%06d.o",DAT_001d1240)" identifier (argument_list "(pcVar1,"d%06d.o",DAT_001d1240)" ( identifier , (string_literal ""d%06d.o"" " string_content ") , identifier ))) ;) (expression_statement "DAT_001d1240 = DAT_001d1240 + 1;" (assignment_expression "DAT_001d1240 = DAT_001d1240 + 1" identifier = (binary_expression "DAT_001d1240 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = bfd_create(pcVar1,param_1);" (assignment_expression "iVar2 = bfd_create(pcVar1,param_1)" identifier = (call_expression "bfd_create(pcVar1,param_1)" identifier (argument_list "(pcVar1,param_1)" ( identifier , identifier )))) ;) (expression_statement "bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);" (call_expression "bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2)" identifier (argument_list "(*(undefined4 *)(DAT_001d127c + 4),iVar2)" ( (pointer_expression "*(undefined4 *)(DAT_001d127c + 4)" * (cast_expression "(undefined4 *)(DAT_001d127c + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001d127c + 4)" ( (binary_expression "DAT_001d127c + 4" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(iVar2);" (call_expression "bfd_make_writable(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "bfd_set_format(iVar2,1);" (call_expression "bfd_set_format(iVar2,1)" identifier (argument_list "(iVar2,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);" (call_expression "(**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0)" (parenthesized_expression "(**(code **)(*(int *)(iVar2 + 4) + 0x154))" ( (pointer_expression "**(code **)(*(int *)(iVar2 + 4) + 0x154)" * (pointer_expression "*(code **)(*(int *)(iVar2 + 4) + 0x154)" * (cast_expression "(code **)(*(int *)(iVar2 + 4) + 0x154)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar2 + 4) + 0x154)" ( (binary_expression "*(int *)(iVar2 + 4) + 0x154" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_001d127c + 0x10)" * (cast_expression "(undefined4 *)(DAT_001d127c + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001d127c + 0x10)" ( (binary_expression "DAT_001d127c + 0x10" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_001d1244 = 0;" (assignment_expression "DAT_001d1244 = 0" identifier = number_literal) ;) (expression_statement "DAT_001d1248 = xmalloc(0x14);" (assignment_expression "DAT_001d1248 = xmalloc(0x14)" identifier = (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal )))) ;) (expression_statement "iVar3 = FUN_00062b90();" (assignment_expression "iVar3 = FUN_00062b90()" identifier = (call_expression "FUN_00062b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = FUN_00062b90();" (assignment_expression "iVar4 = FUN_00062b90()" identifier = (call_expression "FUN_00062b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = FUN_00062b90();" (assignment_expression "iVar5 = FUN_00062b90()" identifier = (call_expression "FUN_00062b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000617f0("_iname",iVar5,2,0);" (call_expression "FUN_000617f0("_iname",iVar5,2,0)" identifier (argument_list "("_iname",iVar5,2,0)" ( (string_literal ""_iname"" " string_content ") , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(iVar2,iVar3,4,0);" (call_expression "bfd_set_section_size(iVar2,iVar3,4,0)" identifier (argument_list "(iVar2,iVar3,4,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "puVar6 = (undefined4 *)xmalloc(4);" (assignment_expression "puVar6 = (undefined4 *)xmalloc(4)" identifier = (cast_expression "(undefined4 *)xmalloc(4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "*(undefined4 **)(iVar3 + 0x84) = puVar6;" (assignment_expression "*(undefined4 **)(iVar3 + 0x84) = puVar6" (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "bfd_set_section_size(iVar2,iVar4,4,0);" (call_expression "bfd_set_section_size(iVar2,iVar4,4,0)" identifier (argument_list "(iVar2,iVar4,4,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "puVar7 = (undefined4 *)xmalloc(4);" (assignment_expression "puVar7 = (undefined4 *)xmalloc(4)" identifier = (cast_expression "(undefined4 *)xmalloc(4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "*(undefined4 **)(iVar4 + 0x84) = puVar7;" (assignment_expression "*(undefined4 **)(iVar4 + 0x84) = puVar7" (pointer_expression "*(undefined4 **)(iVar4 + 0x84)" * (cast_expression "(undefined4 **)(iVar4 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x84)" ( (binary_expression "iVar4 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "sVar8 = strlen(DAT_001d123c);" (assignment_expression "sVar8 = strlen(DAT_001d123c)" identifier = (call_expression "strlen(DAT_001d123c)" identifier (argument_list "(DAT_001d123c)" ( identifier )))) ;) (expression_statement "uVar11 = sVar8 + 1;" (assignment_expression "uVar11 = sVar8 + 1" identifier = (binary_expression "sVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }" if (parenthesized_expression "((uVar11 & 1) != 0)" ( (binary_expression "(uVar11 & 1) != 0" (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }" { (expression_statement "uVar10 = sVar8 + 2;" (assignment_expression "uVar10 = sVar8 + 2" identifier = (binary_expression "sVar8 + 2" identifier + number_literal)) ;) (expression_statement "sVar8 = uVar11;" (assignment_expression "sVar8 = uVar11" identifier = identifier) ;) })) (expression_statement "iVar9 = (int)uVar10 >> 0x1f;" (assignment_expression "iVar9 = (int)uVar10 >> 0x1f" identifier = (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) (expression_statement "bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);" (call_expression "bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9)" identifier (argument_list "(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar1 = (char *)xmalloc(uVar10);" (assignment_expression "pcVar1 = (char *)xmalloc(uVar10)" identifier = (cast_expression "(char *)xmalloc(uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (expression_statement "*(char **)(iVar5 + 0x84) = pcVar1;" (assignment_expression "*(char **)(iVar5 + 0x84) = pcVar1" (pointer_expression "*(char **)(iVar5 + 0x84)" * (cast_expression "(char **)(iVar5 + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x84)" ( (binary_expression "iVar5 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "strcpy(pcVar1,DAT_001d123c);" (call_expression "strcpy(pcVar1,DAT_001d123c)" identifier (argument_list "(pcVar1,DAT_001d123c)" ( identifier , identifier ))) ;) (expression_statement "pcVar1[sVar8] = '\0';" (assignment_expression "pcVar1[sVar8] = '\0'" (subscript_expression "pcVar1[sVar8]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);" (call_expression "bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244)" identifier (argument_list "(iVar2,DAT_001d1248,DAT_001d1244)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);" (call_expression "bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0)" identifier (argument_list "(iVar2,iVar3,puVar6,0,0,4,0)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);" (call_expression "bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0)" identifier (argument_list "(iVar2,iVar4,puVar7,0,0,4,0)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);" (call_expression "bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9)" identifier (argument_list "(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "bfd_make_readable(iVar2);" (call_expression "bfd_make_readable(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbfd * __regparm3 make_tail(bfd *parent)\n\n{\n  char *pcVar1;\n  bfd *abfd;\n  asection *paVar2;\n  asection *paVar3;\n  asection *sec;\n  uchar *puVar4;\n  uchar *puVar5;\n  size_t sVar6;\n  uchar *__dest;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  abfd = (bfd *)bfd_create(pcVar1,parent);\n  bfd_find_target(pe_details->object_target,abfd);\n  bfd_make_writable(abfd);\n  bfd_set_format(abfd,1);\n  (*abfd->xvec->_bfd_set_arch_mach)(abfd,pe_details->bfd_arch,0);\n  symptr = 0;\n  iVar8 = 0x14;\n  symtab = (asymbol **)xmalloc();\n  paVar2 = quick_section(abfd,".idata$4",0x100,iVar8);\n  paVar3 = quick_section(abfd,".idata$5",0x100,iVar8);\n  sec = quick_section(abfd,".idata$7",0x100,iVar8);\n  pcVar1 = "";\n  if (pe_details->underscored != 0) {\n    pcVar1 = "_";\n  }\n  quick_symbol(abfd,pcVar1,dll_symname,"_iname",sec,2,0);\n  bfd_set_section_size(abfd,paVar2,4,0);\n  puVar4 = (uchar *)xmalloc(4);\n  paVar2->contents = puVar4;\n  puVar4[0] = '\0';\n  puVar4[1] = '\0';\n  puVar4[2] = '\0';\n  puVar4[3] = '\0';\n  bfd_set_section_size(abfd,paVar3,4,0);\n  puVar5 = (uchar *)xmalloc(4);\n  paVar3->contents = puVar5;\n  puVar5[0] = '\0';\n  puVar5[1] = '\0';\n  puVar5[2] = '\0';\n  puVar5[3] = '\0';\n  sVar6 = strlen(dll_filename);\n  uVar9 = sVar6 + 1;\n  uVar7 = uVar9;\n  if ((uVar9 & 1) != 0) {\n    uVar7 = sVar6 + 2;\n    sVar6 = uVar9;\n  }\n  iVar8 = (int)uVar7 >> 0x1f;\n  uVar9 = uVar7;\n  bfd_set_section_size(abfd,sec,uVar7,iVar8,uVar7,iVar8);\n  __dest = (uchar *)xmalloc(uVar7);\n  sec->contents = __dest;\n  strcpy((char *)__dest,dll_filename);\n  __dest[sVar6] = '\0';\n  bfd_set_symtab(abfd,symtab,symptr);\n  bfd_set_section_contents(abfd,paVar2,puVar4,0,0,4,0);\n  bfd_set_section_contents(abfd,paVar3,puVar5,0,0,4,0);\n  bfd_set_section_contents(abfd,sec,__dest,0,0,uVar9,iVar8);\n  bfd_make_readable(abfd);\n  return abfd;\n}\n\n" comment (ERROR "bfd * __regparm3 make_tail(bfd *parent)" (binary_expression "bfd * __regparm3 make_tail(bfd *parent)" identifier * (ERROR "__regparm3" identifier) (call_expression "make_tail(bfd *parent)" identifier (argument_list "(bfd *parent)" ( (binary_expression "bfd *parent" identifier * identifier) ))))) (compound_statement "{\n  char *pcVar1;\n  bfd *abfd;\n  asection *paVar2;\n  asection *paVar3;\n  asection *sec;\n  uchar *puVar4;\n  uchar *puVar5;\n  size_t sVar6;\n  uchar *__dest;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  abfd = (bfd *)bfd_create(pcVar1,parent);\n  bfd_find_target(pe_details->object_target,abfd);\n  bfd_make_writable(abfd);\n  bfd_set_format(abfd,1);\n  (*abfd->xvec->_bfd_set_arch_mach)(abfd,pe_details->bfd_arch,0);\n  symptr = 0;\n  iVar8 = 0x14;\n  symtab = (asymbol **)xmalloc();\n  paVar2 = quick_section(abfd,".idata$4",0x100,iVar8);\n  paVar3 = quick_section(abfd,".idata$5",0x100,iVar8);\n  sec = quick_section(abfd,".idata$7",0x100,iVar8);\n  pcVar1 = "";\n  if (pe_details->underscored != 0) {\n    pcVar1 = "_";\n  }\n  quick_symbol(abfd,pcVar1,dll_symname,"_iname",sec,2,0);\n  bfd_set_section_size(abfd,paVar2,4,0);\n  puVar4 = (uchar *)xmalloc(4);\n  paVar2->contents = puVar4;\n  puVar4[0] = '\0';\n  puVar4[1] = '\0';\n  puVar4[2] = '\0';\n  puVar4[3] = '\0';\n  bfd_set_section_size(abfd,paVar3,4,0);\n  puVar5 = (uchar *)xmalloc(4);\n  paVar3->contents = puVar5;\n  puVar5[0] = '\0';\n  puVar5[1] = '\0';\n  puVar5[2] = '\0';\n  puVar5[3] = '\0';\n  sVar6 = strlen(dll_filename);\n  uVar9 = sVar6 + 1;\n  uVar7 = uVar9;\n  if ((uVar9 & 1) != 0) {\n    uVar7 = sVar6 + 2;\n    sVar6 = uVar9;\n  }\n  iVar8 = (int)uVar7 >> 0x1f;\n  uVar9 = uVar7;\n  bfd_set_section_size(abfd,sec,uVar7,iVar8,uVar7,iVar8);\n  __dest = (uchar *)xmalloc(uVar7);\n  sec->contents = __dest;\n  strcpy((char *)__dest,dll_filename);\n  __dest[sVar6] = '\0';\n  bfd_set_symtab(abfd,symtab,symptr);\n  bfd_set_section_contents(abfd,paVar2,puVar4,0,0,4,0);\n  bfd_set_section_contents(abfd,paVar3,puVar5,0,0,4,0);\n  bfd_set_section_contents(abfd,sec,__dest,0,0,uVar9,iVar8);\n  bfd_make_readable(abfd);\n  return abfd;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "bfd *abfd;" type_identifier (pointer_declarator "*abfd" * identifier) ;) (declaration "asection *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "asection *paVar3;" type_identifier (pointer_declarator "*paVar3" * identifier) ;) (declaration "asection *sec;" type_identifier (pointer_declarator "*sec" * identifier) ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "uchar *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (expression_statement "pcVar1 = (char *)xmalloc(0x14);" (assignment_expression "pcVar1 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar1,"d%06d.o",tmp_seq);" (call_expression "sprintf(pcVar1,"d%06d.o",tmp_seq)" identifier (argument_list "(pcVar1,"d%06d.o",tmp_seq)" ( identifier , (string_literal ""d%06d.o"" " string_content ") , identifier ))) ;) (expression_statement "tmp_seq = tmp_seq + 1;" (assignment_expression "tmp_seq = tmp_seq + 1" identifier = (binary_expression "tmp_seq + 1" identifier + number_literal)) ;) (expression_statement "abfd = (bfd *)bfd_create(pcVar1,parent);" (assignment_expression "abfd = (bfd *)bfd_create(pcVar1,parent)" identifier = (cast_expression "(bfd *)bfd_create(pcVar1,parent)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar1,parent)" identifier (argument_list "(pcVar1,parent)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(pe_details->object_target,abfd);" (call_expression "bfd_find_target(pe_details->object_target,abfd)" identifier (argument_list "(pe_details->object_target,abfd)" ( (field_expression "pe_details->object_target" identifier -> field_identifier) , identifier ))) ;) (expression_statement "bfd_make_writable(abfd);" (call_expression "bfd_make_writable(abfd)" identifier (argument_list "(abfd)" ( identifier ))) ;) (expression_statement "bfd_set_format(abfd,1);" (call_expression "bfd_set_format(abfd,1)" identifier (argument_list "(abfd,1)" ( identifier , number_literal ))) ;) (expression_statement "(*abfd->xvec->_bfd_set_arch_mach)(abfd,pe_details->bfd_arch,0);" (call_expression "(*abfd->xvec->_bfd_set_arch_mach)(abfd,pe_details->bfd_arch,0)" (parenthesized_expression "(*abfd->xvec->_bfd_set_arch_mach)" ( (pointer_expression "*abfd->xvec->_bfd_set_arch_mach" * (field_expression "abfd->xvec->_bfd_set_arch_mach" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(abfd,pe_details->bfd_arch,0)" ( identifier , (field_expression "pe_details->bfd_arch" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "symptr = 0;" (assignment_expression "symptr = 0" identifier = number_literal) ;) (expression_statement "iVar8 = 0x14;" (assignment_expression "iVar8 = 0x14" identifier = number_literal) ;) (expression_statement "symtab = (asymbol **)xmalloc();" (assignment_expression "symtab = (asymbol **)xmalloc()" identifier = (cast_expression "(asymbol **)xmalloc()" ( (type_descriptor "asymbol **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "paVar2 = quick_section(abfd,".idata$4",0x100,iVar8);" (assignment_expression "paVar2 = quick_section(abfd,".idata$4",0x100,iVar8)" identifier = (call_expression "quick_section(abfd,".idata$4",0x100,iVar8)" identifier (argument_list "(abfd,".idata$4",0x100,iVar8)" ( identifier , (string_literal "".idata$4"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "paVar3 = quick_section(abfd,".idata$5",0x100,iVar8);" (assignment_expression "paVar3 = quick_section(abfd,".idata$5",0x100,iVar8)" identifier = (call_expression "quick_section(abfd,".idata$5",0x100,iVar8)" identifier (argument_list "(abfd,".idata$5",0x100,iVar8)" ( identifier , (string_literal "".idata$5"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "sec = quick_section(abfd,".idata$7",0x100,iVar8);" (assignment_expression "sec = quick_section(abfd,".idata$7",0x100,iVar8)" identifier = (call_expression "quick_section(abfd,".idata$7",0x100,iVar8)" identifier (argument_list "(abfd,".idata$7",0x100,iVar8)" ( identifier , (string_literal "".idata$7"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "pcVar1 = "";" (assignment_expression "pcVar1 = """ identifier = (string_literal """" " ")) ;) (if_statement "if (pe_details->underscored != 0) {\n    pcVar1 = "_";\n  }" if (parenthesized_expression "(pe_details->underscored != 0)" ( (binary_expression "pe_details->underscored != 0" (field_expression "pe_details->underscored" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    pcVar1 = "_";\n  }" { (expression_statement "pcVar1 = "_";" (assignment_expression "pcVar1 = "_"" identifier = (string_literal ""_"" " string_content ")) ;) })) (expression_statement "quick_symbol(abfd,pcVar1,dll_symname,"_iname",sec,2,0);" (call_expression "quick_symbol(abfd,pcVar1,dll_symname,"_iname",sec,2,0)" identifier (argument_list "(abfd,pcVar1,dll_symname,"_iname",sec,2,0)" ( identifier , identifier , identifier , (string_literal ""_iname"" " string_content ") , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(abfd,paVar2,4,0);" (call_expression "bfd_set_section_size(abfd,paVar2,4,0)" identifier (argument_list "(abfd,paVar2,4,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "puVar4 = (uchar *)xmalloc(4);" (assignment_expression "puVar4 = (uchar *)xmalloc(4)" identifier = (cast_expression "(uchar *)xmalloc(4)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "paVar2->contents = puVar4;" (assignment_expression "paVar2->contents = puVar4" (field_expression "paVar2->contents" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar4[0] = '\0';" (assignment_expression "puVar4[0] = '\0'" (subscript_expression "puVar4[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar4[1] = '\0';" (assignment_expression "puVar4[1] = '\0'" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar4[2] = '\0';" (assignment_expression "puVar4[2] = '\0'" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar4[3] = '\0';" (assignment_expression "puVar4[3] = '\0'" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bfd_set_section_size(abfd,paVar3,4,0);" (call_expression "bfd_set_section_size(abfd,paVar3,4,0)" identifier (argument_list "(abfd,paVar3,4,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "puVar5 = (uchar *)xmalloc(4);" (assignment_expression "puVar5 = (uchar *)xmalloc(4)" identifier = (cast_expression "(uchar *)xmalloc(4)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "paVar3->contents = puVar5;" (assignment_expression "paVar3->contents = puVar5" (field_expression "paVar3->contents" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar5[0] = '\0';" (assignment_expression "puVar5[0] = '\0'" (subscript_expression "puVar5[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar5[1] = '\0';" (assignment_expression "puVar5[1] = '\0'" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar5[2] = '\0';" (assignment_expression "puVar5[2] = '\0'" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar5[3] = '\0';" (assignment_expression "puVar5[3] = '\0'" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sVar6 = strlen(dll_filename);" (assignment_expression "sVar6 = strlen(dll_filename)" identifier = (call_expression "strlen(dll_filename)" identifier (argument_list "(dll_filename)" ( identifier )))) ;) (expression_statement "uVar9 = sVar6 + 1;" (assignment_expression "uVar9 = sVar6 + 1" identifier = (binary_expression "sVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar9;" (assignment_expression "uVar7 = uVar9" identifier = identifier) ;) (if_statement "if ((uVar9 & 1) != 0) {\n    uVar7 = sVar6 + 2;\n    sVar6 = uVar9;\n  }" if (parenthesized_expression "((uVar9 & 1) != 0)" ( (binary_expression "(uVar9 & 1) != 0" (parenthesized_expression "(uVar9 & 1)" ( (binary_expression "uVar9 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar7 = sVar6 + 2;\n    sVar6 = uVar9;\n  }" { (expression_statement "uVar7 = sVar6 + 2;" (assignment_expression "uVar7 = sVar6 + 2" identifier = (binary_expression "sVar6 + 2" identifier + number_literal)) ;) (expression_statement "sVar6 = uVar9;" (assignment_expression "sVar6 = uVar9" identifier = identifier) ;) })) (expression_statement "iVar8 = (int)uVar7 >> 0x1f;" (assignment_expression "iVar8 = (int)uVar7 >> 0x1f" identifier = (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (expression_statement "bfd_set_section_size(abfd,sec,uVar7,iVar8,uVar7,iVar8);" (call_expression "bfd_set_section_size(abfd,sec,uVar7,iVar8,uVar7,iVar8)" identifier (argument_list "(abfd,sec,uVar7,iVar8,uVar7,iVar8)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "__dest = (uchar *)xmalloc(uVar7);" (assignment_expression "__dest = (uchar *)xmalloc(uVar7)" identifier = (cast_expression "(uchar *)xmalloc(uVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (expression_statement "sec->contents = __dest;" (assignment_expression "sec->contents = __dest" (field_expression "sec->contents" identifier -> field_identifier) = identifier) ;) (expression_statement "strcpy((char *)__dest,dll_filename);" (call_expression "strcpy((char *)__dest,dll_filename)" identifier (argument_list "((char *)__dest,dll_filename)" ( (cast_expression "(char *)__dest" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "__dest[sVar6] = '\0';" (assignment_expression "__dest[sVar6] = '\0'" (subscript_expression "__dest[sVar6]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bfd_set_symtab(abfd,symtab,symptr);" (call_expression "bfd_set_symtab(abfd,symtab,symptr)" identifier (argument_list "(abfd,symtab,symptr)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(abfd,paVar2,puVar4,0,0,4,0);" (call_expression "bfd_set_section_contents(abfd,paVar2,puVar4,0,0,4,0)" identifier (argument_list "(abfd,paVar2,puVar4,0,0,4,0)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_contents(abfd,paVar3,puVar5,0,0,4,0);" (call_expression "bfd_set_section_contents(abfd,paVar3,puVar5,0,0,4,0)" identifier (argument_list "(abfd,paVar3,puVar5,0,0,4,0)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_contents(abfd,sec,__dest,0,0,uVar9,iVar8);" (call_expression "bfd_set_section_contents(abfd,sec,__dest,0,0,uVar9,iVar8)" identifier (argument_list "(abfd,sec,__dest,0,0,uVar9,iVar8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "bfd_make_readable(abfd);" (call_expression "bfd_make_readable(abfd)" identifier (argument_list "(abfd)" ( identifier ))) ;) (return_statement "return abfd;" return identifier ;) }))
(translation_unit "int __regparm3 FUN_000637c0(undefined4 param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}\n\n" (function_definition "int __regparm3 FUN_000637c0(undefined4 param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000637c0(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (expression_statement "pcVar1 = (char *)xmalloc(0x14);" (assignment_expression "pcVar1 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar1,"d%06d.o",DAT_001d1240);" (call_expression "sprintf(pcVar1,"d%06d.o",DAT_001d1240)" identifier (argument_list "(pcVar1,"d%06d.o",DAT_001d1240)" ( identifier , (string_literal ""d%06d.o"" " string_content ") , identifier ))) ;) (expression_statement "DAT_001d1240 = DAT_001d1240 + 1;" (assignment_expression "DAT_001d1240 = DAT_001d1240 + 1" identifier = (binary_expression "DAT_001d1240 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = bfd_create(pcVar1,param_1);" (assignment_expression "iVar2 = bfd_create(pcVar1,param_1)" identifier = (call_expression "bfd_create(pcVar1,param_1)" identifier (argument_list "(pcVar1,param_1)" ( identifier , identifier )))) ;) (expression_statement "bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);" (call_expression "bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2)" identifier (argument_list "(*(undefined4 *)(DAT_001d127c + 4),iVar2)" ( (pointer_expression "*(undefined4 *)(DAT_001d127c + 4)" * (cast_expression "(undefined4 *)(DAT_001d127c + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001d127c + 4)" ( (binary_expression "DAT_001d127c + 4" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(iVar2);" (call_expression "bfd_make_writable(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "bfd_set_format(iVar2,1);" (call_expression "bfd_set_format(iVar2,1)" identifier (argument_list "(iVar2,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);" (call_expression "(**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0)" (parenthesized_expression "(**(code **)(*(int *)(iVar2 + 4) + 0x154))" ( (pointer_expression "**(code **)(*(int *)(iVar2 + 4) + 0x154)" * (pointer_expression "*(code **)(*(int *)(iVar2 + 4) + 0x154)" * (cast_expression "(code **)(*(int *)(iVar2 + 4) + 0x154)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar2 + 4) + 0x154)" ( (binary_expression "*(int *)(iVar2 + 4) + 0x154" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_001d127c + 0x10)" * (cast_expression "(undefined4 *)(DAT_001d127c + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001d127c + 0x10)" ( (binary_expression "DAT_001d127c + 0x10" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_001d1244 = 0;" (assignment_expression "DAT_001d1244 = 0" identifier = number_literal) ;) (expression_statement "DAT_001d1248 = xmalloc(0x14);" (assignment_expression "DAT_001d1248 = xmalloc(0x14)" identifier = (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal )))) ;) (expression_statement "iVar3 = FUN_00062b90();" (assignment_expression "iVar3 = FUN_00062b90()" identifier = (call_expression "FUN_00062b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = FUN_00062b90();" (assignment_expression "iVar4 = FUN_00062b90()" identifier = (call_expression "FUN_00062b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = FUN_00062b90();" (assignment_expression "iVar5 = FUN_00062b90()" identifier = (call_expression "FUN_00062b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000617f0("_iname",iVar5,2,0);" (call_expression "FUN_000617f0("_iname",iVar5,2,0)" identifier (argument_list "("_iname",iVar5,2,0)" ( (string_literal ""_iname"" " string_content ") , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(iVar2,iVar3,4,0);" (call_expression "bfd_set_section_size(iVar2,iVar3,4,0)" identifier (argument_list "(iVar2,iVar3,4,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "puVar6 = (undefined4 *)xmalloc(4);" (assignment_expression "puVar6 = (undefined4 *)xmalloc(4)" identifier = (cast_expression "(undefined4 *)xmalloc(4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "*(undefined4 **)(iVar3 + 0x84) = puVar6;" (assignment_expression "*(undefined4 **)(iVar3 + 0x84) = puVar6" (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "bfd_set_section_size(iVar2,iVar4,4,0);" (call_expression "bfd_set_section_size(iVar2,iVar4,4,0)" identifier (argument_list "(iVar2,iVar4,4,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "puVar7 = (undefined4 *)xmalloc(4);" (assignment_expression "puVar7 = (undefined4 *)xmalloc(4)" identifier = (cast_expression "(undefined4 *)xmalloc(4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "*(undefined4 **)(iVar4 + 0x84) = puVar7;" (assignment_expression "*(undefined4 **)(iVar4 + 0x84) = puVar7" (pointer_expression "*(undefined4 **)(iVar4 + 0x84)" * (cast_expression "(undefined4 **)(iVar4 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x84)" ( (binary_expression "iVar4 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "sVar8 = strlen(DAT_001d123c);" (assignment_expression "sVar8 = strlen(DAT_001d123c)" identifier = (call_expression "strlen(DAT_001d123c)" identifier (argument_list "(DAT_001d123c)" ( identifier )))) ;) (expression_statement "uVar11 = sVar8 + 1;" (assignment_expression "uVar11 = sVar8 + 1" identifier = (binary_expression "sVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }" if (parenthesized_expression "((uVar11 & 1) != 0)" ( (binary_expression "(uVar11 & 1) != 0" (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }" { (expression_statement "uVar10 = sVar8 + 2;" (assignment_expression "uVar10 = sVar8 + 2" identifier = (binary_expression "sVar8 + 2" identifier + number_literal)) ;) (expression_statement "sVar8 = uVar11;" (assignment_expression "sVar8 = uVar11" identifier = identifier) ;) })) (expression_statement "iVar9 = (int)uVar10 >> 0x1f;" (assignment_expression "iVar9 = (int)uVar10 >> 0x1f" identifier = (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) (expression_statement "bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);" (call_expression "bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9)" identifier (argument_list "(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar1 = (char *)xmalloc(uVar10);" (assignment_expression "pcVar1 = (char *)xmalloc(uVar10)" identifier = (cast_expression "(char *)xmalloc(uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (expression_statement "*(char **)(iVar5 + 0x84) = pcVar1;" (assignment_expression "*(char **)(iVar5 + 0x84) = pcVar1" (pointer_expression "*(char **)(iVar5 + 0x84)" * (cast_expression "(char **)(iVar5 + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x84)" ( (binary_expression "iVar5 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "strcpy(pcVar1,DAT_001d123c);" (call_expression "strcpy(pcVar1,DAT_001d123c)" identifier (argument_list "(pcVar1,DAT_001d123c)" ( identifier , identifier ))) ;) (expression_statement "pcVar1[sVar8] = '\0';" (assignment_expression "pcVar1[sVar8] = '\0'" (subscript_expression "pcVar1[sVar8]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);" (call_expression "bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244)" identifier (argument_list "(iVar2,DAT_001d1248,DAT_001d1244)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);" (call_expression "bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0)" identifier (argument_list "(iVar2,iVar3,puVar6,0,0,4,0)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);" (call_expression "bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0)" identifier (argument_list "(iVar2,iVar4,puVar7,0,0,4,0)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);" (call_expression "bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9)" identifier (argument_list "(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "bfd_make_readable(iVar2);" (call_expression "bfd_make_readable(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "int __regparm3 FUN_000637c0(undefined4 param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000637c0(undefined4 param_1)" (identifier "FUN_000637c0") (parameter_list "(undefined4 param_1)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  size_t sVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  pcVar1 = (char *)xmalloc(0x14);\n  sprintf(pcVar1,"d%06d.o",DAT_001d1240);\n  DAT_001d1240 = DAT_001d1240 + 1;\n  iVar2 = bfd_create(pcVar1,param_1);\n  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);\n  bfd_make_writable(iVar2);\n  bfd_set_format(iVar2,1);\n  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);\n  DAT_001d1244 = 0;\n  DAT_001d1248 = xmalloc(0x14);\n  iVar3 = FUN_00062b90();\n  iVar4 = FUN_00062b90();\n  iVar5 = FUN_00062b90();\n  FUN_000617f0("_iname",iVar5,2,0);\n  bfd_set_section_size(iVar2,iVar3,4,0);\n  puVar6 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar3 + 0x84) = puVar6;\n  *puVar6 = 0;\n  bfd_set_section_size(iVar2,iVar4,4,0);\n  puVar7 = (undefined4 *)xmalloc(4);\n  *(undefined4 **)(iVar4 + 0x84) = puVar7;\n  *puVar7 = 0;\n  sVar8 = strlen(DAT_001d123c);\n  uVar11 = sVar8 + 1;\n  uVar10 = uVar11;\n  if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }\n  iVar9 = (int)uVar10 >> 0x1f;\n  uVar11 = uVar10;\n  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);\n  pcVar1 = (char *)xmalloc(uVar10);\n  *(char **)(iVar5 + 0x84) = pcVar1;\n  strcpy(pcVar1,DAT_001d123c);\n  pcVar1[sVar8] = '\0';\n  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);\n  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);\n  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);\n  bfd_make_readable(iVar2);\n  return iVar2;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "size_t sVar8;" (primitive_type "size_t") (identifier "sVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (expression_statement "pcVar1 = (char *)xmalloc(0x14);" (assignment_expression "pcVar1 = (char *)xmalloc(0x14)" (identifier "pcVar1") (= "=") (cast_expression "(char *)xmalloc(0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x14)" (identifier "xmalloc") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "sprintf(pcVar1,"d%06d.o",DAT_001d1240);" (call_expression "sprintf(pcVar1,"d%06d.o",DAT_001d1240)" (identifier "sprintf") (argument_list "(pcVar1,"d%06d.o",DAT_001d1240)" (( "(") (identifier "pcVar1") (, ",") (string_literal ""d%06d.o"" (" """) (string_content "d%06d.o") (" """)) (, ",") (identifier "DAT_001d1240") () ")"))) (; ";")) (expression_statement "DAT_001d1240 = DAT_001d1240 + 1;" (assignment_expression "DAT_001d1240 = DAT_001d1240 + 1" (identifier "DAT_001d1240") (= "=") (binary_expression "DAT_001d1240 + 1" (identifier "DAT_001d1240") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = bfd_create(pcVar1,param_1);" (assignment_expression "iVar2 = bfd_create(pcVar1,param_1)" (identifier "iVar2") (= "=") (call_expression "bfd_create(pcVar1,param_1)" (identifier "bfd_create") (argument_list "(pcVar1,param_1)" (( "(") (identifier "pcVar1") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);" (call_expression "bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2)" (identifier "bfd_find_target") (argument_list "(*(undefined4 *)(DAT_001d127c + 4),iVar2)" (( "(") (pointer_expression "*(undefined4 *)(DAT_001d127c + 4)" (* "*") (cast_expression "(undefined4 *)(DAT_001d127c + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001d127c + 4)" (( "(") (binary_expression "DAT_001d127c + 4" (identifier "DAT_001d127c") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "bfd_make_writable(iVar2);" (call_expression "bfd_make_writable(iVar2)" (identifier "bfd_make_writable") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "bfd_set_format(iVar2,1);" (call_expression "bfd_set_format(iVar2,1)" (identifier "bfd_set_format") (argument_list "(iVar2,1)" (( "(") (identifier "iVar2") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);" (call_expression "(**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0)" (parenthesized_expression "(**(code **)(*(int *)(iVar2 + 4) + 0x154))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar2 + 4) + 0x154)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar2 + 4) + 0x154)" (* "*") (cast_expression "(code **)(*(int *)(iVar2 + 4) + 0x154)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 4) + 0x154)" (( "(") (binary_expression "*(int *)(iVar2 + 4) + 0x154" (pointer_expression "*(int *)(iVar2 + 4)" (* "*") (cast_expression "(int *)(iVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x154")) () ")"))))) () ")")) (argument_list "(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0)" (( "(") (identifier "iVar2") (, ",") (pointer_expression "*(undefined4 *)(DAT_001d127c + 0x10)" (* "*") (cast_expression "(undefined4 *)(DAT_001d127c + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001d127c + 0x10)" (( "(") (binary_expression "DAT_001d127c + 0x10" (identifier "DAT_001d127c") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "DAT_001d1244 = 0;" (assignment_expression "DAT_001d1244 = 0" (identifier "DAT_001d1244") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_001d1248 = xmalloc(0x14);" (assignment_expression "DAT_001d1248 = xmalloc(0x14)" (identifier "DAT_001d1248") (= "=") (call_expression "xmalloc(0x14)" (identifier "xmalloc") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")")))) (; ";")) (expression_statement "iVar3 = FUN_00062b90();" (assignment_expression "iVar3 = FUN_00062b90()" (identifier "iVar3") (= "=") (call_expression "FUN_00062b90()" (identifier "FUN_00062b90") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = FUN_00062b90();" (assignment_expression "iVar4 = FUN_00062b90()" (identifier "iVar4") (= "=") (call_expression "FUN_00062b90()" (identifier "FUN_00062b90") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar5 = FUN_00062b90();" (assignment_expression "iVar5 = FUN_00062b90()" (identifier "iVar5") (= "=") (call_expression "FUN_00062b90()" (identifier "FUN_00062b90") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_000617f0("_iname",iVar5,2,0);" (call_expression "FUN_000617f0("_iname",iVar5,2,0)" (identifier "FUN_000617f0") (argument_list "("_iname",iVar5,2,0)" (( "(") (string_literal ""_iname"" (" """) (string_content "_iname") (" """)) (, ",") (identifier "iVar5") (, ",") (number_literal "2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bfd_set_section_size(iVar2,iVar3,4,0);" (call_expression "bfd_set_section_size(iVar2,iVar3,4,0)" (identifier "bfd_set_section_size") (argument_list "(iVar2,iVar3,4,0)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar3") (, ",") (number_literal "4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar6 = (undefined4 *)xmalloc(4);" (assignment_expression "puVar6 = (undefined4 *)xmalloc(4)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)xmalloc(4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(4)" (identifier "xmalloc") (argument_list "(4)" (( "(") (number_literal "4") () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(iVar3 + 0x84) = puVar6;" (assignment_expression "*(undefined4 **)(iVar3 + 0x84) = puVar6" (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" (* "*") (cast_expression "(undefined4 **)(iVar3 + 0x84)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x84)" (( "(") (binary_expression "iVar3 + 0x84" (identifier "iVar3") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "bfd_set_section_size(iVar2,iVar4,4,0);" (call_expression "bfd_set_section_size(iVar2,iVar4,4,0)" (identifier "bfd_set_section_size") (argument_list "(iVar2,iVar4,4,0)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar4") (, ",") (number_literal "4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar7 = (undefined4 *)xmalloc(4);" (assignment_expression "puVar7 = (undefined4 *)xmalloc(4)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)xmalloc(4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(4)" (identifier "xmalloc") (argument_list "(4)" (( "(") (number_literal "4") () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(iVar4 + 0x84) = puVar7;" (assignment_expression "*(undefined4 **)(iVar4 + 0x84) = puVar7" (pointer_expression "*(undefined4 **)(iVar4 + 0x84)" (* "*") (cast_expression "(undefined4 **)(iVar4 + 0x84)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x84)" (( "(") (binary_expression "iVar4 + 0x84" (identifier "iVar4") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "sVar8 = strlen(DAT_001d123c);" (assignment_expression "sVar8 = strlen(DAT_001d123c)" (identifier "sVar8") (= "=") (call_expression "strlen(DAT_001d123c)" (identifier "strlen") (argument_list "(DAT_001d123c)" (( "(") (identifier "DAT_001d123c") () ")")))) (; ";")) (expression_statement "uVar11 = sVar8 + 1;" (assignment_expression "uVar11 = sVar8 + 1" (identifier "uVar11") (= "=") (binary_expression "sVar8 + 1" (identifier "sVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" (identifier "uVar10") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if ((uVar11 & 1) != 0) {\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }" (if "if") (parenthesized_expression "((uVar11 & 1) != 0)" (( "(") (binary_expression "(uVar11 & 1) != 0" (parenthesized_expression "(uVar11 & 1)" (( "(") (binary_expression "uVar11 & 1" (identifier "uVar11") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = sVar8 + 2;\n    sVar8 = uVar11;\n  }" ({ "{") (expression_statement "uVar10 = sVar8 + 2;" (assignment_expression "uVar10 = sVar8 + 2" (identifier "uVar10") (= "=") (binary_expression "sVar8 + 2" (identifier "sVar8") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "sVar8 = uVar11;" (assignment_expression "sVar8 = uVar11" (identifier "sVar8") (= "=") (identifier "uVar11")) (; ";")) (} "}"))) (expression_statement "iVar9 = (int)uVar10 >> 0x1f;" (assignment_expression "iVar9 = (int)uVar10 >> 0x1f" (identifier "iVar9") (= "=") (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" (identifier "uVar11") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);" (call_expression "bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9)" (identifier "bfd_set_section_size") (argument_list "(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar5") (, ",") (identifier "uVar10") (, ",") (identifier "iVar9") (, ",") (identifier "uVar10") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "pcVar1 = (char *)xmalloc(uVar10);" (assignment_expression "pcVar1 = (char *)xmalloc(uVar10)" (identifier "pcVar1") (= "=") (cast_expression "(char *)xmalloc(uVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(uVar10)" (identifier "xmalloc") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))))) (; ";")) (expression_statement "*(char **)(iVar5 + 0x84) = pcVar1;" (assignment_expression "*(char **)(iVar5 + 0x84) = pcVar1" (pointer_expression "*(char **)(iVar5 + 0x84)" (* "*") (cast_expression "(char **)(iVar5 + 0x84)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x84)" (( "(") (binary_expression "iVar5 + 0x84" (identifier "iVar5") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (identifier "pcVar1")) (; ";")) (expression_statement "strcpy(pcVar1,DAT_001d123c);" (call_expression "strcpy(pcVar1,DAT_001d123c)" (identifier "strcpy") (argument_list "(pcVar1,DAT_001d123c)" (( "(") (identifier "pcVar1") (, ",") (identifier "DAT_001d123c") () ")"))) (; ";")) (expression_statement "pcVar1[sVar8] = '\0';" (assignment_expression "pcVar1[sVar8] = '\0'" (subscript_expression "pcVar1[sVar8]" (identifier "pcVar1") ([ "[") (identifier "sVar8") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);" (call_expression "bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244)" (identifier "bfd_set_symtab") (argument_list "(iVar2,DAT_001d1248,DAT_001d1244)" (( "(") (identifier "iVar2") (, ",") (identifier "DAT_001d1248") (, ",") (identifier "DAT_001d1244") () ")"))) (; ";")) (expression_statement "bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);" (call_expression "bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0)" (identifier "bfd_set_section_contents") (argument_list "(iVar2,iVar3,puVar6,0,0,4,0)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar3") (, ",") (identifier "puVar6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);" (call_expression "bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0)" (identifier "bfd_set_section_contents") (argument_list "(iVar2,iVar4,puVar7,0,0,4,0)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar4") (, ",") (identifier "puVar7") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);" (call_expression "bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9)" (identifier "bfd_set_section_contents") (argument_list "(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar5") (, ",") (identifier "pcVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar11") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "bfd_make_readable(iVar2);" (call_expression "bfd_make_readable(iVar2)" (identifier "bfd_make_readable") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

type_1 * __regparm3 make_tail(type_1 *parent)

{
  char *pcVar1;
  type_1 *abfd;
  type_2 *paVar2;
  type_2 *paVar3;
  type_2 *sec;
  type_3 *puVar4;
  type_3 *puVar5;
  size_t var_12;
  type_3 *__dest;
  type_4 uVar7;
  int iVar8;
  type_4 var_13;
  
  pcVar1 = (char *)var_1(0x14);
  var_2(pcVar1,"d%06d.o",var_3);
  var_3 = var_3 + 1;
  abfd = (type_1 *)var_4(pcVar1,parent);
  var_5(pe_details->object_target,abfd);
  var_6(abfd);
  var_7(abfd,1);
  (*abfd->xvec->_bfd_set_arch_mach)(abfd,pe_details->bfd_arch,0);
  symptr = 0;
  iVar8 = 0x14;
  symtab = (type_5 **)var_1();
  paVar2 = var_8(abfd,".idata$4",0x100,iVar8);
  paVar3 = var_8(abfd,".idata$5",0x100,iVar8);
  sec = var_8(abfd,".idata$7",0x100,iVar8);
  pcVar1 = "";
  if (pe_details->underscored != 0) {
    pcVar1 = "_";
  }
  var_9(abfd,pcVar1,dll_symname,"_iname",sec,2,0);
  var_10(abfd,paVar2,4,0);
  puVar4 = (type_3 *)var_1(4);
  paVar2->contents = puVar4;
  puVar4[0] = '\0';
  puVar4[1] = '\0';
  puVar4[2] = '\0';
  puVar4[3] = '\0';
  var_10(abfd,paVar3,4,0);
  puVar5 = (type_3 *)var_1(4);
  paVar3->contents = puVar5;
  puVar5[0] = '\0';
  puVar5[1] = '\0';
  puVar5[2] = '\0';
  puVar5[3] = '\0';
  var_12 = var_11(dll_filename);
  var_13 = var_12 + 1;
  uVar7 = var_13;
  if ((var_13 & 1) != 0) {
    uVar7 = var_12 + 2;
    var_12 = var_13;
  }
  iVar8 = (int)uVar7 >> 0x1f;
  var_13 = uVar7;
  var_10(abfd,sec,uVar7,iVar8,uVar7,iVar8);
  __dest = (type_3 *)var_1(uVar7);
  sec->contents = __dest;
  var_14((char *)__dest,dll_filename);
  __dest[var_12] = '\0';
  var_15(abfd,symtab,symptr);
  var_16(abfd,paVar2,puVar4,0,0,4,0);
  var_16(abfd,paVar3,puVar5,0,0,4,0);
  var_16(abfd,sec,__dest,0,0,var_13,iVar8);
  var_17(abfd);
  return abfd;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 MASKED(undefined4 param_1)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  size_t sVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  
  pcVar1 = (char *)xmalloc(0x14);
  sprintf(pcVar1,"d%06d.o",DAT_001d1240);
  DAT_001d1240 = DAT_001d1240 + 1;
  iVar2 = bfd_create(pcVar1,param_1);
  bfd_find_target(*(undefined4 *)(DAT_001d127c + 4),iVar2);
  bfd_make_writable(iVar2);
  bfd_set_format(iVar2,1);
  (**(code **)(*(int *)(iVar2 + 4) + 0x154))(iVar2,*(undefined4 *)(DAT_001d127c + 0x10),0);
  DAT_001d1244 = 0;
  DAT_001d1248 = xmalloc(0x14);
  iVar3 = FUN_00062b90();
  iVar4 = FUN_00062b90();
  iVar5 = FUN_00062b90();
  FUN_000617f0("_iname",iVar5,2,0);
  bfd_set_section_size(iVar2,iVar3,4,0);
  puVar6 = (undefined4 *)xmalloc(4);
  *(undefined4 **)(iVar3 + 0x84) = puVar6;
  *puVar6 = 0;
  bfd_set_section_size(iVar2,iVar4,4,0);
  puVar7 = (undefined4 *)xmalloc(4);
  *(undefined4 **)(iVar4 + 0x84) = puVar7;
  *puVar7 = 0;
  sVar8 = strlen(DAT_001d123c);
  uVar11 = sVar8 + 1;
  uVar10 = uVar11;
  if ((uVar11 & 1) != 0) {
    uVar10 = sVar8 + 2;
    sVar8 = uVar11;
  }
  iVar9 = (int)uVar10 >> 0x1f;
  uVar11 = uVar10;
  bfd_set_section_size(iVar2,iVar5,uVar10,iVar9,uVar10,iVar9);
  pcVar1 = (char *)xmalloc(uVar10);
  *(char **)(iVar5 + 0x84) = pcVar1;
  strcpy(pcVar1,DAT_001d123c);
  pcVar1[sVar8] = '\0';
  bfd_set_symtab(iVar2,DAT_001d1248,DAT_001d1244);
  bfd_set_section_contents(iVar2,iVar3,puVar6,0,0,4,0);
  bfd_set_section_contents(iVar2,iVar4,puVar7,0,0,4,0);
  bfd_set_section_contents(iVar2,iVar5,pcVar1,0,0,uVar11,iVar9);
  bfd_make_readable(iVar2);
  return iVar2;
}

