
void plugin_opt_plugin(char *plugin)

{
  plugin *ppVar1;
  plugin_t *ppVar2;
  plugin_t *__ptr;
  void *pvVar3;
  char *pcVar4;
  undefined8 uVar5;
  
  ppVar1 = plugins_list;
  __ptr = (plugin_t *)xmalloc(0x48);
  __ptr->next = (plugin *)0x0;
  __ptr->name = (char *)0x0;
  *(undefined8 *)&__ptr->cleanup_done = 0;
  __ptr->name = plugin;
  __ptr->dlhandle = (void *)0x0;
  __ptr->args = (plugin_arg_t *)0x0;
  __ptr->n_args = 0;
  __ptr->claim_file_handler = (ld_plugin_claim_file_handler)0x0;
  __ptr->all_symbols_read_handler = (ld_plugin_all_symbols_read_handler)0x0;
  __ptr->cleanup_handler = (ld_plugin_cleanup_handler)0x0;
  pvVar3 = (void *)dlopen(plugin,2);
  __ptr->dlhandle = pvVar3;
  if (pvVar3 == (void *)0x0) {
    uVar5 = dlerror();
    pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);
    einfo(pcVar4,plugin,uVar5);
  }
  if (ppVar1 != (plugin_t *)0x0) {
    pvVar3 = ppVar1->dlhandle;
    while( true ) {
      if (__ptr->dlhandle == pvVar3) {
        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);
        einfo(pcVar4,plugin);
        free(__ptr);
        return;
      }
      ppVar1 = ppVar1->next;
      if (ppVar1 == (plugin *)0x0) break;
      pvVar3 = ppVar1->dlhandle;
    }
  }
  ppVar2 = __ptr;
  last_plugin = __ptr;
  *plugins_tail_chain_ptr = __ptr;
  plugins_tail_chain_ptr = &ppVar2->next;
  last_plugin_args_tail_chain_ptr = &__ptr->args;
  return;
}



void FUN_00128580(undefined8 param_1)

{
  long *plVar1;
  undefined1 (*pauVar2) [16];
  undefined1 (*__ptr) [16];
  long lVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  
  plVar1 = DAT_00182948;
  __ptr = (undefined1 (*) [16])xmalloc(0x48);
  *__ptr = (undefined1  [16])0x0;
  *(undefined8 *)__ptr[4] = 0;
  *(undefined8 *)(*__ptr + 8) = param_1;
  __ptr[1] = (undefined1  [16])0x0;
  __ptr[2] = (undefined1  [16])0x0;
  __ptr[3] = (undefined1  [16])0x0;
  lVar3 = dlopen(param_1,2);
  *(long *)__ptr[1] = lVar3;
  if (lVar3 == 0) {
    uVar4 = dlerror();
    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);
    FUN_001251f0(uVar5,param_1,uVar4);
  }
  if (plVar1 != (long *)0x0) {
    lVar3 = plVar1[2];
    while( true ) {
      if (*(long *)__ptr[1] == lVar3) {
        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);
        FUN_001251f0(uVar4,param_1);
        free(__ptr);
        return;
      }
      plVar1 = (long *)*plVar1;
      if (plVar1 == (long *)0x0) break;
      lVar3 = plVar1[2];
    }
  }
  pauVar2 = __ptr;
  DAT_00182940 = __ptr;
  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;
  PTR_DAT_00181730 = *pauVar2;
  DAT_00182938 = __ptr[1] + 8;
  return;
}


PUSH R13
PUSH R12
MOV R12,RDI
MOV EDI,0x48
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [0x00182948]
CALL 0x00109c50
PXOR XMM0,XMM0
MOV ESI,0x2
MOV RDI,R12
MOVUPS xmmword ptr [RAX],XMM0
MOV RBP,RAX
MOV qword ptr [RAX + 0x40],0x0
MOV qword ptr [RAX + 0x8],R12
MOVUPS xmmword ptr [RAX + 0x10],XMM0
MOVUPS xmmword ptr [RAX + 0x20],XMM0
MOVUPS xmmword ptr [RAX + 0x30],XMM0
CALL 0x00109790
MOV qword ptr [RBP + 0x10],RAX
TEST RAX,RAX
JZ 0x00128668
TEST RBX,RBX
JZ 0x001285fe
MOV RAX,qword ptr [RBP + 0x10]
CMP RAX,qword ptr [RBX + 0x10]
JNZ 0x001285f6
JMP 0x00128630
CMP qword ptr [RBX + 0x10],RAX
JZ 0x00128630
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x001285f0
MOV RAX,qword ptr [0x00181730]
MOV qword ptr [0x00182940],RBP
MOV qword ptr [0x00181730],RBP
MOV qword ptr [RAX],RBP
ADD RBP,0x18
MOV qword ptr [0x00182938],RBP
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
MOV EDX,0x5
LEA RSI,[0x1452b0]
XOR EDI,EDI
CALL 0x001092e0
MOV RSI,R12
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001251f0
ADD RSP,0x8
MOV RDI,RBP
POP RBX
POP RBP
POP R12
POP R13
JMP 0x00109c40
CALL 0x00109c00
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x1451f8]
MOV R13,RAX
CALL 0x001092e0
MOV RDX,R13
MOV RSI,R12
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001251f0
JMP 0x001285da
(translation_unit "void FUN_00128580(undefined8 param_1)\n\n{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}\n\n" (function_definition "void FUN_00128580(undefined8 param_1)\n\n{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}" primitive_type (function_declarator "FUN_00128580(undefined8 param_1)" identifier (parameter_list "(undefined8 param_1)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (expression_statement "undefined1 (*pauVar2) [16];" (subscript_expression "undefined1 (*pauVar2) [16]" (call_expression "undefined1 (*pauVar2)" identifier (argument_list "(*pauVar2)" ( (pointer_expression "*pauVar2" * identifier) ))) [ number_literal ]) ;) (expression_statement "undefined1 (*__ptr) [16];" (subscript_expression "undefined1 (*__ptr) [16]" (call_expression "undefined1 (*__ptr)" identifier (argument_list "(*__ptr)" ( (pointer_expression "*__ptr" * identifier) ))) [ number_literal ]) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (expression_statement "plVar1 = DAT_00182948;" (assignment_expression "plVar1 = DAT_00182948" identifier = identifier) ;) (expression_statement "__ptr = (undefined1 (*) [16])xmalloc(0x48);" (assignment_expression "__ptr = (undefined1 (*) [16])xmalloc(0x48)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x48)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x48)" identifier (argument_list "(0x48)" ( number_literal ))))) ;) (expression_statement "*__ptr = (undefined1  [16])0x0;" (assignment_expression "*__ptr = (undefined1  [16])0x0" (pointer_expression "*__ptr" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(undefined8 *)__ptr[4] = 0;" (assignment_expression "*(undefined8 *)__ptr[4] = 0" (pointer_expression "*(undefined8 *)__ptr[4]" * (cast_expression "(undefined8 *)__ptr[4]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[4]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*(undefined8 *)(*__ptr + 8) = param_1;" (assignment_expression "*(undefined8 *)(*__ptr + 8) = param_1" (pointer_expression "*(undefined8 *)(*__ptr + 8)" * (cast_expression "(undefined8 *)(*__ptr + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + 8)" ( (binary_expression "*__ptr + 8" (pointer_expression "*__ptr" * identifier) + number_literal) )))) = identifier) ;) (expression_statement "__ptr[1] = (undefined1  [16])0x0;" (assignment_expression "__ptr[1] = (undefined1  [16])0x0" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "__ptr[2] = (undefined1  [16])0x0;" (assignment_expression "__ptr[2] = (undefined1  [16])0x0" (subscript_expression "__ptr[2]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "__ptr[3] = (undefined1  [16])0x0;" (assignment_expression "__ptr[3] = (undefined1  [16])0x0" (subscript_expression "__ptr[3]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "lVar3 = dlopen(param_1,2);" (assignment_expression "lVar3 = dlopen(param_1,2)" identifier = (call_expression "dlopen(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (expression_statement "*(long *)__ptr[1] = lVar3;" (assignment_expression "*(long *)__ptr[1] = lVar3" (pointer_expression "*(long *)__ptr[1]" * (cast_expression "(long *)__ptr[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[1]" identifier [ number_literal ]))) = identifier) ;) (if_statement "if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }" { (expression_statement "uVar4 = dlerror();" (assignment_expression "uVar4 = dlerror()" identifier = (call_expression "dlerror()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);" (assignment_expression "uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" identifier (argument_list "(0,"%F%P: %s: error loading plugin: %s\n",5)" ( number_literal , (string_literal ""%F%P: %s: error loading plugin: %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001251f0(uVar5,param_1,uVar4);" (call_expression "FUN_001251f0(uVar5,param_1,uVar4)" identifier (argument_list "(uVar5,param_1,uVar4)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }" if (parenthesized_expression "(plVar1 != (long *)0x0)" ( (binary_expression "plVar1 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }" { (expression_statement "lVar3 = plVar1[2];" (assignment_expression "lVar3 = plVar1[2]" identifier = (subscript_expression "plVar1[2]" identifier [ number_literal ])) ;) (while_statement "while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }" { (if_statement "if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }" if (parenthesized_expression "(*(long *)__ptr[1] == lVar3)" ( (binary_expression "*(long *)__ptr[1] == lVar3" (pointer_expression "*(long *)__ptr[1]" * (cast_expression "(long *)__ptr[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[1]" identifier [ number_literal ]))) == identifier) )) (compound_statement "{\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }" { (expression_statement "uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5)" identifier = (call_expression "dcgettext(0,"%P: %s: duplicated plugin\n",5)" identifier (argument_list "(0,"%P: %s: duplicated plugin\n",5)" ( number_literal , (string_literal ""%P: %s: duplicated plugin\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001251f0(uVar4,param_1);" (call_expression "FUN_001251f0(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (if_statement "if (plVar1 == (long *)0x0) break;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = plVar1[2];" (assignment_expression "lVar3 = plVar1[2]" identifier = (subscript_expression "plVar1[2]" identifier [ number_literal ])) ;) })) })) (expression_statement "pauVar2 = __ptr;" (assignment_expression "pauVar2 = __ptr" identifier = identifier) ;) (expression_statement "DAT_00182940 = __ptr;" (assignment_expression "DAT_00182940 = __ptr" identifier = identifier) ;) (expression_statement "*(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;" (assignment_expression "*(undefined1 (**) [16])PTR_DAT_00181730 = __ptr" (pointer_expression "*(undefined1 (**) [16])PTR_DAT_00181730" * (cast_expression "(undefined1 (**) [16])PTR_DAT_00181730" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_00181730 = *pauVar2;" (assignment_expression "PTR_DAT_00181730 = *pauVar2" identifier = (pointer_expression "*pauVar2" * identifier)) ;) (expression_statement "DAT_00182938 = __ptr[1] + 8;" (assignment_expression "DAT_00182938 = __ptr[1] + 8" identifier = (binary_expression "__ptr[1] + 8" (subscript_expression "__ptr[1]" identifier [ number_literal ]) + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void plugin_opt_plugin(char *plugin)\n\n{\n  plugin *ppVar1;\n  plugin_t *ppVar2;\n  plugin_t *__ptr;\n  void *pvVar3;\n  char *pcVar4;\n  undefined8 uVar5;\n  \n  ppVar1 = plugins_list;\n  __ptr = (plugin_t *)xmalloc(0x48);\n  __ptr->next = (plugin *)0x0;\n  __ptr->name = (char *)0x0;\n  *(undefined8 *)&__ptr->cleanup_done = 0;\n  __ptr->name = plugin;\n  __ptr->dlhandle = (void *)0x0;\n  __ptr->args = (plugin_arg_t *)0x0;\n  __ptr->n_args = 0;\n  __ptr->claim_file_handler = (ld_plugin_claim_file_handler)0x0;\n  __ptr->all_symbols_read_handler = (ld_plugin_all_symbols_read_handler)0x0;\n  __ptr->cleanup_handler = (ld_plugin_cleanup_handler)0x0;\n  pvVar3 = (void *)dlopen(plugin,2);\n  __ptr->dlhandle = pvVar3;\n  if (pvVar3 == (void *)0x0) {\n    uVar5 = dlerror();\n    pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    einfo(pcVar4,plugin,uVar5);\n  }\n  if (ppVar1 != (plugin_t *)0x0) {\n    pvVar3 = ppVar1->dlhandle;\n    while( true ) {\n      if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }\n      ppVar1 = ppVar1->next;\n      if (ppVar1 == (plugin *)0x0) break;\n      pvVar3 = ppVar1->dlhandle;\n    }\n  }\n  ppVar2 = __ptr;\n  last_plugin = __ptr;\n  *plugins_tail_chain_ptr = __ptr;\n  plugins_tail_chain_ptr = &ppVar2->next;\n  last_plugin_args_tail_chain_ptr = &__ptr->args;\n  return;\n}\n\n" (function_definition "void plugin_opt_plugin(char *plugin)\n\n{\n  plugin *ppVar1;\n  plugin_t *ppVar2;\n  plugin_t *__ptr;\n  void *pvVar3;\n  char *pcVar4;\n  undefined8 uVar5;\n  \n  ppVar1 = plugins_list;\n  __ptr = (plugin_t *)xmalloc(0x48);\n  __ptr->next = (plugin *)0x0;\n  __ptr->name = (char *)0x0;\n  *(undefined8 *)&__ptr->cleanup_done = 0;\n  __ptr->name = plugin;\n  __ptr->dlhandle = (void *)0x0;\n  __ptr->args = (plugin_arg_t *)0x0;\n  __ptr->n_args = 0;\n  __ptr->claim_file_handler = (ld_plugin_claim_file_handler)0x0;\n  __ptr->all_symbols_read_handler = (ld_plugin_all_symbols_read_handler)0x0;\n  __ptr->cleanup_handler = (ld_plugin_cleanup_handler)0x0;\n  pvVar3 = (void *)dlopen(plugin,2);\n  __ptr->dlhandle = pvVar3;\n  if (pvVar3 == (void *)0x0) {\n    uVar5 = dlerror();\n    pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    einfo(pcVar4,plugin,uVar5);\n  }\n  if (ppVar1 != (plugin_t *)0x0) {\n    pvVar3 = ppVar1->dlhandle;\n    while( true ) {\n      if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }\n      ppVar1 = ppVar1->next;\n      if (ppVar1 == (plugin *)0x0) break;\n      pvVar3 = ppVar1->dlhandle;\n    }\n  }\n  ppVar2 = __ptr;\n  last_plugin = __ptr;\n  *plugins_tail_chain_ptr = __ptr;\n  plugins_tail_chain_ptr = &ppVar2->next;\n  last_plugin_args_tail_chain_ptr = &__ptr->args;\n  return;\n}" primitive_type (function_declarator "plugin_opt_plugin(char *plugin)" identifier (parameter_list "(char *plugin)" ( (parameter_declaration "char *plugin" primitive_type (pointer_declarator "*plugin" * identifier)) ))) (compound_statement "{\n  plugin *ppVar1;\n  plugin_t *ppVar2;\n  plugin_t *__ptr;\n  void *pvVar3;\n  char *pcVar4;\n  undefined8 uVar5;\n  \n  ppVar1 = plugins_list;\n  __ptr = (plugin_t *)xmalloc(0x48);\n  __ptr->next = (plugin *)0x0;\n  __ptr->name = (char *)0x0;\n  *(undefined8 *)&__ptr->cleanup_done = 0;\n  __ptr->name = plugin;\n  __ptr->dlhandle = (void *)0x0;\n  __ptr->args = (plugin_arg_t *)0x0;\n  __ptr->n_args = 0;\n  __ptr->claim_file_handler = (ld_plugin_claim_file_handler)0x0;\n  __ptr->all_symbols_read_handler = (ld_plugin_all_symbols_read_handler)0x0;\n  __ptr->cleanup_handler = (ld_plugin_cleanup_handler)0x0;\n  pvVar3 = (void *)dlopen(plugin,2);\n  __ptr->dlhandle = pvVar3;\n  if (pvVar3 == (void *)0x0) {\n    uVar5 = dlerror();\n    pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    einfo(pcVar4,plugin,uVar5);\n  }\n  if (ppVar1 != (plugin_t *)0x0) {\n    pvVar3 = ppVar1->dlhandle;\n    while( true ) {\n      if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }\n      ppVar1 = ppVar1->next;\n      if (ppVar1 == (plugin *)0x0) break;\n      pvVar3 = ppVar1->dlhandle;\n    }\n  }\n  ppVar2 = __ptr;\n  last_plugin = __ptr;\n  *plugins_tail_chain_ptr = __ptr;\n  plugins_tail_chain_ptr = &ppVar2->next;\n  last_plugin_args_tail_chain_ptr = &__ptr->args;\n  return;\n}" { (declaration "plugin *ppVar1;" type_identifier (pointer_declarator "*ppVar1" * identifier) ;) (declaration "plugin_t *ppVar2;" type_identifier (pointer_declarator "*ppVar2" * identifier) ;) (declaration "plugin_t *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "void *pvVar3;" primitive_type (pointer_declarator "*pvVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (expression_statement "ppVar1 = plugins_list;" (assignment_expression "ppVar1 = plugins_list" identifier = identifier) ;) (expression_statement "__ptr = (plugin_t *)xmalloc(0x48);" (assignment_expression "__ptr = (plugin_t *)xmalloc(0x48)" identifier = (cast_expression "(plugin_t *)xmalloc(0x48)" ( (type_descriptor "plugin_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x48)" identifier (argument_list "(0x48)" ( number_literal ))))) ;) (expression_statement "__ptr->next = (plugin *)0x0;" (assignment_expression "__ptr->next = (plugin *)0x0" (field_expression "__ptr->next" identifier -> field_identifier) = (cast_expression "(plugin *)0x0" ( (type_descriptor "plugin *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__ptr->name = (char *)0x0;" (assignment_expression "__ptr->name = (char *)0x0" (field_expression "__ptr->name" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined8 *)&__ptr->cleanup_done = 0;" (assignment_expression "*(undefined8 *)&__ptr->cleanup_done = 0" (pointer_expression "*(undefined8 *)&__ptr->cleanup_done" * (cast_expression "(undefined8 *)&__ptr->cleanup_done" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__ptr->cleanup_done" & (field_expression "__ptr->cleanup_done" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "__ptr->name = plugin;" (assignment_expression "__ptr->name = plugin" (field_expression "__ptr->name" identifier -> field_identifier) = identifier) ;) (expression_statement "__ptr->dlhandle = (void *)0x0;" (assignment_expression "__ptr->dlhandle = (void *)0x0" (field_expression "__ptr->dlhandle" identifier -> field_identifier) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__ptr->args = (plugin_arg_t *)0x0;" (assignment_expression "__ptr->args = (plugin_arg_t *)0x0" (field_expression "__ptr->args" identifier -> field_identifier) = (cast_expression "(plugin_arg_t *)0x0" ( (type_descriptor "plugin_arg_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__ptr->n_args = 0;" (assignment_expression "__ptr->n_args = 0" (field_expression "__ptr->n_args" identifier -> field_identifier) = number_literal) ;) (expression_statement "__ptr->claim_file_handler = (ld_plugin_claim_file_handler)0x0;" (assignment_expression "__ptr->claim_file_handler = (ld_plugin_claim_file_handler)0x0" (field_expression "__ptr->claim_file_handler" identifier -> field_identifier) = (cast_expression "(ld_plugin_claim_file_handler)0x0" ( (type_descriptor "ld_plugin_claim_file_handler" type_identifier) ) number_literal)) ;) (expression_statement "__ptr->all_symbols_read_handler = (ld_plugin_all_symbols_read_handler)0x0;" (assignment_expression "__ptr->all_symbols_read_handler = (ld_plugin_all_symbols_read_handler)0x0" (field_expression "__ptr->all_symbols_read_handler" identifier -> field_identifier) = (cast_expression "(ld_plugin_all_symbols_read_handler)0x0" ( (type_descriptor "ld_plugin_all_symbols_read_handler" type_identifier) ) number_literal)) ;) (expression_statement "__ptr->cleanup_handler = (ld_plugin_cleanup_handler)0x0;" (assignment_expression "__ptr->cleanup_handler = (ld_plugin_cleanup_handler)0x0" (field_expression "__ptr->cleanup_handler" identifier -> field_identifier) = (cast_expression "(ld_plugin_cleanup_handler)0x0" ( (type_descriptor "ld_plugin_cleanup_handler" type_identifier) ) number_literal)) ;) (expression_statement "pvVar3 = (void *)dlopen(plugin,2);" (assignment_expression "pvVar3 = (void *)dlopen(plugin,2)" identifier = (cast_expression "(void *)dlopen(plugin,2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dlopen(plugin,2)" identifier (argument_list "(plugin,2)" ( identifier , number_literal ))))) ;) (expression_statement "__ptr->dlhandle = pvVar3;" (assignment_expression "__ptr->dlhandle = pvVar3" (field_expression "__ptr->dlhandle" identifier -> field_identifier) = identifier) ;) (if_statement "if (pvVar3 == (void *)0x0) {\n    uVar5 = dlerror();\n    pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    einfo(pcVar4,plugin,uVar5);\n  }" if (parenthesized_expression "(pvVar3 == (void *)0x0)" ( (binary_expression "pvVar3 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar5 = dlerror();\n    pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    einfo(pcVar4,plugin,uVar5);\n  }" { (expression_statement "uVar5 = dlerror();" (assignment_expression "uVar5 = dlerror()" identifier = (call_expression "dlerror()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);" (assignment_expression "pcVar4 = (char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" identifier (argument_list "(0,"%F%P: %s: error loading plugin: %s\n",5)" ( number_literal , (string_literal ""%F%P: %s: error loading plugin: %s\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar4,plugin,uVar5);" (call_expression "einfo(pcVar4,plugin,uVar5)" identifier (argument_list "(pcVar4,plugin,uVar5)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (ppVar1 != (plugin_t *)0x0) {\n    pvVar3 = ppVar1->dlhandle;\n    while( true ) {\n      if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }\n      ppVar1 = ppVar1->next;\n      if (ppVar1 == (plugin *)0x0) break;\n      pvVar3 = ppVar1->dlhandle;\n    }\n  }" if (parenthesized_expression "(ppVar1 != (plugin_t *)0x0)" ( (binary_expression "ppVar1 != (plugin_t *)0x0" identifier != (cast_expression "(plugin_t *)0x0" ( (type_descriptor "plugin_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pvVar3 = ppVar1->dlhandle;\n    while( true ) {\n      if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }\n      ppVar1 = ppVar1->next;\n      if (ppVar1 == (plugin *)0x0) break;\n      pvVar3 = ppVar1->dlhandle;\n    }\n  }" { (expression_statement "pvVar3 = ppVar1->dlhandle;" (assignment_expression "pvVar3 = ppVar1->dlhandle" identifier = (field_expression "ppVar1->dlhandle" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n      if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }\n      ppVar1 = ppVar1->next;\n      if (ppVar1 == (plugin *)0x0) break;\n      pvVar3 = ppVar1->dlhandle;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }\n      ppVar1 = ppVar1->next;\n      if (ppVar1 == (plugin *)0x0) break;\n      pvVar3 = ppVar1->dlhandle;\n    }" { (if_statement "if (__ptr->dlhandle == pvVar3) {\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }" if (parenthesized_expression "(__ptr->dlhandle == pvVar3)" ( (binary_expression "__ptr->dlhandle == pvVar3" (field_expression "__ptr->dlhandle" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        einfo(pcVar4,plugin);\n        free(__ptr);\n        return;\n      }" { (expression_statement "pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5);" (assignment_expression "pcVar4 = (char *)dcgettext(0,"%P: %s: duplicated plugin\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%P: %s: duplicated plugin\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%P: %s: duplicated plugin\n",5)" identifier (argument_list "(0,"%P: %s: duplicated plugin\n",5)" ( number_literal , (string_literal ""%P: %s: duplicated plugin\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar4,plugin);" (call_expression "einfo(pcVar4,plugin)" identifier (argument_list "(pcVar4,plugin)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "ppVar1 = ppVar1->next;" (assignment_expression "ppVar1 = ppVar1->next" identifier = (field_expression "ppVar1->next" identifier -> field_identifier)) ;) (if_statement "if (ppVar1 == (plugin *)0x0) break;" if (parenthesized_expression "(ppVar1 == (plugin *)0x0)" ( (binary_expression "ppVar1 == (plugin *)0x0" identifier == (cast_expression "(plugin *)0x0" ( (type_descriptor "plugin *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pvVar3 = ppVar1->dlhandle;" (assignment_expression "pvVar3 = ppVar1->dlhandle" identifier = (field_expression "ppVar1->dlhandle" identifier -> field_identifier)) ;) })) })) (expression_statement "ppVar2 = __ptr;" (assignment_expression "ppVar2 = __ptr" identifier = identifier) ;) (expression_statement "last_plugin = __ptr;" (assignment_expression "last_plugin = __ptr" identifier = identifier) ;) (expression_statement "*plugins_tail_chain_ptr = __ptr;" (assignment_expression "*plugins_tail_chain_ptr = __ptr" (pointer_expression "*plugins_tail_chain_ptr" * identifier) = identifier) ;) (expression_statement "plugins_tail_chain_ptr = &ppVar2->next;" (assignment_expression "plugins_tail_chain_ptr = &ppVar2->next" identifier = (pointer_expression "&ppVar2->next" & (field_expression "ppVar2->next" identifier -> field_identifier))) ;) (expression_statement "last_plugin_args_tail_chain_ptr = &__ptr->args;" (assignment_expression "last_plugin_args_tail_chain_ptr = &__ptr->args" identifier = (pointer_expression "&__ptr->args" & (field_expression "__ptr->args" identifier -> field_identifier))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00128580(undefined8 param_1)\n\n{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}\n\n" (function_definition "void FUN_00128580(undefined8 param_1)\n\n{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}" primitive_type (function_declarator "FUN_00128580(undefined8 param_1)" identifier (parameter_list "(undefined8 param_1)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (expression_statement "undefined1 (*pauVar2) [16];" (subscript_expression "undefined1 (*pauVar2) [16]" (call_expression "undefined1 (*pauVar2)" identifier (argument_list "(*pauVar2)" ( (pointer_expression "*pauVar2" * identifier) ))) [ number_literal ]) ;) (expression_statement "undefined1 (*__ptr) [16];" (subscript_expression "undefined1 (*__ptr) [16]" (call_expression "undefined1 (*__ptr)" identifier (argument_list "(*__ptr)" ( (pointer_expression "*__ptr" * identifier) ))) [ number_literal ]) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (expression_statement "plVar1 = DAT_00182948;" (assignment_expression "plVar1 = DAT_00182948" identifier = identifier) ;) (expression_statement "__ptr = (undefined1 (*) [16])xmalloc(0x48);" (assignment_expression "__ptr = (undefined1 (*) [16])xmalloc(0x48)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x48)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x48)" identifier (argument_list "(0x48)" ( number_literal ))))) ;) (expression_statement "*__ptr = (undefined1  [16])0x0;" (assignment_expression "*__ptr = (undefined1  [16])0x0" (pointer_expression "*__ptr" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(undefined8 *)__ptr[4] = 0;" (assignment_expression "*(undefined8 *)__ptr[4] = 0" (pointer_expression "*(undefined8 *)__ptr[4]" * (cast_expression "(undefined8 *)__ptr[4]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[4]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*(undefined8 *)(*__ptr + 8) = param_1;" (assignment_expression "*(undefined8 *)(*__ptr + 8) = param_1" (pointer_expression "*(undefined8 *)(*__ptr + 8)" * (cast_expression "(undefined8 *)(*__ptr + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + 8)" ( (binary_expression "*__ptr + 8" (pointer_expression "*__ptr" * identifier) + number_literal) )))) = identifier) ;) (expression_statement "__ptr[1] = (undefined1  [16])0x0;" (assignment_expression "__ptr[1] = (undefined1  [16])0x0" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "__ptr[2] = (undefined1  [16])0x0;" (assignment_expression "__ptr[2] = (undefined1  [16])0x0" (subscript_expression "__ptr[2]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "__ptr[3] = (undefined1  [16])0x0;" (assignment_expression "__ptr[3] = (undefined1  [16])0x0" (subscript_expression "__ptr[3]" identifier [ number_literal ]) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "lVar3 = dlopen(param_1,2);" (assignment_expression "lVar3 = dlopen(param_1,2)" identifier = (call_expression "dlopen(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (expression_statement "*(long *)__ptr[1] = lVar3;" (assignment_expression "*(long *)__ptr[1] = lVar3" (pointer_expression "*(long *)__ptr[1]" * (cast_expression "(long *)__ptr[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[1]" identifier [ number_literal ]))) = identifier) ;) (if_statement "if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }" { (expression_statement "uVar4 = dlerror();" (assignment_expression "uVar4 = dlerror()" identifier = (call_expression "dlerror()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);" (assignment_expression "uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" identifier (argument_list "(0,"%F%P: %s: error loading plugin: %s\n",5)" ( number_literal , (string_literal ""%F%P: %s: error loading plugin: %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001251f0(uVar5,param_1,uVar4);" (call_expression "FUN_001251f0(uVar5,param_1,uVar4)" identifier (argument_list "(uVar5,param_1,uVar4)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }" if (parenthesized_expression "(plVar1 != (long *)0x0)" ( (binary_expression "plVar1 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }" { (expression_statement "lVar3 = plVar1[2];" (assignment_expression "lVar3 = plVar1[2]" identifier = (subscript_expression "plVar1[2]" identifier [ number_literal ])) ;) (while_statement "while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }" { (if_statement "if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }" if (parenthesized_expression "(*(long *)__ptr[1] == lVar3)" ( (binary_expression "*(long *)__ptr[1] == lVar3" (pointer_expression "*(long *)__ptr[1]" * (cast_expression "(long *)__ptr[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[1]" identifier [ number_literal ]))) == identifier) )) (compound_statement "{\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }" { (expression_statement "uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5)" identifier = (call_expression "dcgettext(0,"%P: %s: duplicated plugin\n",5)" identifier (argument_list "(0,"%P: %s: duplicated plugin\n",5)" ( number_literal , (string_literal ""%P: %s: duplicated plugin\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001251f0(uVar4,param_1);" (call_expression "FUN_001251f0(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (if_statement "if (plVar1 == (long *)0x0) break;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = plVar1[2];" (assignment_expression "lVar3 = plVar1[2]" identifier = (subscript_expression "plVar1[2]" identifier [ number_literal ])) ;) })) })) (expression_statement "pauVar2 = __ptr;" (assignment_expression "pauVar2 = __ptr" identifier = identifier) ;) (expression_statement "DAT_00182940 = __ptr;" (assignment_expression "DAT_00182940 = __ptr" identifier = identifier) ;) (expression_statement "*(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;" (assignment_expression "*(undefined1 (**) [16])PTR_DAT_00181730 = __ptr" (pointer_expression "*(undefined1 (**) [16])PTR_DAT_00181730" * (cast_expression "(undefined1 (**) [16])PTR_DAT_00181730" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_00181730 = *pauVar2;" (assignment_expression "PTR_DAT_00181730 = *pauVar2" identifier = (pointer_expression "*pauVar2" * identifier)) ;) (expression_statement "DAT_00182938 = __ptr[1] + 8;" (assignment_expression "DAT_00182938 = __ptr[1] + 8" identifier = (binary_expression "__ptr[1] + 8" (subscript_expression "__ptr[1]" identifier [ number_literal ]) + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (subscript_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) [ LIT ]) ;) (expression_statement (subscript_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator * (abstract_pointer_declarator *)) )) [ LIT ])) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (return_statement return ;) })))
(function_definition "void FUN_00128580(undefined8 param_1)\n\n{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00128580(undefined8 param_1)" (identifier "FUN_00128580") (parameter_list "(undefined8 param_1)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) () ")"))) (compound_statement "{\n  long *plVar1;\n  undefined1 (*pauVar2) [16];\n  undefined1 (*__ptr) [16];\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  \n  plVar1 = DAT_00182948;\n  __ptr = (undefined1 (*) [16])xmalloc(0x48);\n  *__ptr = (undefined1  [16])0x0;\n  *(undefined8 *)__ptr[4] = 0;\n  *(undefined8 *)(*__ptr + 8) = param_1;\n  __ptr[1] = (undefined1  [16])0x0;\n  __ptr[2] = (undefined1  [16])0x0;\n  __ptr[3] = (undefined1  [16])0x0;\n  lVar3 = dlopen(param_1,2);\n  *(long *)__ptr[1] = lVar3;\n  if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }\n  if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }\n  pauVar2 = __ptr;\n  DAT_00182940 = __ptr;\n  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;\n  PTR_DAT_00181730 = *pauVar2;\n  DAT_00182938 = __ptr[1] + 8;\n  return;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (expression_statement "undefined1 (*pauVar2) [16];" (subscript_expression "undefined1 (*pauVar2) [16]" (call_expression "undefined1 (*pauVar2)" (identifier "undefined1") (argument_list "(*pauVar2)" (( "(") (pointer_expression "*pauVar2" (* "*") (identifier "pauVar2")) () ")"))) ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "undefined1 (*__ptr) [16];" (subscript_expression "undefined1 (*__ptr) [16]" (call_expression "undefined1 (*__ptr)" (identifier "undefined1") (argument_list "(*__ptr)" (( "(") (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) () ")"))) ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (expression_statement "plVar1 = DAT_00182948;" (assignment_expression "plVar1 = DAT_00182948" (identifier "plVar1") (= "=") (identifier "DAT_00182948")) (; ";")) (expression_statement "__ptr = (undefined1 (*) [16])xmalloc(0x48);" (assignment_expression "__ptr = (undefined1 (*) [16])xmalloc(0x48)" (identifier "__ptr") (= "=") (cast_expression "(undefined1 (*) [16])xmalloc(0x48)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (call_expression "xmalloc(0x48)" (identifier "xmalloc") (argument_list "(0x48)" (( "(") (number_literal "0x48") () ")"))))) (; ";")) (expression_statement "*__ptr = (undefined1  [16])0x0;" (assignment_expression "*__ptr = (undefined1  [16])0x0" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(undefined8 *)__ptr[4] = 0;" (assignment_expression "*(undefined8 *)__ptr[4] = 0" (pointer_expression "*(undefined8 *)__ptr[4]" (* "*") (cast_expression "(undefined8 *)__ptr[4]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__ptr[4]" (identifier "__ptr") ([ "[") (number_literal "4") (] "]")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(*__ptr + 8) = param_1;" (assignment_expression "*(undefined8 *)(*__ptr + 8) = param_1" (pointer_expression "*(undefined8 *)(*__ptr + 8)" (* "*") (cast_expression "(undefined8 *)(*__ptr + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*__ptr + 8)" (( "(") (binary_expression "*__ptr + 8" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "__ptr[1] = (undefined1  [16])0x0;" (assignment_expression "__ptr[1] = (undefined1  [16])0x0" (subscript_expression "__ptr[1]" (identifier "__ptr") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "__ptr[2] = (undefined1  [16])0x0;" (assignment_expression "__ptr[2] = (undefined1  [16])0x0" (subscript_expression "__ptr[2]" (identifier "__ptr") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "__ptr[3] = (undefined1  [16])0x0;" (assignment_expression "__ptr[3] = (undefined1  [16])0x0" (subscript_expression "__ptr[3]" (identifier "__ptr") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "lVar3 = dlopen(param_1,2);" (assignment_expression "lVar3 = dlopen(param_1,2)" (identifier "lVar3") (= "=") (call_expression "dlopen(param_1,2)" (identifier "dlopen") (argument_list "(param_1,2)" (( "(") (identifier "param_1") (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "*(long *)__ptr[1] = lVar3;" (assignment_expression "*(long *)__ptr[1] = lVar3" (pointer_expression "*(long *)__ptr[1]" (* "*") (cast_expression "(long *)__ptr[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__ptr[1]" (identifier "__ptr") ([ "[") (number_literal "1") (] "]")))) (= "=") (identifier "lVar3")) (; ";")) (if_statement "if (lVar3 == 0) {\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = dlerror();\n    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);\n    FUN_001251f0(uVar5,param_1,uVar4);\n  }" ({ "{") (expression_statement "uVar4 = dlerror();" (assignment_expression "uVar4 = dlerror()" (identifier "uVar4") (= "=") (call_expression "dlerror()" (identifier "dlerror") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);" (assignment_expression "uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: %s: error loading plugin: %s\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: %s: error loading plugin: %s\n"" (" """) (string_content "%F%P: %s: error loading plugin: %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001251f0(uVar5,param_1,uVar4);" (call_expression "FUN_001251f0(uVar5,param_1,uVar4)" (identifier "FUN_001251f0") (argument_list "(uVar5,param_1,uVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "param_1") (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (if_statement "if (plVar1 != (long *)0x0) {\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }" (if "if") (parenthesized_expression "(plVar1 != (long *)0x0)" (( "(") (binary_expression "plVar1 != (long *)0x0" (identifier "plVar1") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    lVar3 = plVar1[2];\n    while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }\n  }" ({ "{") (expression_statement "lVar3 = plVar1[2];" (assignment_expression "lVar3 = plVar1[2]" (identifier "lVar3") (= "=") (subscript_expression "plVar1[2]" (identifier "plVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (while_statement "while( true ) {\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) break;\n      lVar3 = plVar1[2];\n    }" ({ "{") (if_statement "if (*(long *)__ptr[1] == lVar3) {\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }" (if "if") (parenthesized_expression "(*(long *)__ptr[1] == lVar3)" (( "(") (binary_expression "*(long *)__ptr[1] == lVar3" (pointer_expression "*(long *)__ptr[1]" (* "*") (cast_expression "(long *)__ptr[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__ptr[1]" (identifier "__ptr") ([ "[") (number_literal "1") (] "]")))) (== "==") (identifier "lVar3")) () ")")) (compound_statement "{\n        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);\n        FUN_001251f0(uVar4,param_1);\n        free(__ptr);\n        return;\n      }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"%P: %s: duplicated plugin\n",5)" (identifier "dcgettext") (argument_list "(0,"%P: %s: duplicated plugin\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%P: %s: duplicated plugin\n"" (" """) (string_content "%P: %s: duplicated plugin") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001251f0(uVar4,param_1);" (call_expression "FUN_001251f0(uVar4,param_1)" (identifier "FUN_001251f0") (argument_list "(uVar4,param_1)" (( "(") (identifier "uVar4") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" (identifier "plVar1") (= "=") (cast_expression "(long *)*plVar1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar1" (* "*") (identifier "plVar1")))) (; ";")) (if_statement "if (plVar1 == (long *)0x0) break;" (if "if") (parenthesized_expression "(plVar1 == (long *)0x0)" (( "(") (binary_expression "plVar1 == (long *)0x0" (identifier "plVar1") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = plVar1[2];" (assignment_expression "lVar3 = plVar1[2]" (identifier "lVar3") (= "=") (subscript_expression "plVar1[2]" (identifier "plVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pauVar2 = __ptr;" (assignment_expression "pauVar2 = __ptr" (identifier "pauVar2") (= "=") (identifier "__ptr")) (; ";")) (expression_statement "DAT_00182940 = __ptr;" (assignment_expression "DAT_00182940 = __ptr" (identifier "DAT_00182940") (= "=") (identifier "__ptr")) (; ";")) (expression_statement "*(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;" (assignment_expression "*(undefined1 (**) [16])PTR_DAT_00181730 = __ptr" (pointer_expression "*(undefined1 (**) [16])PTR_DAT_00181730" (* "*") (cast_expression "(undefined1 (**) [16])PTR_DAT_00181730" (( "(") (type_descriptor "undefined1 (**) [16]" (type_identifier "undefined1") (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" (( "(") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (identifier "PTR_DAT_00181730"))) (= "=") (identifier "__ptr")) (; ";")) (expression_statement "PTR_DAT_00181730 = *pauVar2;" (assignment_expression "PTR_DAT_00181730 = *pauVar2" (identifier "PTR_DAT_00181730") (= "=") (pointer_expression "*pauVar2" (* "*") (identifier "pauVar2"))) (; ";")) (expression_statement "DAT_00182938 = __ptr[1] + 8;" (assignment_expression "DAT_00182938 = __ptr[1] + 8" (identifier "DAT_00182938") (= "=") (binary_expression "__ptr[1] + 8" (subscript_expression "__ptr[1]" (identifier "__ptr") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "8"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(char *type_1)

{
  type_1 *var_7;
  type_2 *ppVar2;
  type_2 *__ptr;
  void *var_3;
  char *pcVar4;
  type_3 uVar5;
  
  var_7 = plugins_list;
  __ptr = (type_2 *)var_1(0x48);
  __ptr->next = (type_1 *)0x0;
  __ptr->name = (char *)0x0;
  *(type_3 *)&__ptr->cleanup_done = 0;
  __ptr->name = type_1;
  __ptr->dlhandle = (void *)0x0;
  __ptr->args = (type_4 *)0x0;
  __ptr->n_args = 0;
  __ptr->claim_file_handler = (type_5)0x0;
  __ptr->all_symbols_read_handler = (type_6)0x0;
  __ptr->cleanup_handler = (type_7)0x0;
  var_3 = (void *)var_2(type_1,2);
  __ptr->dlhandle = var_3;
  if (var_3 == (void *)0x0) {
    uVar5 = var_4();
    pcVar4 = (char *)var_5(0,"%F%P: %s: error loading plugin: %s\n",5);
    var_6(pcVar4,type_1,uVar5);
  }
  if (var_7 != (type_2 *)0x0) {
    var_3 = var_7->dlhandle;
    while( true ) {
      if (__ptr->dlhandle == var_3) {
        pcVar4 = (char *)var_5(0,"%P: %s: duplicated plugin\n",5);
        var_6(pcVar4,type_1);
        var_8(__ptr);
        return;
      }
      var_7 = var_7->next;
      if (var_7 == (type_1 *)0x0) break;
      var_3 = var_7->dlhandle;
    }
  }
  ppVar2 = __ptr;
  last_plugin = __ptr;
  *plugins_tail_chain_ptr = __ptr;
  plugins_tail_chain_ptr = &ppVar2->next;
  last_plugin_args_tail_chain_ptr = &__ptr->args;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (subscript_expression argument: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (number_literal))) (expression_statement (subscript_expression argument: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (number_literal))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) size: (number_literal))) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (return_statement))))

void MASKED(undefined8 param_1)

{
  long *plVar1;
  undefined1 (*pauVar2) [16];
  undefined1 (*__ptr) [16];
  long lVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  
  plVar1 = DAT_00182948;
  __ptr = (undefined1 (*) [16])xmalloc(0x48);
  *__ptr = (undefined1  [16])0x0;
  *(undefined8 *)__ptr[4] = 0;
  *(undefined8 *)(*__ptr + 8) = param_1;
  __ptr[1] = (undefined1  [16])0x0;
  __ptr[2] = (undefined1  [16])0x0;
  __ptr[3] = (undefined1  [16])0x0;
  lVar3 = dlopen(param_1,2);
  *(long *)__ptr[1] = lVar3;
  if (lVar3 == 0) {
    uVar4 = dlerror();
    uVar5 = dcgettext(0,"%F%P: %s: error loading plugin: %s\n",5);
    FUN_001251f0(uVar5,param_1,uVar4);
  }
  if (plVar1 != (long *)0x0) {
    lVar3 = plVar1[2];
    while( true ) {
      if (*(long *)__ptr[1] == lVar3) {
        uVar4 = dcgettext(0,"%P: %s: duplicated plugin\n",5);
        FUN_001251f0(uVar4,param_1);
        free(__ptr);
        return;
      }
      plVar1 = (long *)*plVar1;
      if (plVar1 == (long *)0x0) break;
      lVar3 = plVar1[2];
    }
  }
  pauVar2 = __ptr;
  DAT_00182940 = __ptr;
  *(undefined1 (**) [16])PTR_DAT_00181730 = __ptr;
  PTR_DAT_00181730 = *pauVar2;
  DAT_00182938 = __ptr[1] + 8;
  return;
}

