
bfd_boolean
gldelf_l1om_open_dynamic_archive
          (char *arch,search_dirs_type *search,lang_input_statement_type *entry)

{
  lang_input_statement_flags lVar1;
  byte bVar2;
  bfd_boolean bVar3;
  int iVar4;
  size_t sVar5;
  size_t sVar6;
  size_t sVar7;
  char *__s;
  char *__s_00;
  
  bVar3 = 0;
  lVar1 = entry->flags;
  if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1) != (undefined1  [16])0x0)
  {
    __s_00 = entry->filename;
    sVar5 = strlen(search->name);
    sVar6 = strlen(__s_00);
    if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0
       ) {
      sVar7 = strlen(arch);
      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);
      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);
      iVar4 = ldfile_try_open_bfd(__s,entry);
    }
    else {
      __s = (char *)xmalloc(sVar5 + sVar6 + 2);
      sprintf(__s,"%s/%s",search->name,__s_00);
      iVar4 = ldfile_try_open_bfd(__s,entry);
    }
    if (iVar4 == 0) {
      free(__s);
      return 0;
    }
    entry->filename = __s;
    iVar4 = bfd_check_format(entry->the_bfd,1);
    bVar3 = 1;
    if ((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {
      bVar2 = *(byte *)&entry->flags;
      if ((bVar2 & 5) != 5) {
        info_assert("eelf_l1om.c",0x6f5);
        bVar2 = *(byte *)&entry->flags;
      }
      if ((bVar2 & 2) == 0) {
        __s_00 = (char *)lbasename(entry->filename);
      }
      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);
      bVar3 = 1;
    }
  }
  return bVar3;
}



undefined4 FUN_0013db00(char *param_1,long param_2,long param_3)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  size_t sVar4;
  size_t sVar5;
  size_t sVar6;
  char *__s;
  char *__s_00;
  
  uVar3 = 0;
  bVar1 = *(byte *)(param_3 + 0x48);
  if ((bVar1 & 1) != 0) {
    __s_00 = *(char **)(param_3 + 0x10);
    sVar4 = strlen(*(char **)(param_2 + 8));
    sVar5 = strlen(__s_00);
    if ((bVar1 & 2) == 0) {
      sVar6 = strlen(param_1);
      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);
      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);
      iVar2 = FUN_00129b00(__s,param_3);
    }
    else {
      __s = (char *)xmalloc(sVar4 + sVar5 + 2);
      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);
      iVar2 = FUN_00129b00(__s,param_3);
    }
    if (iVar2 == 0) {
      free(__s);
      return 0;
    }
    *(char **)(param_3 + 0x10) = __s;
    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);
    uVar3 = 1;
    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {
      bVar1 = *(byte *)(param_3 + 0x48);
      if ((bVar1 & 5) != 5) {
        FUN_00129440("eelf_l1om.c",0x6f5);
        bVar1 = *(byte *)(param_3 + 0x48);
      }
      if ((bVar1 & 2) == 0) {
        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));
      }
      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);
      uVar3 = 1;
    }
  }
  return uVar3;
}


PUSH R15
XOR EAX,EAX
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
MOVZX R15D,byte ptr [RDX + 0x48]
TEST R15B,0x1
JZ 0x0013dbf3
MOV R13,qword ptr [RDX + 0x10]
MOV R14,RDI
MOV RDI,qword ptr [RSI + 0x8]
MOV RBX,RDX
MOV RBP,RSI
CALL 0x0010d330
MOV RDI,R13
MOV R12,RAX
CALL 0x0010d330
ADD R12,RAX
AND R15D,0x2
JNZ 0x0013dc08
MOV RDI,R14
CALL 0x0010d330
LEA RDI,[R12 + RAX*0x1 + 0x8]
CALL 0x0010dda0
MOV RDX,qword ptr [RBP + 0x8]
MOV R8,R14
MOV RCX,R13
MOV RDI,RAX
MOV R12,RAX
LEA RSI,[0x19f829]
XOR EAX,EAX
CALL 0x0010dbc0
MOV RSI,RBX
MOV RDI,R12
CALL 0x00129b00
TEST EAX,EAX
JZ 0x0013dc40
MOV qword ptr [RBX + 0x10],R12
MOV RDI,qword ptr [RBX + 0x20]
MOV ESI,0x1
CALL 0x0010dbf0
MOV EDX,EAX
MOV EAX,0x1
TEST EDX,EDX
JZ 0x0013dbf3
MOV RDX,qword ptr [RBX + 0x20]
TEST byte ptr [RDX + 0x45],0x8
JZ 0x0013dbf3
MOVZX EAX,byte ptr [RBX + 0x48]
MOV EDX,EAX
AND EDX,0x5
CMP DL,0x5
JZ 0x0013dbda
MOV ESI,0x6f5
LEA RDI,[0x256c67]
CALL 0x00129440
MOVZX EAX,byte ptr [RBX + 0x48]
TEST AL,0x2
JZ 0x0013dc60
MOV RDI,qword ptr [RBX + 0x20]
MOV RSI,R13
CALL 0x0010db20
MOV EAX,0x1
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RDI,[R12 + 0x2]
CALL 0x0010dda0
MOV RDX,qword ptr [RBP + 0x8]
LEA RSI,[0x19f94f]
MOV RCX,R13
MOV RDI,RAX
MOV R12,RAX
XOR EAX,EAX
CALL 0x0010dbc0
MOV RSI,RBX
MOV RDI,R12
CALL 0x00129b00
TEST EAX,EAX
JNZ 0x0013db90
MOV RDI,R12
MOV dword ptr [RSP + 0xc],EAX
CALL 0x0010dd90
MOV EAX,dword ptr [RSP + 0xc]
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x0010d610
MOV R13,RAX
JMP 0x0013dbe2
(translation_unit "undefined4 FUN_0013db00(char *param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined4 FUN_0013db00(char *param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0013db00(char *param_1,long param_2,long param_3)" identifier (parameter_list "(char *param_1,long param_2,long param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" identifier = (pointer_expression "*(byte *)(param_3 + 0x48)" * (cast_expression "(byte *)(param_3 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }" if (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }" { (expression_statement "__s_00 = *(char **)(param_3 + 0x10);" (assignment_expression "__s_00 = *(char **)(param_3 + 0x10)" identifier = (pointer_expression "*(char **)(param_3 + 0x10)" * (cast_expression "(char **)(param_3 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "sVar4 = strlen(*(char **)(param_2 + 8));" (assignment_expression "sVar4 = strlen(*(char **)(param_2 + 8))" identifier = (call_expression "strlen(*(char **)(param_2 + 8))" identifier (argument_list "(*(char **)(param_2 + 8))" ( (pointer_expression "*(char **)(param_2 + 8)" * (cast_expression "(char **)(param_2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "sVar5 = strlen(__s_00);" (assignment_expression "sVar5 = strlen(__s_00)" identifier = (call_expression "strlen(__s_00)" identifier (argument_list "(__s_00)" ( identifier )))) ;) (if_statement "if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" { (expression_statement "sVar6 = strlen(param_1);" (assignment_expression "sVar6 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "__s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);" (assignment_expression "__s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5 + 8 + sVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5 + 8 + sVar6)" identifier (argument_list "(sVar4 + sVar5 + 8 + sVar6)" ( (binary_expression "sVar4 + sVar5 + 8 + sVar6" (binary_expression "sVar4 + sVar5 + 8" (binary_expression "sVar4 + sVar5" identifier + identifier) + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);" (call_expression "sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1)" identifier (argument_list "(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1)" ( identifier , (string_literal ""%s/lib%s%s.so"" " string_content ") , (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar2 = FUN_00129b00(__s,param_3);" (assignment_expression "iVar2 = FUN_00129b00(__s,param_3)" identifier = (call_expression "FUN_00129b00(__s,param_3)" identifier (argument_list "(__s,param_3)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" else (compound_statement "{\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" { (expression_statement "__s = (char *)xmalloc(sVar4 + sVar5 + 2);" (assignment_expression "__s = (char *)xmalloc(sVar4 + sVar5 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5 + 2)" identifier (argument_list "(sVar4 + sVar5 + 2)" ( (binary_expression "sVar4 + sVar5 + 2" (binary_expression "sVar4 + sVar5" identifier + identifier) + number_literal) ))))) ;) (expression_statement "sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);" (call_expression "sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00)" identifier (argument_list "(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00)" ( identifier , (string_literal ""%s/%s"" " string_content ") , (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar2 = FUN_00129b00(__s,param_3);" (assignment_expression "iVar2 = FUN_00129b00(__s,param_3)" identifier = (call_expression "FUN_00129b00(__s,param_3)" identifier (argument_list "(__s,param_3)" ( identifier , identifier )))) ;) }))) (if_statement "if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__s);\n      return 0;\n    }" { (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(char **)(param_3 + 0x10) = __s;" (assignment_expression "*(char **)(param_3 + 0x10) = __s" (pointer_expression "*(char **)(param_3 + 0x10)" * (cast_expression "(char **)(param_3 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);" (assignment_expression "iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1)" identifier = (call_expression "bfd_check_format(*(undefined8 *)(param_3 + 0x20),1)" identifier (argument_list "(*(undefined8 *)(param_3 + 0x20),1)" ( (pointer_expression "*(undefined8 *)(param_3 + 0x20)" * (cast_expression "(undefined8 *)(param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }" if (parenthesized_expression "((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0))" ( (binary_expression "(iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)" ( (binary_expression "(*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8)" ( (binary_expression "*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8" (pointer_expression "*(byte *)(*(long *)(param_3 + 0x20) + 0x45)" * (cast_expression "(byte *)(*(long *)(param_3 + 0x20) + 0x45)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x20) + 0x45)" ( (binary_expression "*(long *)(param_3 + 0x20) + 0x45" (pointer_expression "*(long *)(param_3 + 0x20)" * (cast_expression "(long *)(param_3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }" { (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" identifier = (pointer_expression "*(byte *)(param_3 + 0x48)" * (cast_expression "(byte *)(param_3 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }" if (parenthesized_expression "((bVar1 & 5) != 5)" ( (binary_expression "(bVar1 & 5) != 5" (parenthesized_expression "(bVar1 & 5)" ( (binary_expression "bVar1 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }" { (expression_statement "FUN_00129440("eelf_l1om.c",0x6f5);" (call_expression "FUN_00129440("eelf_l1om.c",0x6f5)" identifier (argument_list "("eelf_l1om.c",0x6f5)" ( (string_literal ""eelf_l1om.c"" " string_content ") , number_literal ))) ;) (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" identifier = (pointer_expression "*(byte *)(param_3 + 0x48)" * (cast_expression "(byte *)(param_3 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) })) (if_statement "if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }" { (expression_statement "__s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));" (assignment_expression "__s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10))" identifier = (cast_expression "(char *)lbasename(*(undefined8 *)(param_3 + 0x10))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "lbasename(*(undefined8 *)(param_3 + 0x10))" identifier (argument_list "(*(undefined8 *)(param_3 + 0x10))" ( (pointer_expression "*(undefined8 *)(param_3 + 0x10)" * (cast_expression "(undefined8 *)(param_3 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) ))))) ;) })) (expression_statement "bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);" (call_expression "bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00)" identifier (argument_list "(*(undefined8 *)(param_3 + 0x20),__s_00)" ( (pointer_expression "*(undefined8 *)(param_3 + 0x20)" * (cast_expression "(undefined8 *)(param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "bfd_boolean\ngldelf_l1om_open_dynamic_archive\n          (char *arch,search_dirs_type *search,lang_input_statement_type *entry)\n\n{\n  lang_input_statement_flags lVar1;\n  byte bVar2;\n  bfd_boolean bVar3;\n  int iVar4;\n  size_t sVar5;\n  size_t sVar6;\n  size_t sVar7;\n  char *__s;\n  char *__s_00;\n  \n  bVar3 = 0;\n  lVar1 = entry->flags;\n  if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1) != (undefined1  [16])0x0)\n  {\n    __s_00 = entry->filename;\n    sVar5 = strlen(search->name);\n    sVar6 = strlen(__s_00);\n    if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0\n       ) {\n      sVar7 = strlen(arch);\n      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);\n      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    else {\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    if (iVar4 == 0) {\n      free(__s);\n      return 0;\n    }\n    entry->filename = __s;\n    iVar4 = bfd_check_format(entry->the_bfd,1);\n    bVar3 = 1;\n    if ((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {\n      bVar2 = *(byte *)&entry->flags;\n      if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }\n      if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }\n      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);\n      bVar3 = 1;\n    }\n  }\n  return bVar3;\n}\n\n" (function_definition "bfd_boolean\ngldelf_l1om_open_dynamic_archive\n          (char *arch,search_dirs_type *search,lang_input_statement_type *entry)\n\n{\n  lang_input_statement_flags lVar1;\n  byte bVar2;\n  bfd_boolean bVar3;\n  int iVar4;\n  size_t sVar5;\n  size_t sVar6;\n  size_t sVar7;\n  char *__s;\n  char *__s_00;\n  \n  bVar3 = 0;\n  lVar1 = entry->flags;\n  if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1) != (undefined1  [16])0x0)\n  {\n    __s_00 = entry->filename;\n    sVar5 = strlen(search->name);\n    sVar6 = strlen(__s_00);\n    if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0\n       ) {\n      sVar7 = strlen(arch);\n      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);\n      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    else {\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    if (iVar4 == 0) {\n      free(__s);\n      return 0;\n    }\n    entry->filename = __s;\n    iVar4 = bfd_check_format(entry->the_bfd,1);\n    bVar3 = 1;\n    if ((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {\n      bVar2 = *(byte *)&entry->flags;\n      if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }\n      if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }\n      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);\n      bVar3 = 1;\n    }\n  }\n  return bVar3;\n}" type_identifier (function_declarator "gldelf_l1om_open_dynamic_archive\n          (char *arch,search_dirs_type *search,lang_input_statement_type *entry)" identifier (parameter_list "(char *arch,search_dirs_type *search,lang_input_statement_type *entry)" ( (parameter_declaration "char *arch" primitive_type (pointer_declarator "*arch" * identifier)) , (parameter_declaration "search_dirs_type *search" type_identifier (pointer_declarator "*search" * identifier)) , (parameter_declaration "lang_input_statement_type *entry" type_identifier (pointer_declarator "*entry" * identifier)) ))) (compound_statement "{\n  lang_input_statement_flags lVar1;\n  byte bVar2;\n  bfd_boolean bVar3;\n  int iVar4;\n  size_t sVar5;\n  size_t sVar6;\n  size_t sVar7;\n  char *__s;\n  char *__s_00;\n  \n  bVar3 = 0;\n  lVar1 = entry->flags;\n  if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1) != (undefined1  [16])0x0)\n  {\n    __s_00 = entry->filename;\n    sVar5 = strlen(search->name);\n    sVar6 = strlen(__s_00);\n    if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0\n       ) {\n      sVar7 = strlen(arch);\n      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);\n      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    else {\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    if (iVar4 == 0) {\n      free(__s);\n      return 0;\n    }\n    entry->filename = __s;\n    iVar4 = bfd_check_format(entry->the_bfd,1);\n    bVar3 = 1;\n    if ((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {\n      bVar2 = *(byte *)&entry->flags;\n      if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }\n      if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }\n      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);\n      bVar3 = 1;\n    }\n  }\n  return bVar3;\n}" { (declaration "lang_input_statement_flags lVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (expression_statement "lVar1 = entry->flags;" (assignment_expression "lVar1 = entry->flags" identifier = (field_expression "entry->flags" identifier -> field_identifier)) ;) (if_statement "if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1) != (undefined1  [16])0x0)\n  {\n    __s_00 = entry->filename;\n    sVar5 = strlen(search->name);\n    sVar6 = strlen(__s_00);\n    if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0\n       ) {\n      sVar7 = strlen(arch);\n      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);\n      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    else {\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    if (iVar4 == 0) {\n      free(__s);\n      return 0;\n    }\n    entry->filename = __s;\n    iVar4 = bfd_check_format(entry->the_bfd,1);\n    bVar3 = 1;\n    if ((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {\n      bVar2 = *(byte *)&entry->flags;\n      if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }\n      if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }\n      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);\n      bVar3 = 1;\n    }\n  }" if (parenthesized_expression "((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1) != (undefined1  [16])0x0)" ( (binary_expression "(undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1) != (undefined1  [16])0x0" (call_expression "(undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x1)" (parenthesized_expression "(undefined1  [16])" ( (subscript_expression "undefined1  [16]" identifier [ number_literal ]) )) (argument_list "((undefined1  [16])lVar1 & (undefined1  [16])0x1)" ( (binary_expression "(undefined1  [16])lVar1 & (undefined1  [16])0x1" (cast_expression "(undefined1  [16])lVar1" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) identifier) & (cast_expression "(undefined1  [16])0x1" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ))) != (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) )) (compound_statement "{\n    __s_00 = entry->filename;\n    sVar5 = strlen(search->name);\n    sVar6 = strlen(__s_00);\n    if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0\n       ) {\n      sVar7 = strlen(arch);\n      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);\n      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    else {\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    if (iVar4 == 0) {\n      free(__s);\n      return 0;\n    }\n    entry->filename = __s;\n    iVar4 = bfd_check_format(entry->the_bfd,1);\n    bVar3 = 1;\n    if ((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {\n      bVar2 = *(byte *)&entry->flags;\n      if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }\n      if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }\n      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);\n      bVar3 = 1;\n    }\n  }" { (expression_statement "__s_00 = entry->filename;" (assignment_expression "__s_00 = entry->filename" identifier = (field_expression "entry->filename" identifier -> field_identifier)) ;) (expression_statement "sVar5 = strlen(search->name);" (assignment_expression "sVar5 = strlen(search->name)" identifier = (call_expression "strlen(search->name)" identifier (argument_list "(search->name)" ( (field_expression "search->name" identifier -> field_identifier) )))) ;) (expression_statement "sVar6 = strlen(__s_00);" (assignment_expression "sVar6 = strlen(__s_00)" identifier = (call_expression "strlen(__s_00)" identifier (argument_list "(__s_00)" ( identifier )))) ;) (if_statement "if ((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0\n       ) {\n      sVar7 = strlen(arch);\n      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);\n      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }\n    else {\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }" if (parenthesized_expression "((undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0\n       )" ( (binary_expression "(undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2) == (undefined1  [16])0x0" (call_expression "(undefined1  [16])((undefined1  [16])lVar1 & (undefined1  [16])0x2)" (parenthesized_expression "(undefined1  [16])" ( (subscript_expression "undefined1  [16]" identifier [ number_literal ]) )) (argument_list "((undefined1  [16])lVar1 & (undefined1  [16])0x2)" ( (binary_expression "(undefined1  [16])lVar1 & (undefined1  [16])0x2" (cast_expression "(undefined1  [16])lVar1" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) identifier) & (cast_expression "(undefined1  [16])0x2" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ))) == (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) )) (compound_statement "{\n      sVar7 = strlen(arch);\n      __s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);\n      sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }" { (expression_statement "sVar7 = strlen(arch);" (assignment_expression "sVar7 = strlen(arch)" identifier = (call_expression "strlen(arch)" identifier (argument_list "(arch)" ( identifier )))) ;) (expression_statement "__s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7);" (assignment_expression "__s = (char *)xmalloc(sVar5 + sVar6 + 8 + sVar7)" identifier = (cast_expression "(char *)xmalloc(sVar5 + sVar6 + 8 + sVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + sVar6 + 8 + sVar7)" identifier (argument_list "(sVar5 + sVar6 + 8 + sVar7)" ( (binary_expression "sVar5 + sVar6 + 8 + sVar7" (binary_expression "sVar5 + sVar6 + 8" (binary_expression "sVar5 + sVar6" identifier + identifier) + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch);" (call_expression "sprintf(__s,"%s/lib%s%s.so",search->name,__s_00,arch)" identifier (argument_list "(__s,"%s/lib%s%s.so",search->name,__s_00,arch)" ( identifier , (string_literal ""%s/lib%s%s.so"" " string_content ") , (field_expression "search->name" identifier -> field_identifier) , identifier , identifier ))) ;) (expression_statement "iVar4 = ldfile_try_open_bfd(__s,entry);" (assignment_expression "iVar4 = ldfile_try_open_bfd(__s,entry)" identifier = (call_expression "ldfile_try_open_bfd(__s,entry)" identifier (argument_list "(__s,entry)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }" else (compound_statement "{\n      __s = (char *)xmalloc(sVar5 + sVar6 + 2);\n      sprintf(__s,"%s/%s",search->name,__s_00);\n      iVar4 = ldfile_try_open_bfd(__s,entry);\n    }" { (expression_statement "__s = (char *)xmalloc(sVar5 + sVar6 + 2);" (assignment_expression "__s = (char *)xmalloc(sVar5 + sVar6 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar5 + sVar6 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + sVar6 + 2)" identifier (argument_list "(sVar5 + sVar6 + 2)" ( (binary_expression "sVar5 + sVar6 + 2" (binary_expression "sVar5 + sVar6" identifier + identifier) + number_literal) ))))) ;) (expression_statement "sprintf(__s,"%s/%s",search->name,__s_00);" (call_expression "sprintf(__s,"%s/%s",search->name,__s_00)" identifier (argument_list "(__s,"%s/%s",search->name,__s_00)" ( identifier , (string_literal ""%s/%s"" " string_content ") , (field_expression "search->name" identifier -> field_identifier) , identifier ))) ;) (expression_statement "iVar4 = ldfile_try_open_bfd(__s,entry);" (assignment_expression "iVar4 = ldfile_try_open_bfd(__s,entry)" identifier = (call_expression "ldfile_try_open_bfd(__s,entry)" identifier (argument_list "(__s,entry)" ( identifier , identifier )))) ;) }))) (if_statement "if (iVar4 == 0) {\n      free(__s);\n      return 0;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__s);\n      return 0;\n    }" { (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "entry->filename = __s;" (assignment_expression "entry->filename = __s" (field_expression "entry->filename" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar4 = bfd_check_format(entry->the_bfd,1);" (assignment_expression "iVar4 = bfd_check_format(entry->the_bfd,1)" identifier = (call_expression "bfd_check_format(entry->the_bfd,1)" identifier (argument_list "(entry->the_bfd,1)" ( (field_expression "entry->the_bfd" identifier -> field_identifier) , number_literal )))) ;) (expression_statement "bVar3 = 1;" (assignment_expression "bVar3 = 1" identifier = number_literal) ;) (if_statement "if ((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {\n      bVar2 = *(byte *)&entry->flags;\n      if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }\n      if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }\n      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);\n      bVar3 = 1;\n    }" if (parenthesized_expression "((iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0))" ( (binary_expression "(iVar4 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((entry->the_bfd->field_0x45 & 8) != 0)" ( (binary_expression "(entry->the_bfd->field_0x45 & 8) != 0" (parenthesized_expression "(entry->the_bfd->field_0x45 & 8)" ( (binary_expression "entry->the_bfd->field_0x45 & 8" (field_expression "entry->the_bfd->field_0x45" (field_expression "entry->the_bfd" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      bVar2 = *(byte *)&entry->flags;\n      if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }\n      if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }\n      bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);\n      bVar3 = 1;\n    }" { (expression_statement "bVar2 = *(byte *)&entry->flags;" (assignment_expression "bVar2 = *(byte *)&entry->flags" identifier = (pointer_expression "*(byte *)&entry->flags" * (cast_expression "(byte *)&entry->flags" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&entry->flags" & (field_expression "entry->flags" identifier -> field_identifier))))) ;) (if_statement "if ((bVar2 & 5) != 5) {\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }" if (parenthesized_expression "((bVar2 & 5) != 5)" ( (binary_expression "(bVar2 & 5) != 5" (parenthesized_expression "(bVar2 & 5)" ( (binary_expression "bVar2 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        info_assert("eelf_l1om.c",0x6f5);\n        bVar2 = *(byte *)&entry->flags;\n      }" { (expression_statement "info_assert("eelf_l1om.c",0x6f5);" (call_expression "info_assert("eelf_l1om.c",0x6f5)" identifier (argument_list "("eelf_l1om.c",0x6f5)" ( (string_literal ""eelf_l1om.c"" " string_content ") , number_literal ))) ;) (expression_statement "bVar2 = *(byte *)&entry->flags;" (assignment_expression "bVar2 = *(byte *)&entry->flags" identifier = (pointer_expression "*(byte *)&entry->flags" * (cast_expression "(byte *)&entry->flags" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&entry->flags" & (field_expression "entry->flags" identifier -> field_identifier))))) ;) })) (if_statement "if ((bVar2 & 2) == 0) {\n        __s_00 = (char *)lbasename(entry->filename);\n      }" if (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        __s_00 = (char *)lbasename(entry->filename);\n      }" { (expression_statement "__s_00 = (char *)lbasename(entry->filename);" (assignment_expression "__s_00 = (char *)lbasename(entry->filename)" identifier = (cast_expression "(char *)lbasename(entry->filename)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "lbasename(entry->filename)" identifier (argument_list "(entry->filename)" ( (field_expression "entry->filename" identifier -> field_identifier) ))))) ;) })) (expression_statement "bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00);" (call_expression "bfd_elf_set_dt_needed_name(entry->the_bfd,__s_00)" identifier (argument_list "(entry->the_bfd,__s_00)" ( (field_expression "entry->the_bfd" identifier -> field_identifier) , identifier ))) ;) (expression_statement "bVar3 = 1;" (assignment_expression "bVar3 = 1" identifier = number_literal) ;) })) })) (return_statement "return bVar3;" return identifier ;) })))
(translation_unit "undefined4 FUN_0013db00(char *param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined4 FUN_0013db00(char *param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0013db00(char *param_1,long param_2,long param_3)" identifier (parameter_list "(char *param_1,long param_2,long param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" identifier = (pointer_expression "*(byte *)(param_3 + 0x48)" * (cast_expression "(byte *)(param_3 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }" if (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }" { (expression_statement "__s_00 = *(char **)(param_3 + 0x10);" (assignment_expression "__s_00 = *(char **)(param_3 + 0x10)" identifier = (pointer_expression "*(char **)(param_3 + 0x10)" * (cast_expression "(char **)(param_3 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "sVar4 = strlen(*(char **)(param_2 + 8));" (assignment_expression "sVar4 = strlen(*(char **)(param_2 + 8))" identifier = (call_expression "strlen(*(char **)(param_2 + 8))" identifier (argument_list "(*(char **)(param_2 + 8))" ( (pointer_expression "*(char **)(param_2 + 8)" * (cast_expression "(char **)(param_2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "sVar5 = strlen(__s_00);" (assignment_expression "sVar5 = strlen(__s_00)" identifier = (call_expression "strlen(__s_00)" identifier (argument_list "(__s_00)" ( identifier )))) ;) (if_statement "if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" { (expression_statement "sVar6 = strlen(param_1);" (assignment_expression "sVar6 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "__s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);" (assignment_expression "__s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5 + 8 + sVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5 + 8 + sVar6)" identifier (argument_list "(sVar4 + sVar5 + 8 + sVar6)" ( (binary_expression "sVar4 + sVar5 + 8 + sVar6" (binary_expression "sVar4 + sVar5 + 8" (binary_expression "sVar4 + sVar5" identifier + identifier) + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);" (call_expression "sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1)" identifier (argument_list "(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1)" ( identifier , (string_literal ""%s/lib%s%s.so"" " string_content ") , (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar2 = FUN_00129b00(__s,param_3);" (assignment_expression "iVar2 = FUN_00129b00(__s,param_3)" identifier = (call_expression "FUN_00129b00(__s,param_3)" identifier (argument_list "(__s,param_3)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" else (compound_statement "{\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" { (expression_statement "__s = (char *)xmalloc(sVar4 + sVar5 + 2);" (assignment_expression "__s = (char *)xmalloc(sVar4 + sVar5 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5 + 2)" identifier (argument_list "(sVar4 + sVar5 + 2)" ( (binary_expression "sVar4 + sVar5 + 2" (binary_expression "sVar4 + sVar5" identifier + identifier) + number_literal) ))))) ;) (expression_statement "sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);" (call_expression "sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00)" identifier (argument_list "(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00)" ( identifier , (string_literal ""%s/%s"" " string_content ") , (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar2 = FUN_00129b00(__s,param_3);" (assignment_expression "iVar2 = FUN_00129b00(__s,param_3)" identifier = (call_expression "FUN_00129b00(__s,param_3)" identifier (argument_list "(__s,param_3)" ( identifier , identifier )))) ;) }))) (if_statement "if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__s);\n      return 0;\n    }" { (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(char **)(param_3 + 0x10) = __s;" (assignment_expression "*(char **)(param_3 + 0x10) = __s" (pointer_expression "*(char **)(param_3 + 0x10)" * (cast_expression "(char **)(param_3 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);" (assignment_expression "iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1)" identifier = (call_expression "bfd_check_format(*(undefined8 *)(param_3 + 0x20),1)" identifier (argument_list "(*(undefined8 *)(param_3 + 0x20),1)" ( (pointer_expression "*(undefined8 *)(param_3 + 0x20)" * (cast_expression "(undefined8 *)(param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }" if (parenthesized_expression "((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0))" ( (binary_expression "(iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)" ( (binary_expression "(*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8)" ( (binary_expression "*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8" (pointer_expression "*(byte *)(*(long *)(param_3 + 0x20) + 0x45)" * (cast_expression "(byte *)(*(long *)(param_3 + 0x20) + 0x45)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x20) + 0x45)" ( (binary_expression "*(long *)(param_3 + 0x20) + 0x45" (pointer_expression "*(long *)(param_3 + 0x20)" * (cast_expression "(long *)(param_3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }" { (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" identifier = (pointer_expression "*(byte *)(param_3 + 0x48)" * (cast_expression "(byte *)(param_3 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }" if (parenthesized_expression "((bVar1 & 5) != 5)" ( (binary_expression "(bVar1 & 5) != 5" (parenthesized_expression "(bVar1 & 5)" ( (binary_expression "bVar1 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }" { (expression_statement "FUN_00129440("eelf_l1om.c",0x6f5);" (call_expression "FUN_00129440("eelf_l1om.c",0x6f5)" identifier (argument_list "("eelf_l1om.c",0x6f5)" ( (string_literal ""eelf_l1om.c"" " string_content ") , number_literal ))) ;) (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" identifier = (pointer_expression "*(byte *)(param_3 + 0x48)" * (cast_expression "(byte *)(param_3 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x48)" ( (binary_expression "param_3 + 0x48" identifier + number_literal) ))))) ;) })) (if_statement "if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }" { (expression_statement "__s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));" (assignment_expression "__s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10))" identifier = (cast_expression "(char *)lbasename(*(undefined8 *)(param_3 + 0x10))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "lbasename(*(undefined8 *)(param_3 + 0x10))" identifier (argument_list "(*(undefined8 *)(param_3 + 0x10))" ( (pointer_expression "*(undefined8 *)(param_3 + 0x10)" * (cast_expression "(undefined8 *)(param_3 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) ))))) ;) })) (expression_statement "bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);" (call_expression "bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00)" identifier (argument_list "(*(undefined8 *)(param_3 + 0x20),__s_00)" ( (pointer_expression "*(undefined8 *)(param_3 + 0x20)" * (cast_expression "(undefined8 *)(param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + LIT) + IDENT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return 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 IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))))) ;) })) (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 (assignment_expression IDENT = LIT) ;) })) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_0013db00(char *param_1,long param_2,long param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}" (type_identifier "undefined4") (function_declarator "FUN_0013db00(char *param_1,long param_2,long param_3)" (identifier "FUN_0013db00") (parameter_list "(char *param_1,long param_2,long param_3)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  size_t sVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__s;\n  char *__s_00;\n  \n  uVar3 = 0;\n  bVar1 = *(byte *)(param_3 + 0x48);\n  if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }\n  return uVar3;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "char *__s_00;" (primitive_type "char") (pointer_declarator "*__s_00" (* "*") (identifier "__s_00")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_3 + 0x48)" (* "*") (cast_expression "(byte *)(param_3 + 0x48)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x48)" (( "(") (binary_expression "param_3 + 0x48" (identifier "param_3") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (if_statement "if ((bVar1 & 1) != 0) {\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }" (if "if") (parenthesized_expression "((bVar1 & 1) != 0)" (( "(") (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __s_00 = *(char **)(param_3 + 0x10);\n    sVar4 = strlen(*(char **)(param_2 + 8));\n    sVar5 = strlen(__s_00);\n    if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }\n    *(char **)(param_3 + 0x10) = __s;\n    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);\n    uVar3 = 1;\n    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }\n  }" ({ "{") (expression_statement "__s_00 = *(char **)(param_3 + 0x10);" (assignment_expression "__s_00 = *(char **)(param_3 + 0x10)" (identifier "__s_00") (= "=") (pointer_expression "*(char **)(param_3 + 0x10)" (* "*") (cast_expression "(char **)(param_3 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "sVar4 = strlen(*(char **)(param_2 + 8));" (assignment_expression "sVar4 = strlen(*(char **)(param_2 + 8))" (identifier "sVar4") (= "=") (call_expression "strlen(*(char **)(param_2 + 8))" (identifier "strlen") (argument_list "(*(char **)(param_2 + 8))" (( "(") (pointer_expression "*(char **)(param_2 + 8)" (* "*") (cast_expression "(char **)(param_2 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "sVar5 = strlen(__s_00);" (assignment_expression "sVar5 = strlen(__s_00)" (identifier "sVar5") (= "=") (call_expression "strlen(__s_00)" (identifier "strlen") (argument_list "(__s_00)" (( "(") (identifier "__s_00") () ")")))) (; ";")) (if_statement "if ((bVar1 & 2) == 0) {\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }\n    else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" (if "if") (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      sVar6 = strlen(param_1);\n      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);\n      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" ({ "{") (expression_statement "sVar6 = strlen(param_1);" (assignment_expression "sVar6 = strlen(param_1)" (identifier "sVar6") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "__s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);" (assignment_expression "__s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6)" (identifier "__s") (= "=") (cast_expression "(char *)xmalloc(sVar4 + sVar5 + 8 + sVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + sVar5 + 8 + sVar6)" (identifier "xmalloc") (argument_list "(sVar4 + sVar5 + 8 + sVar6)" (( "(") (binary_expression "sVar4 + sVar5 + 8 + sVar6" (binary_expression "sVar4 + sVar5 + 8" (binary_expression "sVar4 + sVar5" (identifier "sVar4") (+ "+") (identifier "sVar5")) (+ "+") (number_literal "8")) (+ "+") (identifier "sVar6")) () ")"))))) (; ";")) (expression_statement "sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);" (call_expression "sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1)" (identifier "sprintf") (argument_list "(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1)" (( "(") (identifier "__s") (, ",") (string_literal ""%s/lib%s%s.so"" (" """) (string_content "%s/lib%s%s.so") (" """)) (, ",") (pointer_expression "*(undefined8 *)(param_2 + 8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "__s_00") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "iVar2 = FUN_00129b00(__s,param_3);" (assignment_expression "iVar2 = FUN_00129b00(__s,param_3)" (identifier "iVar2") (= "=") (call_expression "FUN_00129b00(__s,param_3)" (identifier "FUN_00129b00") (argument_list "(__s,param_3)" (( "(") (identifier "__s") (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" (else "else") (compound_statement "{\n      __s = (char *)xmalloc(sVar4 + sVar5 + 2);\n      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);\n      iVar2 = FUN_00129b00(__s,param_3);\n    }" ({ "{") (expression_statement "__s = (char *)xmalloc(sVar4 + sVar5 + 2);" (assignment_expression "__s = (char *)xmalloc(sVar4 + sVar5 + 2)" (identifier "__s") (= "=") (cast_expression "(char *)xmalloc(sVar4 + sVar5 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + sVar5 + 2)" (identifier "xmalloc") (argument_list "(sVar4 + sVar5 + 2)" (( "(") (binary_expression "sVar4 + sVar5 + 2" (binary_expression "sVar4 + sVar5" (identifier "sVar4") (+ "+") (identifier "sVar5")) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);" (call_expression "sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00)" (identifier "sprintf") (argument_list "(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00)" (( "(") (identifier "__s") (, ",") (string_literal ""%s/%s"" (" """) (string_content "%s/%s") (" """)) (, ",") (pointer_expression "*(undefined8 *)(param_2 + 8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "__s_00") () ")"))) (; ";")) (expression_statement "iVar2 = FUN_00129b00(__s,param_3);" (assignment_expression "iVar2 = FUN_00129b00(__s,param_3)" (identifier "iVar2") (= "=") (call_expression "FUN_00129b00(__s,param_3)" (identifier "FUN_00129b00") (argument_list "(__s,param_3)" (( "(") (identifier "__s") (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar2 == 0) {\n      free(__s);\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      free(__s);\n      return 0;\n    }" ({ "{") (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(char **)(param_3 + 0x10) = __s;" (assignment_expression "*(char **)(param_3 + 0x10) = __s" (pointer_expression "*(char **)(param_3 + 0x10)" (* "*") (cast_expression "(char **)(param_3 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "__s")) (; ";")) (expression_statement "iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);" (assignment_expression "iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1)" (identifier "iVar2") (= "=") (call_expression "bfd_check_format(*(undefined8 *)(param_3 + 0x20),1)" (identifier "bfd_check_format") (argument_list "(*(undefined8 *)(param_3 + 0x20),1)" (( "(") (pointer_expression "*(undefined8 *)(param_3 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }" (if "if") (parenthesized_expression "((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0))" (( "(") (binary_expression "(iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)" (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8)" (( "(") (binary_expression "*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8" (pointer_expression "*(byte *)(*(long *)(param_3 + 0x20) + 0x45)" (* "*") (cast_expression "(byte *)(*(long *)(param_3 + 0x20) + 0x45)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 0x20) + 0x45)" (( "(") (binary_expression "*(long *)(param_3 + 0x20) + 0x45" (pointer_expression "*(long *)(param_3 + 0x20)" (* "*") (cast_expression "(long *)(param_3 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "0x45")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      bVar1 = *(byte *)(param_3 + 0x48);\n      if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }\n      if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }\n      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);\n      uVar3 = 1;\n    }" ({ "{") (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_3 + 0x48)" (* "*") (cast_expression "(byte *)(param_3 + 0x48)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x48)" (( "(") (binary_expression "param_3 + 0x48" (identifier "param_3") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (if_statement "if ((bVar1 & 5) != 5) {\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }" (if "if") (parenthesized_expression "((bVar1 & 5) != 5)" (( "(") (binary_expression "(bVar1 & 5) != 5" (parenthesized_expression "(bVar1 & 5)" (( "(") (binary_expression "bVar1 & 5" (identifier "bVar1") (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n        FUN_00129440("eelf_l1om.c",0x6f5);\n        bVar1 = *(byte *)(param_3 + 0x48);\n      }" ({ "{") (expression_statement "FUN_00129440("eelf_l1om.c",0x6f5);" (call_expression "FUN_00129440("eelf_l1om.c",0x6f5)" (identifier "FUN_00129440") (argument_list "("eelf_l1om.c",0x6f5)" (( "(") (string_literal ""eelf_l1om.c"" (" """) (string_content "eelf_l1om.c") (" """)) (, ",") (number_literal "0x6f5") () ")"))) (; ";")) (expression_statement "bVar1 = *(byte *)(param_3 + 0x48);" (assignment_expression "bVar1 = *(byte *)(param_3 + 0x48)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_3 + 0x48)" (* "*") (cast_expression "(byte *)(param_3 + 0x48)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x48)" (( "(") (binary_expression "param_3 + 0x48" (identifier "param_3") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((bVar1 & 2) == 0) {\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }" (if "if") (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));\n      }" ({ "{") (expression_statement "__s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));" (assignment_expression "__s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10))" (identifier "__s_00") (= "=") (cast_expression "(char *)lbasename(*(undefined8 *)(param_3 + 0x10))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "lbasename(*(undefined8 *)(param_3 + 0x10))" (identifier "lbasename") (argument_list "(*(undefined8 *)(param_3 + 0x10))" (( "(") (pointer_expression "*(undefined8 *)(param_3 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) () ")"))))) (; ";")) (} "}"))) (expression_statement "bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);" (call_expression "bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00)" (identifier "bfd_elf_set_dt_needed_name") (argument_list "(*(undefined8 *)(param_3 + 0x20),__s_00)" (( "(") (pointer_expression "*(undefined8 *)(param_3 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "__s_00") () ")"))) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

type_1
function_1
          (char *arch,type_2 *search,type_3 *entry)

{
  type_4 lVar1;
  type_5 var_11;
  type_1 bVar3;
  int var_8;
  size_t var_3;
  size_t var_4;
  size_t var_5;
  char *__s;
  char *__s_00;
  
  bVar3 = 0;
  lVar1 = entry->flags;
  if ((type_6  [16])((type_6  [16])lVar1 & (type_6  [16])0x1) != (type_6  [16])0x0)
  {
    __s_00 = entry->filename;
    var_3 = var_1(search->name);
    var_4 = var_1(__s_00);
    if ((type_6  [16])((type_6  [16])lVar1 & (type_6  [16])0x2) == (type_6  [16])0x0
       ) {
      var_5 = var_1(arch);
      __s = (char *)var_2(var_3 + var_4 + 8 + var_5);
      var_6(__s,"%s/lib%s%s.so",search->name,__s_00,arch);
      var_8 = var_7(__s,entry);
    }
    else {
      __s = (char *)var_2(var_3 + var_4 + 2);
      var_6(__s,"%s/%s",search->name,__s_00);
      var_8 = var_7(__s,entry);
    }
    if (var_8 == 0) {
      var_9(__s);
      return 0;
    }
    entry->filename = __s;
    var_8 = var_10(entry->the_bfd,1);
    bVar3 = 1;
    if ((var_8 != 0) && ((entry->the_bfd->field_0x45 & 8) != 0)) {
      var_11 = *(type_5 *)&entry->flags;
      if ((var_11 & 5) != 5) {
        var_12("eelf_l1om.c",0x6f5);
        var_11 = *(type_5 *)&entry->flags;
      }
      if ((var_11 & 2) == 0) {
        __s_00 = (char *)var_13(entry->filename);
      }
      var_14(entry->the_bfd,__s_00);
      bVar3 = 1;
    }
  }
  return bVar3;
}


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

undefined4 MASKED(char *param_1,long param_2,long param_3)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  size_t sVar4;
  size_t sVar5;
  size_t sVar6;
  char *__s;
  char *__s_00;
  
  uVar3 = 0;
  bVar1 = *(byte *)(param_3 + 0x48);
  if ((bVar1 & 1) != 0) {
    __s_00 = *(char **)(param_3 + 0x10);
    sVar4 = strlen(*(char **)(param_2 + 8));
    sVar5 = strlen(__s_00);
    if ((bVar1 & 2) == 0) {
      sVar6 = strlen(param_1);
      __s = (char *)xmalloc(sVar4 + sVar5 + 8 + sVar6);
      sprintf(__s,"%s/lib%s%s.so",*(undefined8 *)(param_2 + 8),__s_00,param_1);
      iVar2 = FUN_00129b00(__s,param_3);
    }
    else {
      __s = (char *)xmalloc(sVar4 + sVar5 + 2);
      sprintf(__s,"%s/%s",*(undefined8 *)(param_2 + 8),__s_00);
      iVar2 = FUN_00129b00(__s,param_3);
    }
    if (iVar2 == 0) {
      free(__s);
      return 0;
    }
    *(char **)(param_3 + 0x10) = __s;
    iVar2 = bfd_check_format(*(undefined8 *)(param_3 + 0x20),1);
    uVar3 = 1;
    if ((iVar2 != 0) && ((*(byte *)(*(long *)(param_3 + 0x20) + 0x45) & 8) != 0)) {
      bVar1 = *(byte *)(param_3 + 0x48);
      if ((bVar1 & 5) != 5) {
        FUN_00129440("eelf_l1om.c",0x6f5);
        bVar1 = *(byte *)(param_3 + 0x48);
      }
      if ((bVar1 & 2) == 0) {
        __s_00 = (char *)lbasename(*(undefined8 *)(param_3 + 0x10));
      }
      bfd_elf_set_dt_needed_name(*(undefined8 *)(param_3 + 0x20),__s_00);
      uVar3 = 1;
    }
  }
  return uVar3;
}

