
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_data_plt_x86_64<64> * do_make_data_plt(Target_x86_64_nacl<64> *
   this, Layout * layout, Output_data_got<64,_false> * got, Output_data_got_plt_x86_64 * got_plt,
   Output_data_space * got_irelative, uint plt_count) */

Output_data_plt_x86_64<64> * __thiscall
anon_unknown.dwarf_358c2b::Target_x86_64_nacl<64>::do_make_data_plt
          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,
          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)

{
  Free_list *this_00;
  Output_data_plt_x86_64<64> *pOVar1;
  EVP_PKEY_CTX *ctx;
  
  ctx = (EVP_PKEY_CTX *)((ulong)(plt_count + 1) << 6);
  pOVar1 = (Output_data_plt_x86_64<64> *)operator_new(0xb0);
  *(undefined8 *)&pOVar1->field_0x8 = 0;
  *(undefined8 *)&pOVar1->field_0x28 = 0;
  *(undefined8 *)&pOVar1->field_0x30 = 0x40;
  *(EVP_PKEY_CTX **)&pOVar1->field_0x10 = ctx;
  *(undefined8 *)&pOVar1->field_0x18 = 0xffffffffffffffff;
  pOVar1->count_ = plt_count;
  this_00 = &pOVar1->free_list_;
  pOVar1->tlsdesc_rel_ = (Reloc_section *)0x0;
  pOVar1->irelative_rel_ = (Reloc_section *)0x0;
  pOVar1->field_0x20 = pOVar1->field_0x20 & 0xe0 | 2;
  *(undefined **)pOVar1 = &DAT_00660ba0;
  pOVar1->got_ = got;
  pOVar1->got_plt_ = got_plt;
  pOVar1->got_irelative_ = got_irelative;
  pOVar1->irelative_count_ = 0;
  pOVar1->tlsdesc_got_offset_ = 0xffffffff;
  (pOVar1->free_list_).list_.
  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;
  (pOVar1->free_list_).list_.
  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;
  (pOVar1->free_list_).list_.
  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
  ._M_impl._M_node._M_size = 0;
  (pOVar1->free_list_).last_remove_._M_node = (_List_node_base *)this_00;
  (pOVar1->free_list_).extend_ = false;
  (pOVar1->free_list_).length_ = 0;
  (pOVar1->free_list_).min_hole_ = 0;
                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */
  Output_data_plt_x86_64<64>::init
            ((Output_data_plt_x86_64<64> *)&pOVar1->rel_,(EVP_PKEY_CTX *)layout);
  gold::Free_list::init(this_00,ctx);
  gold::Free_list::remove(this_00,(char *)0x0);
  *(undefined ***)pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0;
  return pOVar1;
}



undefined8 *
FUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
            undefined8 param_5,int param_6)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  long lVar3;
  
  lVar3 = (ulong)(param_6 + 1) << 6;
  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);
  puVar2[1] = 0;
  puVar2[5] = 0;
  puVar2[6] = 0x40;
  puVar2[2] = lVar3;
  puVar2[3] = 0xffffffffffffffff;
  *(int *)(puVar2 + 0xd) = param_6;
  puVar1 = puVar2 + 0xf;
  puVar2[8] = 0;
  puVar2[9] = 0;
  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;
  *puVar2 = &DAT_00660ba0;
  puVar2[10] = param_3;
  puVar2[0xb] = param_4;
  puVar2[0xc] = param_5;
  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;
  puVar2[0x10] = puVar1;
  puVar2[0xf] = puVar1;
  puVar2[0x11] = 0;
  puVar2[0x12] = puVar1;
  *(undefined1 *)(puVar2 + 0x13) = 0;
  puVar2[0x14] = 0;
  puVar2[0x15] = 0;
                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */
  FUN_001ab970(puVar2 + 7,param_2);
  FUN_0037a860(puVar1,lVar3,0);
  FUN_0037a8d0(puVar1,0,0x40);
  *puVar2 = &PTR_FUN_006607d0;
  return puVar2;
}


PUSH R15
MOV EDI,0xb0
MOV R15,RCX
PUSH R14
MOV R14,R8
PUSH R13
MOV R13,RSI
PUSH R12
PUSH RBP
MOV EBP,R9D
PUSH RBX
LEA R12D,[RBP + 0x1]
SHL R12,0x6
SUB RSP,0x18
MOV qword ptr [RSP + 0x8],RDX
CALL 0x0049cb60
MOV RDX,qword ptr [RSP + 0x8]
MOV RSI,R13
MOV RBX,RAX
MOV qword ptr [RAX + 0x8],0x0
MOV qword ptr [RAX + 0x28],0x0
LEA RDI,[RBX + 0x38]
MOV qword ptr [RAX + 0x30],0x40
MOV qword ptr [RAX + 0x10],R12
MOV qword ptr [RAX + 0x18],-0x1
MOVZX EAX,byte ptr [RAX + 0x20]
MOV dword ptr [RBX + 0x68],EBP
LEA RBP,[RBX + 0x78]
AND EAX,0xffffffe0
MOV qword ptr [RBX + 0x40],0x0
OR EAX,0x2
MOV qword ptr [RBX + 0x48],0x0
MOV byte ptr [RBX + 0x20],AL
LEA RAX,[0x660ba0]
MOV qword ptr [RBX],RAX
MOV RAX,-0x100000000
MOV qword ptr [RBX + 0x50],RDX
MOV qword ptr [RBX + 0x58],R15
MOV qword ptr [RBX + 0x60],R14
MOV qword ptr [RBX + 0x6c],RAX
MOV qword ptr [RBX + 0x80],RBP
MOV qword ptr [RBX + 0x78],RBP
MOV qword ptr [RBX + 0x88],0x0
MOV qword ptr [RBX + 0x90],RBP
MOV byte ptr [RBX + 0x98],0x0
MOV qword ptr [RBX + 0xa0],0x0
MOV qword ptr [RBX + 0xa8],0x0
CALL 0x001ab970
XOR EDX,EDX
MOV RSI,R12
MOV RDI,RBP
CALL 0x0037a860
MOV EDX,0x40
XOR ESI,ESI
MOV RDI,RBP
CALL 0x0037a8d0
LEA RAX,[0x6607d0]
MOV qword ptr [RBX],RAX
ADD RSP,0x18
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "undefined8 *\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */\n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}\n\n" (function_definition "undefined8 *\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */\n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}" type_identifier (pointer_declarator "*\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" * (function_declarator "FUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) )))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */\n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar3 = (ulong)(param_6 + 1) << 6;" (assignment_expression "lVar3 = (ulong)(param_6 + 1) << 6" identifier = (binary_expression "(ulong)(param_6 + 1) << 6" (call_expression "(ulong)(param_6 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_6 + 1)" ( (binary_expression "param_6 + 1" identifier + number_literal) ))) << number_literal)) ;) (expression_statement "puVar2 = (undefined8 *)FUN_0049cb60(0xb0);" (assignment_expression "puVar2 = (undefined8 *)FUN_0049cb60(0xb0)" identifier = (cast_expression "(undefined8 *)FUN_0049cb60(0xb0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb60(0xb0)" identifier (argument_list "(0xb0)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0x40;" (assignment_expression "puVar2[6] = 0x40" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = lVar3;" (assignment_expression "puVar2[2] = lVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = 0xffffffffffffffff;" (assignment_expression "puVar2[3] = 0xffffffffffffffff" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar2 + 0xd) = param_6;" (assignment_expression "*(int *)(puVar2 + 0xd) = param_6" (pointer_expression "*(int *)(puVar2 + 0xd)" * (cast_expression "(int *)(puVar2 + 0xd)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0xd)" ( (binary_expression "puVar2 + 0xd" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar1 = puVar2 + 0xf;" (assignment_expression "puVar1 = puVar2 + 0xf" identifier = (binary_expression "puVar2 + 0xf" identifier + number_literal)) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;" (assignment_expression "*(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2" (pointer_expression "*(byte *)(puVar2 + 4)" * (cast_expression "(byte *)(puVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar2 + 4) & 0xe0 | 2" (binary_expression "*(byte *)(puVar2 + 4) & 0xe0" (pointer_expression "*(byte *)(puVar2 + 4)" * (cast_expression "(byte *)(puVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*puVar2 = &DAT_00660ba0;" (assignment_expression "*puVar2 = &DAT_00660ba0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&DAT_00660ba0" & identifier)) ;) (expression_statement "puVar2[10] = param_3;" (assignment_expression "puVar2[10] = param_3" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xb] = param_4;" (assignment_expression "puVar2[0xb] = param_4" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xc] = param_5;" (assignment_expression "puVar2[0xc] = param_5" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;" (assignment_expression "*(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000" (pointer_expression "*(undefined8 *)((long)puVar2 + 0x6c)" * (cast_expression "(undefined8 *)((long)puVar2 + 0x6c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x6c)" ( (binary_expression "(long)puVar2 + 0x6c" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[0x10] = puVar1;" (assignment_expression "puVar2[0x10] = puVar1" (subscript_expression "puVar2[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xf] = puVar1;" (assignment_expression "puVar2[0xf] = puVar1" (subscript_expression "puVar2[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0x11] = 0;" (assignment_expression "puVar2[0x11] = 0" (subscript_expression "puVar2[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0x12] = puVar1;" (assignment_expression "puVar2[0x12] = puVar1" (subscript_expression "puVar2[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x13)" * (cast_expression "(undefined1 *)(puVar2 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13)" ( (binary_expression "puVar2 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[0x14] = 0;" (assignment_expression "puVar2[0x14] = 0" (subscript_expression "puVar2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0x15] = 0;" (assignment_expression "puVar2[0x15] = 0" (subscript_expression "puVar2[0x15]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "FUN_001ab970(puVar2 + 7,param_2);" (call_expression "FUN_001ab970(puVar2 + 7,param_2)" identifier (argument_list "(puVar2 + 7,param_2)" ( (binary_expression "puVar2 + 7" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_0037a860(puVar1,lVar3,0);" (call_expression "FUN_0037a860(puVar1,lVar3,0)" identifier (argument_list "(puVar1,lVar3,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0037a8d0(puVar1,0,0x40);" (call_expression "FUN_0037a8d0(puVar1,0,0x40)" identifier (argument_list "(puVar1,0,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "*puVar2 = &PTR_FUN_006607d0;" (assignment_expression "*puVar2 = &PTR_FUN_006607d0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_006607d0" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Output_data_plt_x86_64<64> * do_make_data_plt(Target_x86_64_nacl<64> *\n   this, Layout * layout, Output_data_got<64,_false> * got, Output_data_got_plt_x86_64 * got_plt,\n   Output_data_space * got_irelative, uint plt_count) */\n\nOutput_data_plt_x86_64<64> * __thiscall\nanon_unknown.dwarf_358c2b::Target_x86_64_nacl<64>::do_make_data_plt\n          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,\n          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)\n\n{\n  Free_list *this_00;\n  Output_data_plt_x86_64<64> *pOVar1;\n  EVP_PKEY_CTX *ctx;\n  \n  ctx = (EVP_PKEY_CTX *)((ulong)(plt_count + 1) << 6);\n  pOVar1 = (Output_data_plt_x86_64<64> *)operator_new(0xb0);\n  *(undefined8 *)&pOVar1->field_0x8 = 0;\n  *(undefined8 *)&pOVar1->field_0x28 = 0;\n  *(undefined8 *)&pOVar1->field_0x30 = 0x40;\n  *(EVP_PKEY_CTX **)&pOVar1->field_0x10 = ctx;\n  *(undefined8 *)&pOVar1->field_0x18 = 0xffffffffffffffff;\n  pOVar1->count_ = plt_count;\n  this_00 = &pOVar1->free_list_;\n  pOVar1->tlsdesc_rel_ = (Reloc_section *)0x0;\n  pOVar1->irelative_rel_ = (Reloc_section *)0x0;\n  pOVar1->field_0x20 = pOVar1->field_0x20 & 0xe0 | 2;\n  *(undefined **)pOVar1 = &DAT_00660ba0;\n  pOVar1->got_ = got;\n  pOVar1->got_plt_ = got_plt;\n  pOVar1->got_irelative_ = got_irelative;\n  pOVar1->irelative_count_ = 0;\n  pOVar1->tlsdesc_got_offset_ = 0xffffffff;\n  (pOVar1->free_list_).list_.\n  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;\n  (pOVar1->free_list_).list_.\n  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;\n  (pOVar1->free_list_).list_.\n  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;\n  (pOVar1->free_list_).last_remove_._M_node = (_List_node_base *)this_00;\n  (pOVar1->free_list_).extend_ = false;\n  (pOVar1->free_list_).length_ = 0;\n  (pOVar1->free_list_).min_hole_ = 0;\n                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */\n  Output_data_plt_x86_64<64>::init\n            ((Output_data_plt_x86_64<64> *)&pOVar1->rel_,(EVP_PKEY_CTX *)layout);\n  gold::Free_list::init(this_00,ctx);\n  gold::Free_list::remove(this_00,(char *)0x0);\n  *(undefined ***)pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0;\n  return pOVar1;\n}\n\n" comment comment comment (expression_statement "Output_data_plt_x86_64<64> * __thiscall\nanon_unknown.dwarf_358c2b::Target_x86_64_nacl<64>::do_make_data_plt\n          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,\n          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)\n\n{\n  Free_list *this_00;" (update_expression "Output_data_plt_x86_64<64> * __thiscall\nanon_unknown.dwarf_358c2b::Target_x86_64_nacl<64>::do_make_data_plt\n          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,\n          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)\n\n{\n  Free_list *this_00" (binary_expression "Output_data_plt_x86_64<64> * __thiscall\nanon_unknown.dwarf_358c2b::Target_x86_64_nacl<64>::do_make_data_plt\n          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,\n          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)\n\n{\n  Free_list *this_00" (binary_expression "Output_data_plt_x86_64<64> * __thiscall\nanon_unknown.dwarf_358c2b::Target_x86_64_nacl<64" (binary_expression "Output_data_plt_x86_64<64> * __thiscall\nanon_unknown.dwarf_358c2b" (binary_expression "Output_data_plt_x86_64<64" identifier < number_literal) > (ERROR "* __thiscall" (pointer_expression "* __thiscall" * identifier)) (field_expression "anon_unknown.dwarf_358c2b" identifier . field_identifier)) (ERROR "::Target_x86_64_nacl" : : identifier) < number_literal) > (ERROR "::do_make_data_plt\n          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,\n          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)\n\n{" : : (call_expression "do_make_data_plt\n          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,\n          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)" identifier (argument_list "(Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,\n          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint plt_count)" ( (binary_expression "Target_x86_64_nacl<64> *this" (binary_expression "Target_x86_64_nacl<64" identifier < number_literal) > (pointer_expression "*this" * identifier)) , (binary_expression "Layout *layout" identifier * identifier) , (binary_expression "Output_data_got<64" identifier < number_literal) , (binary_expression "_false> *got" identifier > (pointer_expression "*got" * identifier)) , (binary_expression "Output_data_got_plt_x86_64 *got_plt" identifier * identifier) , (binary_expression "Output_data_space *got_irelative" identifier * identifier) , (ERROR "uint" identifier) identifier ))) {) (binary_expression "Free_list *this_00" identifier * identifier)) --) ;) (expression_statement "Output_data_plt_x86_64<64> *pOVar1;" (update_expression "Output_data_plt_x86_64<64> *pOVar1" (binary_expression "Output_data_plt_x86_64<64> *pOVar1" (binary_expression "Output_data_plt_x86_64<64" identifier < number_literal) > (pointer_expression "*pOVar1" * identifier)) --) ;) (declaration "EVP_PKEY_CTX *ctx;" type_identifier (pointer_declarator "*ctx" * identifier) ;) (expression_statement "ctx = (EVP_PKEY_CTX *)((ulong)(plt_count + 1) << 6);" (assignment_expression "ctx = (EVP_PKEY_CTX *)((ulong)(plt_count + 1) << 6)" identifier = (cast_expression "(EVP_PKEY_CTX *)((ulong)(plt_count + 1) << 6)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(plt_count + 1) << 6)" ( (binary_expression "(ulong)(plt_count + 1) << 6" (call_expression "(ulong)(plt_count + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(plt_count + 1)" ( (binary_expression "plt_count + 1" identifier + number_literal) ))) << number_literal) )))) ;) (expression_statement "pOVar1 = (Output_data_plt_x86_64<64> *)operator_new(0xb0);" (assignment_expression "pOVar1 = (Output_data_plt_x86_64<64> *)operator_new(0xb0)" identifier = (parenthesized_expression "(Output_data_plt_x86_64<64> *)operator_new(0xb0)" ( (binary_expression "Output_data_plt_x86_64<64> *)operator_new(0xb0)" (binary_expression "Output_data_plt_x86_64<64" identifier < number_literal) > (pointer_expression "*)operator_new(0xb0)" * (ERROR ")" )) (call_expression "operator_new(0xb0)" identifier (argument_list "(0xb0)" ( number_literal ))))) ))) ;) (expression_statement "*(undefined8 *)&pOVar1->field_0x8 = 0;" (assignment_expression "*(undefined8 *)&pOVar1->field_0x8 = 0" (pointer_expression "*(undefined8 *)&pOVar1->field_0x8" * (cast_expression "(undefined8 *)&pOVar1->field_0x8" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar1->field_0x8" & (field_expression "pOVar1->field_0x8" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined8 *)&pOVar1->field_0x28 = 0;" (assignment_expression "*(undefined8 *)&pOVar1->field_0x28 = 0" (pointer_expression "*(undefined8 *)&pOVar1->field_0x28" * (cast_expression "(undefined8 *)&pOVar1->field_0x28" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar1->field_0x28" & (field_expression "pOVar1->field_0x28" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined8 *)&pOVar1->field_0x30 = 0x40;" (assignment_expression "*(undefined8 *)&pOVar1->field_0x30 = 0x40" (pointer_expression "*(undefined8 *)&pOVar1->field_0x30" * (cast_expression "(undefined8 *)&pOVar1->field_0x30" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar1->field_0x30" & (field_expression "pOVar1->field_0x30" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(EVP_PKEY_CTX **)&pOVar1->field_0x10 = ctx;" (assignment_expression "*(EVP_PKEY_CTX **)&pOVar1->field_0x10 = ctx" (pointer_expression "*(EVP_PKEY_CTX **)&pOVar1->field_0x10" * (cast_expression "(EVP_PKEY_CTX **)&pOVar1->field_0x10" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pOVar1->field_0x10" & (field_expression "pOVar1->field_0x10" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(undefined8 *)&pOVar1->field_0x18 = 0xffffffffffffffff;" (assignment_expression "*(undefined8 *)&pOVar1->field_0x18 = 0xffffffffffffffff" (pointer_expression "*(undefined8 *)&pOVar1->field_0x18" * (cast_expression "(undefined8 *)&pOVar1->field_0x18" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar1->field_0x18" & (field_expression "pOVar1->field_0x18" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pOVar1->count_ = plt_count;" (assignment_expression "pOVar1->count_ = plt_count" (field_expression "pOVar1->count_" identifier -> field_identifier) = identifier) ;) (expression_statement "this_00 = &pOVar1->free_list_;" (assignment_expression "this_00 = &pOVar1->free_list_" identifier = (pointer_expression "&pOVar1->free_list_" & (field_expression "pOVar1->free_list_" identifier -> field_identifier))) ;) (expression_statement "pOVar1->tlsdesc_rel_ = (Reloc_section *)0x0;" (assignment_expression "pOVar1->tlsdesc_rel_ = (Reloc_section *)0x0" (field_expression "pOVar1->tlsdesc_rel_" identifier -> field_identifier) = (cast_expression "(Reloc_section *)0x0" ( (type_descriptor "Reloc_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOVar1->irelative_rel_ = (Reloc_section *)0x0;" (assignment_expression "pOVar1->irelative_rel_ = (Reloc_section *)0x0" (field_expression "pOVar1->irelative_rel_" identifier -> field_identifier) = (cast_expression "(Reloc_section *)0x0" ( (type_descriptor "Reloc_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOVar1->field_0x20 = pOVar1->field_0x20 & 0xe0 | 2;" (assignment_expression "pOVar1->field_0x20 = pOVar1->field_0x20 & 0xe0 | 2" (field_expression "pOVar1->field_0x20" identifier -> field_identifier) = (binary_expression "pOVar1->field_0x20 & 0xe0 | 2" (binary_expression "pOVar1->field_0x20 & 0xe0" (field_expression "pOVar1->field_0x20" identifier -> field_identifier) & number_literal) | number_literal)) ;) (expression_statement "*(undefined **)pOVar1 = &DAT_00660ba0;" (assignment_expression "*(undefined **)pOVar1 = &DAT_00660ba0" (pointer_expression "*(undefined **)pOVar1" * (cast_expression "(undefined **)pOVar1" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (pointer_expression "&DAT_00660ba0" & identifier)) ;) (expression_statement "pOVar1->got_ = got;" (assignment_expression "pOVar1->got_ = got" (field_expression "pOVar1->got_" identifier -> field_identifier) = identifier) ;) (expression_statement "pOVar1->got_plt_ = got_plt;" (assignment_expression "pOVar1->got_plt_ = got_plt" (field_expression "pOVar1->got_plt_" identifier -> field_identifier) = identifier) ;) (expression_statement "pOVar1->got_irelative_ = got_irelative;" (assignment_expression "pOVar1->got_irelative_ = got_irelative" (field_expression "pOVar1->got_irelative_" identifier -> field_identifier) = identifier) ;) (expression_statement "pOVar1->irelative_count_ = 0;" (assignment_expression "pOVar1->irelative_count_ = 0" (field_expression "pOVar1->irelative_count_" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar1->tlsdesc_got_offset_ = 0xffffffff;" (assignment_expression "pOVar1->tlsdesc_got_offset_ = 0xffffffff" (field_expression "pOVar1->tlsdesc_got_offset_" identifier -> field_identifier) = number_literal) ;) (ERROR "(pOVar1->free_list_).list_.\n  super__List_base<gold::" (binary_expression "(pOVar1->free_list_).list_.\n  super__List_base<gold" (field_expression "(pOVar1->free_list_).list_.\n  super__List_base" (field_expression "(pOVar1->free_list_).list_" (parenthesized_expression "(pOVar1->free_list_)" ( (field_expression "pOVar1->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier) : :) (labeled_statement "Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;" statement_identifier (ERROR "::Free_list_node,_std::allocator<gold:" : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;" statement_identifier : (ERROR ":" :) (expression_statement "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;" (assignment_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base" (field_expression "Free_list_node>_>\n  ._M_impl._M_node" (field_expression "Free_list_node>_>\n  ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_List_node_base *)this_00" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;))) (ERROR "(pOVar1->free_list_).list_.\n  super__List_base<gold::" (binary_expression "(pOVar1->free_list_).list_.\n  super__List_base<gold" (field_expression "(pOVar1->free_list_).list_.\n  super__List_base" (field_expression "(pOVar1->free_list_).list_" (parenthesized_expression "(pOVar1->free_list_)" ( (field_expression "pOVar1->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier) : :) (labeled_statement "Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;" statement_identifier (ERROR "::Free_list_node,_std::allocator<gold:" : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;" statement_identifier : (ERROR ":" :) (expression_statement "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;" (assignment_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base" (field_expression "Free_list_node>_>\n  ._M_impl._M_node" (field_expression "Free_list_node>_>\n  ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_List_node_base *)this_00" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;))) (ERROR "(pOVar1->free_list_).list_.\n  super__List_base<gold::" (binary_expression "(pOVar1->free_list_).list_.\n  super__List_base<gold" (field_expression "(pOVar1->free_list_).list_.\n  super__List_base" (field_expression "(pOVar1->free_list_).list_" (parenthesized_expression "(pOVar1->free_list_)" ( (field_expression "pOVar1->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier) : :) (labeled_statement "Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;" statement_identifier (ERROR "::Free_list_node,_std::allocator<gold:" : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Free_list::Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;" statement_identifier : (ERROR ":" :) (expression_statement "Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;" (assignment_expression "Free_list_node>_>\n  ._M_impl._M_node._M_size = 0" (field_expression "Free_list_node>_>\n  ._M_impl._M_node._M_size" (field_expression "Free_list_node>_>\n  ._M_impl._M_node" (field_expression "Free_list_node>_>\n  ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;))) (expression_statement "(pOVar1->free_list_).last_remove_._M_node = (_List_node_base *)this_00;" (assignment_expression "(pOVar1->free_list_).last_remove_._M_node = (_List_node_base *)this_00" (field_expression "(pOVar1->free_list_).last_remove_._M_node" (field_expression "(pOVar1->free_list_).last_remove_" (parenthesized_expression "(pOVar1->free_list_)" ( (field_expression "pOVar1->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(_List_node_base *)this_00" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(pOVar1->free_list_).extend_ = false;" (assignment_expression "(pOVar1->free_list_).extend_ = false" (field_expression "(pOVar1->free_list_).extend_" (parenthesized_expression "(pOVar1->free_list_)" ( (field_expression "pOVar1->free_list_" identifier -> field_identifier) )) . field_identifier) = false) ;) (expression_statement "(pOVar1->free_list_).length_ = 0;" (assignment_expression "(pOVar1->free_list_).length_ = 0" (field_expression "(pOVar1->free_list_).length_" (parenthesized_expression "(pOVar1->free_list_)" ( (field_expression "pOVar1->free_list_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(pOVar1->free_list_).min_hole_ = 0;" (assignment_expression "(pOVar1->free_list_).min_hole_ = 0" (field_expression "(pOVar1->free_list_).min_hole_" (parenthesized_expression "(pOVar1->free_list_)" ( (field_expression "pOVar1->free_list_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) comment (ERROR "Output_data_plt_x86_64<64>::init\n            ((Output_data_plt_x86_64<64> *)&pOVar1->rel_,(EVP_PKEY_CTX *)layout);\n  gold::Free_list::init(this_00,ctx);\n  gold::Free_list::remove(this_00,(char *)0x0);\n  *(undefined ***)pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0;\n  return pOVar1;\n}" (binary_expression "Output_data_plt_x86_64<64" identifier < number_literal) > (ERROR "::" : :) identifier ( (ERROR "(Output_data_plt_x86_64<64> *)&pOVar1->rel_,(EVP_PKEY_CTX *)layout);\n  gold::Free_list::init(this_00,ctx);\n  gold::Free_list::remove(this_00,(char *)0x0);\n  *(undefined ***)pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0;\n  return" (parenthesized_expression "(Output_data_plt_x86_64<64> *)&pOVar1->rel_,(EVP_PKEY_CTX *)layout)" ( (comma_expression "Output_data_plt_x86_64<64> *)&pOVar1->rel_,(EVP_PKEY_CTX *)layout" (binary_expression "Output_data_plt_x86_64<64> *)&pOVar1->rel_" (binary_expression "Output_data_plt_x86_64<64" identifier < number_literal) > (pointer_expression "*)&pOVar1->rel_" * (ERROR ")" )) (pointer_expression "&pOVar1->rel_" & (field_expression "pOVar1->rel_" identifier -> field_identifier)))) , (cast_expression "(EVP_PKEY_CTX *)layout" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ; identifier : : identifier : : (call_expression "init(this_00,ctx)" identifier (argument_list "(this_00,ctx)" ( identifier , identifier ))) ; identifier : : identifier : : (binary_expression "remove(this_00,(char *)0x0);\n  *(undefined ***)pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0" (call_expression "remove(this_00,(char *)0x0)" identifier (argument_list "(this_00,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) (ERROR ";" ;) * (cast_expression "(undefined ***)pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (assignment_expression "pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0" identifier = (pointer_expression "&PTR__Output_data_plt_x86_64_nacl_006607d0" & identifier)))) ; return) identifier ; }))
(translation_unit "undefined8 *\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    \n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}\n\n" (function_definition "undefined8 *\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    \n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}" type_identifier (pointer_declarator "*\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" * (function_declarator "FUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) )))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    \n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar3 = (ulong)(param_6 + 1) << 6;" (assignment_expression "lVar3 = (ulong)(param_6 + 1) << 6" identifier = (binary_expression "(ulong)(param_6 + 1) << 6" (call_expression "(ulong)(param_6 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_6 + 1)" ( (binary_expression "param_6 + 1" identifier + number_literal) ))) << number_literal)) ;) (expression_statement "puVar2 = (undefined8 *)FUN_0049cb60(0xb0);" (assignment_expression "puVar2 = (undefined8 *)FUN_0049cb60(0xb0)" identifier = (cast_expression "(undefined8 *)FUN_0049cb60(0xb0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb60(0xb0)" identifier (argument_list "(0xb0)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0x40;" (assignment_expression "puVar2[6] = 0x40" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = lVar3;" (assignment_expression "puVar2[2] = lVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = 0xffffffffffffffff;" (assignment_expression "puVar2[3] = 0xffffffffffffffff" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar2 + 0xd) = param_6;" (assignment_expression "*(int *)(puVar2 + 0xd) = param_6" (pointer_expression "*(int *)(puVar2 + 0xd)" * (cast_expression "(int *)(puVar2 + 0xd)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0xd)" ( (binary_expression "puVar2 + 0xd" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar1 = puVar2 + 0xf;" (assignment_expression "puVar1 = puVar2 + 0xf" identifier = (binary_expression "puVar2 + 0xf" identifier + number_literal)) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;" (assignment_expression "*(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2" (pointer_expression "*(byte *)(puVar2 + 4)" * (cast_expression "(byte *)(puVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar2 + 4) & 0xe0 | 2" (binary_expression "*(byte *)(puVar2 + 4) & 0xe0" (pointer_expression "*(byte *)(puVar2 + 4)" * (cast_expression "(byte *)(puVar2 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*puVar2 = &DAT_00660ba0;" (assignment_expression "*puVar2 = &DAT_00660ba0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&DAT_00660ba0" & identifier)) ;) (expression_statement "puVar2[10] = param_3;" (assignment_expression "puVar2[10] = param_3" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xb] = param_4;" (assignment_expression "puVar2[0xb] = param_4" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xc] = param_5;" (assignment_expression "puVar2[0xc] = param_5" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;" (assignment_expression "*(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000" (pointer_expression "*(undefined8 *)((long)puVar2 + 0x6c)" * (cast_expression "(undefined8 *)((long)puVar2 + 0x6c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x6c)" ( (binary_expression "(long)puVar2 + 0x6c" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[0x10] = puVar1;" (assignment_expression "puVar2[0x10] = puVar1" (subscript_expression "puVar2[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xf] = puVar1;" (assignment_expression "puVar2[0xf] = puVar1" (subscript_expression "puVar2[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0x11] = 0;" (assignment_expression "puVar2[0x11] = 0" (subscript_expression "puVar2[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0x12] = puVar1;" (assignment_expression "puVar2[0x12] = puVar1" (subscript_expression "puVar2[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x13)" * (cast_expression "(undefined1 *)(puVar2 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13)" ( (binary_expression "puVar2 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[0x14] = 0;" (assignment_expression "puVar2[0x14] = 0" (subscript_expression "puVar2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0x15] = 0;" (assignment_expression "puVar2[0x15] = 0" (subscript_expression "puVar2[0x15]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_001ab970(puVar2 + 7,param_2);" (call_expression "FUN_001ab970(puVar2 + 7,param_2)" identifier (argument_list "(puVar2 + 7,param_2)" ( (binary_expression "puVar2 + 7" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_0037a860(puVar1,lVar3,0);" (call_expression "FUN_0037a860(puVar1,lVar3,0)" identifier (argument_list "(puVar1,lVar3,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0037a8d0(puVar1,0,0x40);" (call_expression "FUN_0037a8d0(puVar1,0,0x40)" identifier (argument_list "(puVar1,0,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "*puVar2 = &PTR_FUN_006607d0;" (assignment_expression "*puVar2 = &PTR_FUN_006607d0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_006607d0" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) << LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8 *\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    \n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}" (type_identifier "undefined8") (pointer_declarator "*\nFUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" (* "*") (function_declarator "FUN_001adb50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" (identifier "FUN_001adb50") (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,int param_6)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) () ")")))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  \n  lVar3 = (ulong)(param_6 + 1) << 6;\n  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);\n  puVar2[1] = 0;\n  puVar2[5] = 0;\n  puVar2[6] = 0x40;\n  puVar2[2] = lVar3;\n  puVar2[3] = 0xffffffffffffffff;\n  *(int *)(puVar2 + 0xd) = param_6;\n  puVar1 = puVar2 + 0xf;\n  puVar2[8] = 0;\n  puVar2[9] = 0;\n  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;\n  *puVar2 = &DAT_00660ba0;\n  puVar2[10] = param_3;\n  puVar2[0xb] = param_4;\n  puVar2[0xc] = param_5;\n  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;\n  puVar2[0x10] = puVar1;\n  puVar2[0xf] = puVar1;\n  puVar2[0x11] = 0;\n  puVar2[0x12] = puVar1;\n  *(undefined1 *)(puVar2 + 0x13) = 0;\n  puVar2[0x14] = 0;\n  puVar2[0x15] = 0;\n                    \n  FUN_001ab970(puVar2 + 7,param_2);\n  FUN_0037a860(puVar1,lVar3,0);\n  FUN_0037a8d0(puVar1,0,0x40);\n  *puVar2 = &PTR_FUN_006607d0;\n  return puVar2;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (expression_statement "lVar3 = (ulong)(param_6 + 1) << 6;" (assignment_expression "lVar3 = (ulong)(param_6 + 1) << 6" (identifier "lVar3") (= "=") (binary_expression "(ulong)(param_6 + 1) << 6" (call_expression "(ulong)(param_6 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_6 + 1)" (( "(") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1")) () ")"))) (<< "<<") (number_literal "6"))) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_0049cb60(0xb0);" (assignment_expression "puVar2 = (undefined8 *)FUN_0049cb60(0xb0)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_0049cb60(0xb0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb60(0xb0)" (identifier "FUN_0049cb60") (argument_list "(0xb0)" (( "(") (number_literal "0xb0") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0x40;" (assignment_expression "puVar2[6] = 0x40" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0x40")) (; ";")) (expression_statement "puVar2[2] = lVar3;" (assignment_expression "puVar2[2] = lVar3" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "puVar2[3] = 0xffffffffffffffff;" (assignment_expression "puVar2[3] = 0xffffffffffffffff" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "*(int *)(puVar2 + 0xd) = param_6;" (assignment_expression "*(int *)(puVar2 + 0xd) = param_6" (pointer_expression "*(int *)(puVar2 + 0xd)" (* "*") (cast_expression "(int *)(puVar2 + 0xd)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0xd)" (( "(") (binary_expression "puVar2 + 0xd" (identifier "puVar2") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "puVar1 = puVar2 + 0xf;" (assignment_expression "puVar1 = puVar2 + 0xf" (identifier "puVar1") (= "=") (binary_expression "puVar2 + 0xf" (identifier "puVar2") (+ "+") (number_literal "0xf"))) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;" (assignment_expression "*(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2" (pointer_expression "*(byte *)(puVar2 + 4)" (* "*") (cast_expression "(byte *)(puVar2 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar2 + 4) & 0xe0 | 2" (binary_expression "*(byte *)(puVar2 + 4) & 0xe0" (pointer_expression "*(byte *)(puVar2 + 4)" (* "*") (cast_expression "(byte *)(puVar2 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0xe0")) (| "|") (number_literal "2"))) (; ";")) (expression_statement "*puVar2 = &DAT_00660ba0;" (assignment_expression "*puVar2 = &DAT_00660ba0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&DAT_00660ba0" (& "&") (identifier "DAT_00660ba0"))) (; ";")) (expression_statement "puVar2[10] = param_3;" (assignment_expression "puVar2[10] = param_3" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar2[0xb] = param_4;" (assignment_expression "puVar2[0xb] = param_4" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar2[0xc] = param_5;" (assignment_expression "puVar2[0xc] = param_5" (subscript_expression "puVar2[0xc]" (identifier "puVar2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;" (assignment_expression "*(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000" (pointer_expression "*(undefined8 *)((long)puVar2 + 0x6c)" (* "*") (cast_expression "(undefined8 *)((long)puVar2 + 0x6c)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar2 + 0x6c)" (( "(") (binary_expression "(long)puVar2 + 0x6c" (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0xffffffff00000000")) (; ";")) (expression_statement "puVar2[0x10] = puVar1;" (assignment_expression "puVar2[0x10] = puVar1" (subscript_expression "puVar2[0x10]" (identifier "puVar2") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar2[0xf] = puVar1;" (assignment_expression "puVar2[0xf] = puVar1" (subscript_expression "puVar2[0xf]" (identifier "puVar2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar2[0x11] = 0;" (assignment_expression "puVar2[0x11] = 0" (subscript_expression "puVar2[0x11]" (identifier "puVar2") ([ "[") (number_literal "0x11") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0x12] = puVar1;" (assignment_expression "puVar2[0x12] = puVar1" (subscript_expression "puVar2[0x12]" (identifier "puVar2") ([ "[") (number_literal "0x12") (] "]")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x13)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x13)" (( "(") (binary_expression "puVar2 + 0x13" (identifier "puVar2") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0x14] = 0;" (assignment_expression "puVar2[0x14] = 0" (subscript_expression "puVar2[0x14]" (identifier "puVar2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0x15] = 0;" (assignment_expression "puVar2[0x15] = 0" (subscript_expression "puVar2[0x15]" (identifier "puVar2") ([ "[") (number_literal "0x15") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_001ab970(puVar2 + 7,param_2);" (call_expression "FUN_001ab970(puVar2 + 7,param_2)" (identifier "FUN_001ab970") (argument_list "(puVar2 + 7,param_2)" (( "(") (binary_expression "puVar2 + 7" (identifier "puVar2") (+ "+") (number_literal "7")) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "FUN_0037a860(puVar1,lVar3,0);" (call_expression "FUN_0037a860(puVar1,lVar3,0)" (identifier "FUN_0037a860") (argument_list "(puVar1,lVar3,0)" (( "(") (identifier "puVar1") (, ",") (identifier "lVar3") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0037a8d0(puVar1,0,0x40);" (call_expression "FUN_0037a8d0(puVar1,0,0x40)" (identifier "FUN_0037a8d0") (argument_list "(puVar1,0,0x40)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_006607d0;" (assignment_expression "*puVar2 = &PTR_FUN_006607d0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_006607d0" (& "&") (identifier "PTR_FUN_006607d0"))) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_data_plt_x86_64<64> * do_make_data_plt(Target_x86_64_nacl<64> *
   this, Layout * layout, Output_data_got<64,_false> * got, Output_data_got_plt_x86_64 * got_plt,
   Output_data_space * got_irelative, uint plt_count) */

var_1<64> * __thiscall
anon_unknown.dwarf_358c2b::Target_x86_64_nacl<64>::do_make_data_plt
          (Target_x86_64_nacl<64> *this,Layout *layout,Output_data_got<64,_false> *got,
          Output_data_got_plt_x86_64 *got_plt,Output_data_space *got_irelative,uint var_4)

{
  var_2 *var_3;
  var_1<64> *pOVar1;
  type_1 *ctx;
  
  ctx = (type_1 *)((ulong)(var_4 + 1) << 6);
  pOVar1 = (var_1<64> *)var_5(0xb0);
  *(type_2 *)&pOVar1->field_0x8 = 0;
  *(type_2 *)&pOVar1->field_0x28 = 0;
  *(type_2 *)&pOVar1->field_0x30 = 0x40;
  *(type_1 **)&pOVar1->field_0x10 = ctx;
  *(type_2 *)&pOVar1->field_0x18 = 0xffffffffffffffff;
  pOVar1->count_ = var_4;
  var_3 = &pOVar1->free_list_;
  pOVar1->tlsdesc_rel_ = (type_3 *)0x0;
  pOVar1->irelative_rel_ = (type_3 *)0x0;
  pOVar1->field_0x20 = pOVar1->field_0x20 & 0xe0 | 2;
  *(type_4 **)pOVar1 = &DAT_00660ba0;
  pOVar1->got_ = got;
  pOVar1->got_plt_ = got_plt;
  pOVar1->got_irelative_ = got_irelative;
  pOVar1->irelative_count_ = 0;
  pOVar1->tlsdesc_got_offset_ = 0xffffffff;
  (pOVar1->free_list_).list_.
  super__List_base<gold::Free_list::var_6,_std::allocator<gold::Free_list::var_6>var_7>
  ._M_impl._M_node.super__List_node_base._M_prev = (type_5 *)var_3;
  (pOVar1->free_list_).list_.
  super__List_base<gold::Free_list::var_6,_std::allocator<gold::Free_list::var_6>var_7>
  ._M_impl._M_node.super__List_node_base._M_next = (type_5 *)var_3;
  (pOVar1->free_list_).list_.
  super__List_base<gold::Free_list::var_6,_std::allocator<gold::Free_list::var_6>var_7>
  ._M_impl._M_node._M_size = 0;
  (pOVar1->free_list_).last_remove_._M_node = (type_5 *)var_3;
  (pOVar1->free_list_).extend_ = false;
  (pOVar1->free_list_).length_ = 0;
  (pOVar1->free_list_).min_hole_ = 0;
                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */
  var_1<64>::init
            ((var_1<64> *)&pOVar1->rel_,(type_1 *)layout);
  gold::var_2::init(var_3,ctx);
  gold::var_2::remove(var_3,(char *)0x0);
  *(type_4 ***)pOVar1 = &PTR__Output_data_plt_x86_64_nacl_006607d0;
  return pOVar1;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (return_statement (identifier)))))

undefined8 *
MASKED(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
            undefined8 param_5,int param_6)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  long lVar3;
  
  lVar3 = (ulong)(param_6 + 1) << 6;
  puVar2 = (undefined8 *)FUN_0049cb60(0xb0);
  puVar2[1] = 0;
  puVar2[5] = 0;
  puVar2[6] = 0x40;
  puVar2[2] = lVar3;
  puVar2[3] = 0xffffffffffffffff;
  *(int *)(puVar2 + 0xd) = param_6;
  puVar1 = puVar2 + 0xf;
  puVar2[8] = 0;
  puVar2[9] = 0;
  *(byte *)(puVar2 + 4) = *(byte *)(puVar2 + 4) & 0xe0 | 2;
  *puVar2 = &DAT_00660ba0;
  puVar2[10] = param_3;
  puVar2[0xb] = param_4;
  puVar2[0xc] = param_5;
  *(undefined8 *)((long)puVar2 + 0x6c) = 0xffffffff00000000;
  puVar2[0x10] = puVar1;
  puVar2[0xf] = puVar1;
  puVar2[0x11] = 0;
  puVar2[0x12] = puVar1;
  *(undefined1 *)(puVar2 + 0x13) = 0;
  puVar2[0x14] = 0;
  puVar2[0x15] = 0;
                    /* try { // try from 001adc36 to 001adc56 has its CatchHandler @ 001adc73 */
  FUN_001ab970(puVar2 + 7,param_2);
  FUN_0037a860(puVar1,lVar3,0);
  FUN_0037a8d0(puVar1,0,0x40);
  *puVar2 = &PTR_FUN_006607d0;
  return puVar2;
}

