
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: write<32, false>
   DWARF original prototype: section_offset_type write<32,_false>(Fde * this, uchar * oview,
   section_offset_type output_offset, section_offset_type offset, uint64_t address, uint addralign,
   section_offset_type cie_offset, uchar fde_encoding, Eh_frame_hdr * eh_frame_hdr) */

section_offset_type __thiscall
gold::Fde::write<32,_false>
          (Fde *this,uchar *oview,section_offset_type output_offset,section_offset_type offset,
          uint64_t address,uint addralign,section_offset_type cie_offset,uchar fde_encoding,
          Eh_frame_hdr *eh_frame_hdr)

{
  uint uVar1;
  int *__dest;
  size_t __n;
  Target *pTVar2;
  uint uVar3;
  int iVar4;
  char *format;
  uint uVar5;
  uint64_t paddress;
  off_t psize;
  
  if ((addralign - 1 & offset) != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/ehframe.cc",0x165,"write");
  }
  __n = (this->contents_)._M_string_length;
  uVar1 = __n + 8;
  uVar5 = uVar1;
  if (addralign != 0) {
    uVar5 = __n + 7 + addralign & -addralign;
  }
  *(uint *)(oview + offset) = uVar5 - 4;
  __dest = (int *)(oview + offset + 8);
  *(section_offset_type *)(oview + offset + 4) = (offset + 4) - cie_offset;
  memcpy(__dest,(this->contents_)._M_dataplus._M_p,__n);
  if (this->object_ == (Relobj *)0x0) {
    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/ehframe.cc",0x182,"write");
    }
    pTVar2 = parameters->target_;
    if (pTVar2 == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x69,"target");
    }
    (**(code **)(*(int *)pTVar2 + 0x24))
              (pTVar2,(this->u_).from_object.shndx,__dest,&paddress,&psize);
    uVar3 = ((uint)paddress - 8) - (uint)address;
    iVar4 = uVar3 - offset;
    if ((iVar4 >> 0x1f !=
         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -
          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -
         (uint)(uVar3 < (uint)offset)) || (psize._4_4_ != 0)) {
      format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail");
      gold_warning(format);
    }
    *__dest = iVar4;
    *(int *)(oview + offset + 0xc) = (int)psize;
  }
  if (uVar1 < uVar5) {
    memset(oview + uVar1 + offset,0,(uVar5 - __n) - 8);
  }
  if ((eh_frame_hdr != (Eh_frame_hdr *)0x0) &&
     (eh_frame_hdr->any_unrecognized_eh_frame_sections_ == false)) {
    psize._0_4_ = output_offset + offset;
    psize._4_4_ = CONCAT31(psize._5_3_,fde_encoding);
    std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>::
    emplace_back<std::pair<int,_unsigned_char>_>
              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize);
    return offset + uVar5;
  }
  return offset + uVar5;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,
                int param_7,int param_8,undefined1 param_9,int param_10)

{
  uint uVar1;
  int *__dest;
  size_t __n;
  int *piVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 extraout_ECX;
  uint uVar6;
  uint local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  if ((param_7 - 1U & param_4) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);
  }
  __n = param_1[4];
  uVar1 = __n + 8;
  uVar6 = uVar1;
  if (param_7 != 0) {
    uVar6 = __n + 7 + param_7 & -param_7;
  }
  *(uint *)(param_2 + param_4) = uVar6 - 4;
  __dest = (int *)(param_2 + 8 + param_4);
  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;
  memcpy(__dest,(void *)param_1[3],__n);
  if (*param_1 == 0) {
    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");
    }
    piVar2 = *(int **)(DAT_0038f378 + 0xc);
    if (piVar2 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);
    }
    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);
    uVar3 = (local_2c - 8) - param_5;
    iVar4 = uVar3 - param_4;
    if ((iVar4 >> 0x1f !=
         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -
         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {
      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");
      FUN_000654e0(uVar5);
    }
    *__dest = iVar4;
    *(int *)(param_2 + 0xc + param_4) = local_24;
  }
  if (uVar1 < uVar6) {
    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);
  }
  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {
    local_24 = param_3 + param_4;
    local_20 = CONCAT31(local_20._1_3_,param_9);
    FUN_001b1d30(param_10 + 0x34,&local_24);
    return param_4 + uVar6;
  }
  return param_4 + uVar6;
}


CALL 0x000559e6
ADD EAX,0x1dd27b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV EBP,dword ptr [ESP + 0x68]
MOV EDX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV ESI,dword ptr [ESP + 0x5c]
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x70]
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[EBP + -0x1]
TEST EAX,ESI
JNZ 0x001b1fbc
MOV EAX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [EAX + 0x10]
MOV EBX,EAX
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,EBP
LEA EDI,[EBX + 0x8]
MOV dword ptr [ESP + 0x4],EDI
MOV ECX,EDI
TEST EBP,EBP
JNZ 0x001b1e40
MOV ECX,dword ptr [ESP + 0x54]
LEA EAX,[EDI + -0x4]
SUB ESP,0x4
MOV dword ptr [ECX + ESI*0x1],EAX
LEA EAX,[ESI + 0x4]
SUB EAX,dword ptr [ESP + 0x70]
LEA EBP,[ECX + ESI*0x1 + 0x8]
MOV dword ptr [ECX + ESI*0x1 + 0x4],EAX
PUSH dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x58]
PUSH dword ptr [EAX + 0xc]
PUSH EBP
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000295c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x50]
MOV EBX,dword ptr [EAX]
TEST EBX,EBX
JZ 0x001b1ec0
CMP dword ptr [ESP + 0x4],EDI
JC 0x001b1e90
MOV EAX,dword ptr [ESP + 0x74]
TEST EAX,EAX
JZ 0x001b1e35
MOV EAX,dword ptr [ESP + 0x74]
CMP byte ptr [EAX + 0x40],0x0
JZ 0x001b1e50
ADD ESP,0x3c
LEA EAX,[ESI + EDI*0x1]
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ECX,-0x1
ADD ECX,EBP
NEG EAX
MOV EDI,ECX
AND EDI,EAX
JMP 0x001b1ddb
MOV EAX,dword ptr [ESP + 0x58]
SUB ESP,0x8
ADD EAX,ESI
MOV dword ptr [ESP + 0x30],EAX
MOVZX EAX,byte ptr [ESP + 0x1c]
MOV byte ptr [ESP + 0x34],AL
LEA EAX,[ESP + 0x30]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x80]
ADD EAX,0x34
PUSH EAX
CALL 0x001b1d30
ADD ESP,0x10
LEA EAX,[ESI + EDI*0x1]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [ESP + 0x4]
MOV EAX,EDI
SUB EAX,dword ptr [ESP + 0x10]
SUB ESP,0x4
SUB EAX,0x8
ADD EDX,ESI
ADD EDX,dword ptr [ESP + 0x58]
PUSH EAX
PUSH 0x0
PUSH EDX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000292f0
ADD ESP,0x10
JMP 0x001b1e23
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0xfff0fc18]
CMP dword ptr [EBP],EAX
JZ 0x001b1ef0
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x4]
LEA EAX,[EBX + 0xfff0fd54]
PUSH EAX
LEA EAX,[EBX + 0xfff0fc01]
PUSH 0x182
PUSH EAX
CALL 0x00069d00
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0xfff0fc1c]
CMP dword ptr [EBP + 0x4],EAX
JNZ 0x001b1ece
MOV EAX,dword ptr [ESP]
LEA EAX,[EAX + 0x378]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x001b1fd9
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
MOV EBX,ESI
LEA ECX,[ESP + 0x34]
PUSH ECX
LEA ECX,[ESP + 0x30]
PUSH ECX
PUSH EBP
MOV ECX,dword ptr [ESP + 0x68]
PUSH dword ptr [ECX + 0x4]
PUSH EAX
CALL dword ptr [EDX + 0x24]
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ESP + 0x44]
ADD EAX,-0x8
ADC EDX,-0x1
SUB EAX,dword ptr [ESP + 0x28]
SBB EDX,dword ptr [ESP + 0x2c]
SAR EBX,0x1f
SUB EAX,ESI
MOV ECX,EAX
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x48]
SBB EDX,EBX
MOV dword ptr [ESP + 0x2c],EDX
MOV EBX,EDX
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,ECX
ADD ESP,0x20
CDQ
CMP EDX,EBX
JNZ 0x001b1f7c
MOV EDX,dword ptr [ESP + 0x1c]
TEST EDX,EDX
JZ 0x001b1fa4
SUB ESP,0xc
MOV ECX,dword ptr [ESP + 0xc]
LEA EAX,[ECX + 0xfff0fe80]
MOV EBX,ECX
PUSH EAX
MOV dword ptr [ESP + 0x10],ECX
CALL 0x000293b0
MOV EBX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP],EAX
CALL 0x000654e0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0x18]
MOV dword ptr [EBP],EAX
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [EAX + ESI*0x1 + 0xc],EDX
JMP 0x001b1e1d
PUSH ESI
MOV EBX,dword ptr [ESP + 0x4]
LEA EAX,[EBX + 0xfff0fd54]
PUSH EAX
LEA EAX,[EBX + 0xfff0fc01]
PUSH 0x165
PUSH EAX
CALL 0x00069d00
PUSH ECX
MOV EBX,dword ptr [ESP + 0x4]
LEA EAX,[EBX + 0xfff0fe1c]
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x69
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nint FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)\n\n{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}\n\n" comment comment (function_definition "int FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)\n\n{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}" primitive_type (function_declarator "FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)" identifier (parameter_list "(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "undefined1 param_9" type_identifier identifier) , (parameter_declaration "int param_10" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (if_statement "if ((param_7 - 1U & param_4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }" if (parenthesized_expression "((param_7 - 1U & param_4) != 0)" ( (binary_expression "(param_7 - 1U & param_4) != 0" (parenthesized_expression "(param_7 - 1U & param_4)" ( (binary_expression "param_7 - 1U & param_4" (binary_expression "param_7 - 1U" identifier - number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }" { comment (expression_statement "FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);" (call_expression "FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4)" identifier (argument_list "("../../gold/ehframe.cc",0x165,"write",param_4)" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""write"" " string_content ") , identifier ))) ;) })) (expression_statement "__n = param_1[4];" (assignment_expression "__n = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = __n + 8;" (assignment_expression "uVar1 = __n + 8" identifier = (binary_expression "__n + 8" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }" { (expression_statement "uVar6 = __n + 7 + param_7 & -param_7;" (assignment_expression "uVar6 = __n + 7 + param_7 & -param_7" identifier = (binary_expression "__n + 7 + param_7 & -param_7" (binary_expression "__n + 7 + param_7" (binary_expression "__n + 7" identifier + number_literal) + identifier) & (unary_expression "-param_7" - identifier))) ;) })) (expression_statement "*(uint *)(param_2 + param_4) = uVar6 - 4;" (assignment_expression "*(uint *)(param_2 + param_4) = uVar6 - 4" (pointer_expression "*(uint *)(param_2 + param_4)" * (cast_expression "(uint *)(param_2 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + param_4)" ( (binary_expression "param_2 + param_4" identifier + identifier) )))) = (binary_expression "uVar6 - 4" identifier - number_literal)) ;) (expression_statement "__dest = (int *)(param_2 + 8 + param_4);" (assignment_expression "__dest = (int *)(param_2 + 8 + param_4)" identifier = (cast_expression "(int *)(param_2 + 8 + param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8 + param_4)" ( (binary_expression "param_2 + 8 + param_4" (binary_expression "param_2 + 8" identifier + number_literal) + identifier) )))) ;) (expression_statement "*(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;" (assignment_expression "*(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8" (pointer_expression "*(uint *)(param_2 + 4 + param_4)" * (cast_expression "(uint *)(param_2 + 4 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4 + param_4)" ( (binary_expression "param_2 + 4 + param_4" (binary_expression "param_2 + 4" identifier + number_literal) + identifier) )))) = (binary_expression "(param_4 + 4) - param_8" (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )) - identifier)) ;) (expression_statement "memcpy(__dest,(void *)param_1[3],__n);" (call_expression "memcpy(__dest,(void *)param_1[3],__n)" identifier (argument_list "(__dest,(void *)param_1[3],__n)" ( identifier , (cast_expression "(void *)param_1[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) , identifier ))) ;) (if_statement "if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }" { (if_statement "if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }" if (parenthesized_expression "((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c))" ( (binary_expression "(*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)" (parenthesized_expression "(*__dest != _UNK_0029ec18)" ( (binary_expression "*__dest != _UNK_0029ec18" (pointer_expression "*__dest" * identifier) != identifier) )) || (parenthesized_expression "(__dest[1] != _UNK_0029ec1c)" ( (binary_expression "__dest[1] != _UNK_0029ec1c" (subscript_expression "__dest[1]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }" { comment (expression_statement "FUN_00069d00("../../gold/ehframe.cc",0x182,"write");" (call_expression "FUN_00069d00("../../gold/ehframe.cc",0x182,"write")" identifier (argument_list "("../../gold/ehframe.cc",0x182,"write")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""write"" " string_content ") ))) ;) })) (expression_statement "piVar2 = *(int **)(DAT_0038f378 + 0xc);" (assignment_expression "piVar2 = *(int **)(DAT_0038f378 + 0xc)" identifier = (pointer_expression "*(int **)(DAT_0038f378 + 0xc)" * (cast_expression "(int **)(DAT_0038f378 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }" { comment (expression_statement "FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",extraout_ECX)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;) })) (expression_statement "(**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);" (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_1[1],__dest,&local_2c,&local_24)" ( identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_2c" & identifier) , (pointer_expression "&local_24" & identifier) ))) ;) (expression_statement "uVar3 = (local_2c - 8) - param_5;" (assignment_expression "uVar3 = (local_2c - 8) - param_5" identifier = (binary_expression "(local_2c - 8) - param_5" (parenthesized_expression "(local_2c - 8)" ( (binary_expression "local_2c - 8" identifier - number_literal) )) - identifier)) ;) (expression_statement "iVar4 = uVar3 - param_4;" (assignment_expression "iVar4 = uVar3 - param_4" identifier = (binary_expression "uVar3 - param_4" identifier - identifier)) ;) (if_statement "if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }" if (parenthesized_expression "((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0))" ( (binary_expression "(iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)" (parenthesized_expression "(iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4))" ( (binary_expression "iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)" (binary_expression "iVar4 >> 0x1f" identifier >> number_literal) != (binary_expression "((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)" (parenthesized_expression "((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f))" ( (binary_expression "(((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)" (parenthesized_expression "(((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5))" ( (binary_expression "((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)" (parenthesized_expression "((local_28 + -1 + (uint)(7 < local_2c)) - param_6)" ( (binary_expression "(local_28 + -1 + (uint)(7 < local_2c)) - param_6" (parenthesized_expression "(local_28 + -1 + (uint)(7 < local_2c))" ( (binary_expression "local_28 + -1 + (uint)(7 < local_2c)" (binary_expression "local_28 + -1" identifier + number_literal) + (call_expression "(uint)(7 < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(7 < local_2c)" ( (binary_expression "7 < local_2c" number_literal < identifier) )))) )) - identifier) )) - (call_expression "(uint)(local_2c - 8 < param_5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_2c - 8 < param_5)" ( (binary_expression "local_2c - 8 < param_5" (binary_expression "local_2c - 8" identifier - number_literal) < identifier) )))) )) - (parenthesized_expression "((int)param_4 >> 0x1f)" ( (binary_expression "(int)param_4 >> 0x1f" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) )) - (call_expression "(uint)(uVar3 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < param_4)" ( (binary_expression "uVar3 < param_4" identifier < identifier) ))))) )) || (parenthesized_expression "(local_20 != 0)" ( (binary_expression "local_20 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }" { (expression_statement "uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");" (assignment_expression "uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail")" identifier = (call_expression "gettext("overflow in PLT unwind data; unwinding through PLT may fail")" identifier (argument_list "("overflow in PLT unwind data; unwinding through PLT may fail")" ( (string_literal ""overflow in PLT unwind data; unwinding through PLT may fail"" " string_content ") )))) ;) (expression_statement "FUN_000654e0(uVar5);" (call_expression "FUN_000654e0(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) })) (expression_statement "*__dest = iVar4;" (assignment_expression "*__dest = iVar4" (pointer_expression "*__dest" * identifier) = identifier) ;) (expression_statement "*(int *)(param_2 + 0xc + param_4) = local_24;" (assignment_expression "*(int *)(param_2 + 0xc + param_4) = local_24" (pointer_expression "*(int *)(param_2 + 0xc + param_4)" * (cast_expression "(int *)(param_2 + 0xc + param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc + param_4)" ( (binary_expression "param_2 + 0xc + param_4" (binary_expression "param_2 + 0xc" identifier + number_literal) + identifier) )))) = identifier) ;) })) (if_statement "if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }" if (parenthesized_expression "(uVar1 < uVar6)" ( (binary_expression "uVar1 < uVar6" identifier < identifier) )) (compound_statement "{\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }" { (expression_statement "memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);" (call_expression "memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8)" identifier (argument_list "((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8)" ( (cast_expression "(void *)(uVar1 + param_4 + param_2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + param_4 + param_2)" ( (binary_expression "uVar1 + param_4 + param_2" (binary_expression "uVar1 + param_4" identifier + identifier) + identifier) ))) , number_literal , (binary_expression "(uVar6 - __n) - 8" (parenthesized_expression "(uVar6 - __n)" ( (binary_expression "uVar6 - __n" identifier - identifier) )) - number_literal) ))) ;) })) (if_statement "if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }" if (parenthesized_expression "((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0'))" ( (binary_expression "(param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')" (parenthesized_expression "(param_10 != 0)" ( (binary_expression "param_10 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(param_10 + 0x40) == '\0')" ( (binary_expression "*(char *)(param_10 + 0x40) == '\0'" (pointer_expression "*(char *)(param_10 + 0x40)" * (cast_expression "(char *)(param_10 + 0x40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_10 + 0x40)" ( (binary_expression "param_10 + 0x40" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }" { (expression_statement "local_24 = param_3 + param_4;" (assignment_expression "local_24 = param_3 + param_4" identifier = (binary_expression "param_3 + param_4" identifier + identifier)) ;) (expression_statement "local_20 = CONCAT31(local_20._1_3_,param_9);" (assignment_expression "local_20 = CONCAT31(local_20._1_3_,param_9)" identifier = (call_expression "CONCAT31(local_20._1_3_,param_9)" identifier (argument_list "(local_20._1_3_,param_9)" ( (field_expression "local_20._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "FUN_001b1d30(param_10 + 0x34,&local_24);" (call_expression "FUN_001b1d30(param_10 + 0x34,&local_24)" identifier (argument_list "(param_10 + 0x34,&local_24)" ( (binary_expression "param_10 + 0x34" identifier + number_literal) , (pointer_expression "&local_24" & identifier) ))) ;) (return_statement "return param_4 + uVar6;" return (binary_expression "param_4 + uVar6" identifier + identifier) ;) })) (return_statement "return param_4 + uVar6;" return (binary_expression "param_4 + uVar6" identifier + identifier) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original name: write<32, false>\n   DWARF original prototype: section_offset_type write<32,_false>(Fde * this, uchar * oview,\n   section_offset_type output_offset, section_offset_type offset, uint64_t address, uint addralign,\n   section_offset_type cie_offset, uchar fde_encoding, Eh_frame_hdr * eh_frame_hdr) */\n\nsection_offset_type __thiscall\ngold::Fde::write<32,_false>\n          (Fde *this,uchar *oview,section_offset_type output_offset,section_offset_type offset,\n          uint64_t address,uint addralign,section_offset_type cie_offset,uchar fde_encoding,\n          Eh_frame_hdr *eh_frame_hdr)\n\n{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  Target *pTVar2;\n  uint uVar3;\n  int iVar4;\n  char *format;\n  uint uVar5;\n  uint64_t paddress;\n  off_t psize;\n  \n  if ((addralign - 1 & offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/ehframe.cc",0x165,"write");\n  }\n  __n = (this->contents_)._M_string_length;\n  uVar1 = __n + 8;\n  uVar5 = uVar1;\n  if (addralign != 0) {\n    uVar5 = __n + 7 + addralign & -addralign;\n  }\n  *(uint *)(oview + offset) = uVar5 - 4;\n  __dest = (int *)(oview + offset + 8);\n  *(section_offset_type *)(oview + offset + 4) = (offset + 4) - cie_offset;\n  memcpy(__dest,(this->contents_)._M_dataplus._M_p,__n);\n  if (this->object_ == (Relobj *)0x0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x182,"write");\n    }\n    pTVar2 = parameters->target_;\n    if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    (**(code **)(*(int *)pTVar2 + 0x24))\n              (pTVar2,(this->u_).from_object.shndx,__dest,&paddress,&psize);\n    uVar3 = ((uint)paddress - 8) - (uint)address;\n    iVar4 = uVar3 - offset;\n    if ((iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)) || (psize._4_4_ != 0)) {\n      format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      gold_warning(format);\n    }\n    *__dest = iVar4;\n    *(int *)(oview + offset + 0xc) = (int)psize;\n  }\n  if (uVar1 < uVar5) {\n    memset(oview + uVar1 + offset,0,(uVar5 - __n) - 8);\n  }\n  if ((eh_frame_hdr != (Eh_frame_hdr *)0x0) &&\n     (eh_frame_hdr->any_unrecognized_eh_frame_sections_ == false)) {\n    psize._0_4_ = output_offset + offset;\n    psize._4_4_ = CONCAT31(psize._5_3_,fde_encoding);\n    std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>::\n    emplace_back<std::pair<int,_unsigned_char>_>\n              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize);\n    return offset + uVar5;\n  }\n  return offset + uVar5;\n}\n\n" comment comment comment comment (declaration "section_offset_type __thiscall\ngold::Fde::write<32,_false>\n          (Fde *this,uchar *oview,section_offset_type output_offset,section_offset_type offset,\n          uint64_t address,uint addralign,section_offset_type cie_offset,uchar fde_encoding,\n          Eh_frame_hdr *eh_frame_hdr)\n\n{\n  uint uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Fde::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>\n          (Fde *this,uchar *oview,section_offset_type output_offset,section_offset_type offset,\n          uint64_t address,uint addralign,section_offset_type cie_offset,uchar fde_encoding,\n          Eh_frame_hdr *eh_frame_hdr)\n\n{\n  uint" (function_declarator "_false>\n          (Fde *this,uchar *oview,section_offset_type output_offset,section_offset_type offset,\n          uint64_t address,uint addralign,section_offset_type cie_offset,uchar fde_encoding,\n          Eh_frame_hdr *eh_frame_hdr)" identifier (ERROR ">" >) (parameter_list "(Fde *this,uchar *oview,section_offset_type output_offset,section_offset_type offset,\n          uint64_t address,uint addralign,section_offset_type cie_offset,uchar fde_encoding,\n          Eh_frame_hdr *eh_frame_hdr)" ( (parameter_declaration "Fde *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uchar *oview" type_identifier (pointer_declarator "*oview" * identifier)) , (parameter_declaration "section_offset_type output_offset" type_identifier identifier) , (parameter_declaration "section_offset_type offset" type_identifier identifier) , (parameter_declaration "uint64_t address" primitive_type identifier) , (parameter_declaration "uint addralign" type_identifier identifier) , (parameter_declaration "section_offset_type cie_offset" type_identifier identifier) , (parameter_declaration "uchar fde_encoding" type_identifier identifier) , (parameter_declaration "Eh_frame_hdr *eh_frame_hdr" type_identifier (pointer_declarator "*eh_frame_hdr" * identifier)) ))) { identifier) identifier ;) (declaration "int *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "Target *pTVar2;" type_identifier (pointer_declarator "*pTVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint64_t paddress;" primitive_type identifier ;) (declaration "off_t psize;" type_identifier identifier ;) (if_statement "if ((addralign - 1 & offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/ehframe.cc",0x165,"write");\n  }" if (parenthesized_expression "((addralign - 1 & offset) != 0)" ( (binary_expression "(addralign - 1 & offset) != 0" (parenthesized_expression "(addralign - 1 & offset)" ( (binary_expression "addralign - 1 & offset" (binary_expression "addralign - 1" identifier - number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/ehframe.cc",0x165,"write");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/ehframe.cc",0x165,"write");" (call_expression "do_gold_unreachable("../../gold/ehframe.cc",0x165,"write")" identifier (argument_list "("../../gold/ehframe.cc",0x165,"write")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""write"" " string_content ") ))) ;) })) (expression_statement "__n = (this->contents_)._M_string_length;" (assignment_expression "__n = (this->contents_)._M_string_length" identifier = (field_expression "(this->contents_)._M_string_length" (parenthesized_expression "(this->contents_)" ( (field_expression "this->contents_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar1 = __n + 8;" (assignment_expression "uVar1 = __n + 8" identifier = (binary_expression "__n + 8" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" identifier = identifier) ;) (if_statement "if (addralign != 0) {\n    uVar5 = __n + 7 + addralign & -addralign;\n  }" if (parenthesized_expression "(addralign != 0)" ( (binary_expression "addralign != 0" identifier != number_literal) )) (compound_statement "{\n    uVar5 = __n + 7 + addralign & -addralign;\n  }" { (expression_statement "uVar5 = __n + 7 + addralign & -addralign;" (assignment_expression "uVar5 = __n + 7 + addralign & -addralign" identifier = (binary_expression "__n + 7 + addralign & -addralign" (binary_expression "__n + 7 + addralign" (binary_expression "__n + 7" identifier + number_literal) + identifier) & (unary_expression "-addralign" - identifier))) ;) })) (expression_statement "*(uint *)(oview + offset) = uVar5 - 4;" (assignment_expression "*(uint *)(oview + offset) = uVar5 - 4" (pointer_expression "*(uint *)(oview + offset)" * (cast_expression "(uint *)(oview + offset)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(oview + offset)" ( (binary_expression "oview + offset" identifier + identifier) )))) = (binary_expression "uVar5 - 4" identifier - number_literal)) ;) (expression_statement "__dest = (int *)(oview + offset + 8);" (assignment_expression "__dest = (int *)(oview + offset + 8)" identifier = (cast_expression "(int *)(oview + offset + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(oview + offset + 8)" ( (binary_expression "oview + offset + 8" (binary_expression "oview + offset" identifier + identifier) + number_literal) )))) ;) (expression_statement "*(section_offset_type *)(oview + offset + 4) = (offset + 4) - cie_offset;" (assignment_expression "*(section_offset_type *)(oview + offset + 4) = (offset + 4) - cie_offset" (pointer_expression "*(section_offset_type *)(oview + offset + 4)" * (cast_expression "(section_offset_type *)(oview + offset + 4)" ( (type_descriptor "section_offset_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(oview + offset + 4)" ( (binary_expression "oview + offset + 4" (binary_expression "oview + offset" identifier + identifier) + number_literal) )))) = (binary_expression "(offset + 4) - cie_offset" (parenthesized_expression "(offset + 4)" ( (binary_expression "offset + 4" identifier + number_literal) )) - identifier)) ;) (expression_statement "memcpy(__dest,(this->contents_)._M_dataplus._M_p,__n);" (call_expression "memcpy(__dest,(this->contents_)._M_dataplus._M_p,__n)" identifier (argument_list "(__dest,(this->contents_)._M_dataplus._M_p,__n)" ( identifier , (field_expression "(this->contents_)._M_dataplus._M_p" (field_expression "(this->contents_)._M_dataplus" (parenthesized_expression "(this->contents_)" ( (field_expression "this->contents_" identifier -> field_identifier) )) . field_identifier) . field_identifier) , identifier ))) ;) (if_statement "if (this->object_ == (Relobj *)0x0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x182,"write");\n    }\n    pTVar2 = parameters->target_;\n    if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    (**(code **)(*(int *)pTVar2 + 0x24))\n              (pTVar2,(this->u_).from_object.shndx,__dest,&paddress,&psize);\n    uVar3 = ((uint)paddress - 8) - (uint)address;\n    iVar4 = uVar3 - offset;\n    if ((iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)) || (psize._4_4_ != 0)) {\n      format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      gold_warning(format);\n    }\n    *__dest = iVar4;\n    *(int *)(oview + offset + 0xc) = (int)psize;\n  }" if (parenthesized_expression "(this->object_ == (Relobj *)0x0)" ( (binary_expression "this->object_ == (Relobj *)0x0" (field_expression "this->object_" identifier -> field_identifier) == (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x182,"write");\n    }\n    pTVar2 = parameters->target_;\n    if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    (**(code **)(*(int *)pTVar2 + 0x24))\n              (pTVar2,(this->u_).from_object.shndx,__dest,&paddress,&psize);\n    uVar3 = ((uint)paddress - 8) - (uint)address;\n    iVar4 = uVar3 - offset;\n    if ((iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)) || (psize._4_4_ != 0)) {\n      format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      gold_warning(format);\n    }\n    *__dest = iVar4;\n    *(int *)(oview + offset + 0xc) = (int)psize;\n  }" { (if_statement "if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x182,"write");\n    }" if (parenthesized_expression "((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c))" ( (binary_expression "(*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)" (parenthesized_expression "(*__dest != _UNK_0029ec18)" ( (binary_expression "*__dest != _UNK_0029ec18" (pointer_expression "*__dest" * identifier) != identifier) )) || (parenthesized_expression "(__dest[1] != _UNK_0029ec1c)" ( (binary_expression "__dest[1] != _UNK_0029ec1c" (subscript_expression "__dest[1]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x182,"write");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/ehframe.cc",0x182,"write");" (call_expression "do_gold_unreachable("../../gold/ehframe.cc",0x182,"write")" identifier (argument_list "("../../gold/ehframe.cc",0x182,"write")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""write"" " string_content ") ))) ;) })) (expression_statement "pTVar2 = parameters->target_;" (assignment_expression "pTVar2 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(pTVar2 == (Target *)0x0)" ( (binary_expression "pTVar2 == (Target *)0x0" identifier == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "(**(code **)(*(int *)pTVar2 + 0x24))\n              (pTVar2,(this->u_).from_object.shndx,__dest,&paddress,&psize);" (call_expression "(**(code **)(*(int *)pTVar2 + 0x24))\n              (pTVar2,(this->u_).from_object.shndx,__dest,&paddress,&psize)" (parenthesized_expression "(**(code **)(*(int *)pTVar2 + 0x24))" ( (pointer_expression "**(code **)(*(int *)pTVar2 + 0x24)" * (pointer_expression "*(code **)(*(int *)pTVar2 + 0x24)" * (cast_expression "(code **)(*(int *)pTVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pTVar2 + 0x24)" ( (binary_expression "*(int *)pTVar2 + 0x24" (pointer_expression "*(int *)pTVar2" * (cast_expression "(int *)pTVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pTVar2,(this->u_).from_object.shndx,__dest,&paddress,&psize)" ( identifier , (field_expression "(this->u_).from_object.shndx" (field_expression "(this->u_).from_object" (parenthesized_expression "(this->u_)" ( (field_expression "this->u_" identifier -> field_identifier) )) . field_identifier) . field_identifier) , identifier , (pointer_expression "&paddress" & identifier) , (pointer_expression "&psize" & identifier) ))) ;) (expression_statement "uVar3 = ((uint)paddress - 8) - (uint)address;" (assignment_expression "uVar3 = ((uint)paddress - 8) - (uint)address" identifier = (binary_expression "((uint)paddress - 8) - (uint)address" (parenthesized_expression "((uint)paddress - 8)" ( (binary_expression "(uint)paddress - 8" (cast_expression "(uint)paddress" ( (type_descriptor "uint" type_identifier) ) identifier) - number_literal) )) - (cast_expression "(uint)address" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar4 = uVar3 - offset;" (assignment_expression "iVar4 = uVar3 - offset" identifier = (binary_expression "uVar3 - offset" identifier - identifier)) ;) (if_statement "if ((iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)) || (psize._4_4_ != 0)) {\n      format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      gold_warning(format);\n    }" if (parenthesized_expression "((iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)) || (psize._4_4_ != 0))" ( (binary_expression "(iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)) || (psize._4_4_ != 0)" (parenthesized_expression "(iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset))" ( (binary_expression "iVar4 >> 0x1f !=\n         ((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)" (binary_expression "iVar4 >> 0x1f" identifier >> number_literal) != (binary_expression "((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)) -\n         (uint)(uVar3 < (uint)offset)" (parenthesized_expression "((((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f))" ( (binary_expression "(((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)) - (offset >> 0x1f)" (parenthesized_expression "(((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address))" ( (binary_expression "((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_) -\n          (uint)((uint)paddress - 8 < (uint)address)" (parenthesized_expression "((paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_)" ( (binary_expression "(paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)) - address._4_4_" (parenthesized_expression "(paddress._4_4_ + -1 + (uint)(7 < (uint)paddress))" ( (binary_expression "paddress._4_4_ + -1 + (uint)(7 < (uint)paddress)" (binary_expression "paddress._4_4_ + -1" (field_expression "paddress._4_4_" identifier . field_identifier) + number_literal) + (call_expression "(uint)(7 < (uint)paddress)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(7 < (uint)paddress)" ( (binary_expression "7 < (uint)paddress" number_literal < (cast_expression "(uint)paddress" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) )) - (field_expression "address._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)((uint)paddress - 8 < (uint)address)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)paddress - 8 < (uint)address)" ( (binary_expression "(uint)paddress - 8 < (uint)address" (binary_expression "(uint)paddress - 8" (cast_expression "(uint)paddress" ( (type_descriptor "uint" type_identifier) ) identifier) - number_literal) < (cast_expression "(uint)address" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) )) - (parenthesized_expression "(offset >> 0x1f)" ( (binary_expression "offset >> 0x1f" identifier >> number_literal) ))) )) - (call_expression "(uint)(uVar3 < (uint)offset)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < (uint)offset)" ( (binary_expression "uVar3 < (uint)offset" identifier < (cast_expression "(uint)offset" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) || (parenthesized_expression "(psize._4_4_ != 0)" ( (binary_expression "psize._4_4_ != 0" (field_expression "psize._4_4_" identifier . field_identifier) != number_literal) ))) )) (compound_statement "{\n      format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      gold_warning(format);\n    }" { (expression_statement "format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail");" (assignment_expression "format = (char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail")" identifier = (cast_expression "(char *)gettext("overflow in PLT unwind data; unwinding through PLT may fail")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("overflow in PLT unwind data; unwinding through PLT may fail")" identifier (argument_list "("overflow in PLT unwind data; unwinding through PLT may fail")" ( (string_literal ""overflow in PLT unwind data; unwinding through PLT may fail"" " string_content ") ))))) ;) (expression_statement "gold_warning(format);" (call_expression "gold_warning(format)" identifier (argument_list "(format)" ( identifier ))) ;) })) (expression_statement "*__dest = iVar4;" (assignment_expression "*__dest = iVar4" (pointer_expression "*__dest" * identifier) = identifier) ;) (expression_statement "*(int *)(oview + offset + 0xc) = (int)psize;" (assignment_expression "*(int *)(oview + offset + 0xc) = (int)psize" (pointer_expression "*(int *)(oview + offset + 0xc)" * (cast_expression "(int *)(oview + offset + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(oview + offset + 0xc)" ( (binary_expression "oview + offset + 0xc" (binary_expression "oview + offset" identifier + identifier) + number_literal) )))) = (cast_expression "(int)psize" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (uVar1 < uVar5) {\n    memset(oview + uVar1 + offset,0,(uVar5 - __n) - 8);\n  }" if (parenthesized_expression "(uVar1 < uVar5)" ( (binary_expression "uVar1 < uVar5" identifier < identifier) )) (compound_statement "{\n    memset(oview + uVar1 + offset,0,(uVar5 - __n) - 8);\n  }" { (expression_statement "memset(oview + uVar1 + offset,0,(uVar5 - __n) - 8);" (call_expression "memset(oview + uVar1 + offset,0,(uVar5 - __n) - 8)" identifier (argument_list "(oview + uVar1 + offset,0,(uVar5 - __n) - 8)" ( (binary_expression "oview + uVar1 + offset" (binary_expression "oview + uVar1" identifier + identifier) + identifier) , number_literal , (binary_expression "(uVar5 - __n) - 8" (parenthesized_expression "(uVar5 - __n)" ( (binary_expression "uVar5 - __n" identifier - identifier) )) - number_literal) ))) ;) })) (if_statement "if ((eh_frame_hdr != (Eh_frame_hdr *)0x0) &&\n     (eh_frame_hdr->any_unrecognized_eh_frame_sections_ == false)) {\n    psize._0_4_ = output_offset + offset;\n    psize._4_4_ = CONCAT31(psize._5_3_,fde_encoding);\n    std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>::\n    emplace_back<std::pair<int,_unsigned_char>_>\n              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize);\n    return offset + uVar5;\n  }" if (parenthesized_expression "((eh_frame_hdr != (Eh_frame_hdr *)0x0) &&\n     (eh_frame_hdr->any_unrecognized_eh_frame_sections_ == false))" ( (binary_expression "(eh_frame_hdr != (Eh_frame_hdr *)0x0) &&\n     (eh_frame_hdr->any_unrecognized_eh_frame_sections_ == false)" (parenthesized_expression "(eh_frame_hdr != (Eh_frame_hdr *)0x0)" ( (binary_expression "eh_frame_hdr != (Eh_frame_hdr *)0x0" identifier != (cast_expression "(Eh_frame_hdr *)0x0" ( (type_descriptor "Eh_frame_hdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(eh_frame_hdr->any_unrecognized_eh_frame_sections_ == false)" ( (binary_expression "eh_frame_hdr->any_unrecognized_eh_frame_sections_ == false" (field_expression "eh_frame_hdr->any_unrecognized_eh_frame_sections_" identifier -> field_identifier) == false) ))) )) (compound_statement "{\n    psize._0_4_ = output_offset + offset;\n    psize._4_4_ = CONCAT31(psize._5_3_,fde_encoding);\n    std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>::\n    emplace_back<std::pair<int,_unsigned_char>_>\n              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize);\n    return offset + uVar5;\n  }" { (expression_statement "psize._0_4_ = output_offset + offset;" (assignment_expression "psize._0_4_ = output_offset + offset" (field_expression "psize._0_4_" identifier . field_identifier) = (binary_expression "output_offset + offset" identifier + identifier)) ;) (expression_statement "psize._4_4_ = CONCAT31(psize._5_3_,fde_encoding);" (assignment_expression "psize._4_4_ = CONCAT31(psize._5_3_,fde_encoding)" (field_expression "psize._4_4_" identifier . field_identifier) = (call_expression "CONCAT31(psize._5_3_,fde_encoding)" identifier (argument_list "(psize._5_3_,fde_encoding)" ( (field_expression "psize._5_3_" identifier . field_identifier) , identifier )))) ;) (labeled_statement "std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>::\n    emplace_back<std::pair<int,_unsigned_char>_>\n              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize);" statement_identifier (ERROR "::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>::\n    emplace_back<std:" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>_>_>::\n    emplace_back<std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>::\n    emplace_back<std" (binary_expression "_unsigned_char>_>_>::\n    emplace_back" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier)) :) : (expression_statement "pair<int,_unsigned_char>_>\n              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize);" (comma_expression "pair<int,_unsigned_char>_>\n              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize)" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>\n              (&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize)" (binary_expression "_unsigned_char>_" identifier > identifier) > (parenthesized_expression "(&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize)" ( (comma_expression "&eh_frame_hdr->fde_offsets_,(pair<int,_unsigned_char> *)&psize" (pointer_expression "&eh_frame_hdr->fde_offsets_" & (field_expression "eh_frame_hdr->fde_offsets_" identifier -> field_identifier)) , (binary_expression "(pair<int,_unsigned_char> *)&psize" (parenthesized_expression "(pair<int,_unsigned_char> *)" ( (comma_expression "pair<int,_unsigned_char> *" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char> *" identifier > (pointer_expression "*" * identifier))) )) & identifier)) )))) ;)) (return_statement "return offset + uVar5;" return (binary_expression "offset + uVar5" identifier + identifier) ;) })) (return_statement "return offset + uVar5;" return (binary_expression "offset + uVar5" identifier + identifier) ;) (ERROR "}" }))
(translation_unit "int FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)\n\n{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}\n\n" (function_definition "int FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)\n\n{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}" primitive_type (function_declarator "FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)" identifier (parameter_list "(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "undefined1 param_9" type_identifier identifier) , (parameter_declaration "int param_10" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (if_statement "if ((param_7 - 1U & param_4) != 0) {\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }" if (parenthesized_expression "((param_7 - 1U & param_4) != 0)" ( (binary_expression "(param_7 - 1U & param_4) != 0" (parenthesized_expression "(param_7 - 1U & param_4)" ( (binary_expression "param_7 - 1U & param_4" (binary_expression "param_7 - 1U" identifier - number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }" { (expression_statement "FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);" (call_expression "FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4)" identifier (argument_list "("../../gold/ehframe.cc",0x165,"write",param_4)" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""write"" " string_content ") , identifier ))) ;) })) (expression_statement "__n = param_1[4];" (assignment_expression "__n = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = __n + 8;" (assignment_expression "uVar1 = __n + 8" identifier = (binary_expression "__n + 8" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }" { (expression_statement "uVar6 = __n + 7 + param_7 & -param_7;" (assignment_expression "uVar6 = __n + 7 + param_7 & -param_7" identifier = (binary_expression "__n + 7 + param_7 & -param_7" (binary_expression "__n + 7 + param_7" (binary_expression "__n + 7" identifier + number_literal) + identifier) & (unary_expression "-param_7" - identifier))) ;) })) (expression_statement "*(uint *)(param_2 + param_4) = uVar6 - 4;" (assignment_expression "*(uint *)(param_2 + param_4) = uVar6 - 4" (pointer_expression "*(uint *)(param_2 + param_4)" * (cast_expression "(uint *)(param_2 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + param_4)" ( (binary_expression "param_2 + param_4" identifier + identifier) )))) = (binary_expression "uVar6 - 4" identifier - number_literal)) ;) (expression_statement "__dest = (int *)(param_2 + 8 + param_4);" (assignment_expression "__dest = (int *)(param_2 + 8 + param_4)" identifier = (cast_expression "(int *)(param_2 + 8 + param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8 + param_4)" ( (binary_expression "param_2 + 8 + param_4" (binary_expression "param_2 + 8" identifier + number_literal) + identifier) )))) ;) (expression_statement "*(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;" (assignment_expression "*(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8" (pointer_expression "*(uint *)(param_2 + 4 + param_4)" * (cast_expression "(uint *)(param_2 + 4 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4 + param_4)" ( (binary_expression "param_2 + 4 + param_4" (binary_expression "param_2 + 4" identifier + number_literal) + identifier) )))) = (binary_expression "(param_4 + 4) - param_8" (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )) - identifier)) ;) (expression_statement "memcpy(__dest,(void *)param_1[3],__n);" (call_expression "memcpy(__dest,(void *)param_1[3],__n)" identifier (argument_list "(__dest,(void *)param_1[3],__n)" ( identifier , (cast_expression "(void *)param_1[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) , identifier ))) ;) (if_statement "if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }" { (if_statement "if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }" if (parenthesized_expression "((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c))" ( (binary_expression "(*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)" (parenthesized_expression "(*__dest != _UNK_0029ec18)" ( (binary_expression "*__dest != _UNK_0029ec18" (pointer_expression "*__dest" * identifier) != identifier) )) || (parenthesized_expression "(__dest[1] != _UNK_0029ec1c)" ( (binary_expression "__dest[1] != _UNK_0029ec1c" (subscript_expression "__dest[1]" identifier [ number_literal ]) != identifier) ))) )) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }" { (expression_statement "FUN_00069d00("../../gold/ehframe.cc",0x182,"write");" (call_expression "FUN_00069d00("../../gold/ehframe.cc",0x182,"write")" identifier (argument_list "("../../gold/ehframe.cc",0x182,"write")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""write"" " string_content ") ))) ;) })) (expression_statement "piVar2 = *(int **)(DAT_0038f378 + 0xc);" (assignment_expression "piVar2 = *(int **)(DAT_0038f378 + 0xc)" identifier = (pointer_expression "*(int **)(DAT_0038f378 + 0xc)" * (cast_expression "(int **)(DAT_0038f378 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }" { (expression_statement "FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",extraout_ECX)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;) })) (expression_statement "(**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);" (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" ( (pointer_expression "**(code **)(*piVar2 + 0x24)" * (pointer_expression "*(code **)(*piVar2 + 0x24)" * (cast_expression "(code **)(*piVar2 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x24)" ( (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_1[1],__dest,&local_2c,&local_24)" ( identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_2c" & identifier) , (pointer_expression "&local_24" & identifier) ))) ;) (expression_statement "uVar3 = (local_2c - 8) - param_5;" (assignment_expression "uVar3 = (local_2c - 8) - param_5" identifier = (binary_expression "(local_2c - 8) - param_5" (parenthesized_expression "(local_2c - 8)" ( (binary_expression "local_2c - 8" identifier - number_literal) )) - identifier)) ;) (expression_statement "iVar4 = uVar3 - param_4;" (assignment_expression "iVar4 = uVar3 - param_4" identifier = (binary_expression "uVar3 - param_4" identifier - identifier)) ;) (if_statement "if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }" if (parenthesized_expression "((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0))" ( (binary_expression "(iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)" (parenthesized_expression "(iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4))" ( (binary_expression "iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)" (binary_expression "iVar4 >> 0x1f" identifier >> number_literal) != (binary_expression "((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)" (parenthesized_expression "((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f))" ( (binary_expression "(((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)" (parenthesized_expression "(((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5))" ( (binary_expression "((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)" (parenthesized_expression "((local_28 + -1 + (uint)(7 < local_2c)) - param_6)" ( (binary_expression "(local_28 + -1 + (uint)(7 < local_2c)) - param_6" (parenthesized_expression "(local_28 + -1 + (uint)(7 < local_2c))" ( (binary_expression "local_28 + -1 + (uint)(7 < local_2c)" (binary_expression "local_28 + -1" identifier + number_literal) + (call_expression "(uint)(7 < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(7 < local_2c)" ( (binary_expression "7 < local_2c" number_literal < identifier) )))) )) - identifier) )) - (call_expression "(uint)(local_2c - 8 < param_5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_2c - 8 < param_5)" ( (binary_expression "local_2c - 8 < param_5" (binary_expression "local_2c - 8" identifier - number_literal) < identifier) )))) )) - (parenthesized_expression "((int)param_4 >> 0x1f)" ( (binary_expression "(int)param_4 >> 0x1f" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) )) - (call_expression "(uint)(uVar3 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < param_4)" ( (binary_expression "uVar3 < param_4" identifier < identifier) ))))) )) || (parenthesized_expression "(local_20 != 0)" ( (binary_expression "local_20 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }" { (expression_statement "uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");" (assignment_expression "uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail")" identifier = (call_expression "gettext("overflow in PLT unwind data; unwinding through PLT may fail")" identifier (argument_list "("overflow in PLT unwind data; unwinding through PLT may fail")" ( (string_literal ""overflow in PLT unwind data; unwinding through PLT may fail"" " string_content ") )))) ;) (expression_statement "FUN_000654e0(uVar5);" (call_expression "FUN_000654e0(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) })) (expression_statement "*__dest = iVar4;" (assignment_expression "*__dest = iVar4" (pointer_expression "*__dest" * identifier) = identifier) ;) (expression_statement "*(int *)(param_2 + 0xc + param_4) = local_24;" (assignment_expression "*(int *)(param_2 + 0xc + param_4) = local_24" (pointer_expression "*(int *)(param_2 + 0xc + param_4)" * (cast_expression "(int *)(param_2 + 0xc + param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc + param_4)" ( (binary_expression "param_2 + 0xc + param_4" (binary_expression "param_2 + 0xc" identifier + number_literal) + identifier) )))) = identifier) ;) })) (if_statement "if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }" if (parenthesized_expression "(uVar1 < uVar6)" ( (binary_expression "uVar1 < uVar6" identifier < identifier) )) (compound_statement "{\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }" { (expression_statement "memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);" (call_expression "memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8)" identifier (argument_list "((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8)" ( (cast_expression "(void *)(uVar1 + param_4 + param_2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + param_4 + param_2)" ( (binary_expression "uVar1 + param_4 + param_2" (binary_expression "uVar1 + param_4" identifier + identifier) + identifier) ))) , number_literal , (binary_expression "(uVar6 - __n) - 8" (parenthesized_expression "(uVar6 - __n)" ( (binary_expression "uVar6 - __n" identifier - identifier) )) - number_literal) ))) ;) })) (if_statement "if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }" if (parenthesized_expression "((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0'))" ( (binary_expression "(param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')" (parenthesized_expression "(param_10 != 0)" ( (binary_expression "param_10 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(param_10 + 0x40) == '\0')" ( (binary_expression "*(char *)(param_10 + 0x40) == '\0'" (pointer_expression "*(char *)(param_10 + 0x40)" * (cast_expression "(char *)(param_10 + 0x40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_10 + 0x40)" ( (binary_expression "param_10 + 0x40" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }" { (expression_statement "local_24 = param_3 + param_4;" (assignment_expression "local_24 = param_3 + param_4" identifier = (binary_expression "param_3 + param_4" identifier + identifier)) ;) (expression_statement "local_20 = CONCAT31(local_20._1_3_,param_9);" (assignment_expression "local_20 = CONCAT31(local_20._1_3_,param_9)" identifier = (call_expression "CONCAT31(local_20._1_3_,param_9)" identifier (argument_list "(local_20._1_3_,param_9)" ( (field_expression "local_20._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "FUN_001b1d30(param_10 + 0x34,&local_24);" (call_expression "FUN_001b1d30(param_10 + 0x34,&local_24)" identifier (argument_list "(param_10 + 0x34,&local_24)" ( (binary_expression "param_10 + 0x34" identifier + number_literal) , (pointer_expression "&local_24" & identifier) ))) ;) (return_statement "return param_4 + uVar6;" return (binary_expression "param_4 + uVar6" identifier + identifier) ;) })) (return_statement "return param_4 + uVar6;" return (binary_expression "param_4 + uVar6" identifier + identifier) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & IDENT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) & (unary_expression - IDENT))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) )))) )) - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - LIT) < IDENT) )))) )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) ))) , LIT , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) (return_statement return (binary_expression IDENT + IDENT) ;) })) (return_statement return (binary_expression IDENT + IDENT) ;) })))
(function_definition "int FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)\n\n{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}" (primitive_type "int") (function_declarator "FUN_001b1d80(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)" (identifier "FUN_001b1d80") (parameter_list "(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,\n                int param_7,int param_8,undefined1 param_9,int param_10)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "undefined1 param_9" (type_identifier "undefined1") (identifier "param_9")) (, ",") (parameter_declaration "int param_10" (primitive_type "int") (identifier "param_10")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int *__dest;\n  size_t __n;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 extraout_ECX;\n  uint uVar6;\n  uint local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if ((param_7 - 1U & param_4) != 0) {\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }\n  __n = param_1[4];\n  uVar1 = __n + 8;\n  uVar6 = uVar1;\n  if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }\n  *(uint *)(param_2 + param_4) = uVar6 - 4;\n  __dest = (int *)(param_2 + 8 + param_4);\n  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;\n  memcpy(__dest,(void *)param_1[3],__n);\n  if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }\n  if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }\n  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }\n  return param_4 + uVar6;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int *__dest;" (primitive_type "int") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (if_statement "if ((param_7 - 1U & param_4) != 0) {\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }" (if "if") (parenthesized_expression "((param_7 - 1U & param_4) != 0)" (( "(") (binary_expression "(param_7 - 1U & param_4) != 0" (parenthesized_expression "(param_7 - 1U & param_4)" (( "(") (binary_expression "param_7 - 1U & param_4" (binary_expression "param_7 - 1U" (identifier "param_7") (- "-") (number_literal "1U")) (& "&") (identifier "param_4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);" (call_expression "FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4)" (identifier "FUN_00069d00") (argument_list "("../../gold/ehframe.cc",0x165,"write",param_4)" (( "(") (string_literal ""../../gold/ehframe.cc"" (" """) (string_content "../../gold/ehframe.cc") (" """)) (, ",") (number_literal "0x165") (, ",") (string_literal ""write"" (" """) (string_content "write") (" """)) (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}"))) (expression_statement "__n = param_1[4];" (assignment_expression "__n = param_1[4]" (identifier "__n") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar1 = __n + 8;" (assignment_expression "uVar1 = __n + 8" (identifier "uVar1") (= "=") (binary_expression "__n + 8" (identifier "__n") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" (identifier "uVar6") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (param_7 != 0) {\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = __n + 7 + param_7 & -param_7;\n  }" ({ "{") (expression_statement "uVar6 = __n + 7 + param_7 & -param_7;" (assignment_expression "uVar6 = __n + 7 + param_7 & -param_7" (identifier "uVar6") (= "=") (binary_expression "__n + 7 + param_7 & -param_7" (binary_expression "__n + 7 + param_7" (binary_expression "__n + 7" (identifier "__n") (+ "+") (number_literal "7")) (+ "+") (identifier "param_7")) (& "&") (unary_expression "-param_7" (- "-") (identifier "param_7")))) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_2 + param_4) = uVar6 - 4;" (assignment_expression "*(uint *)(param_2 + param_4) = uVar6 - 4" (pointer_expression "*(uint *)(param_2 + param_4)" (* "*") (cast_expression "(uint *)(param_2 + param_4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + param_4)" (( "(") (binary_expression "param_2 + param_4" (identifier "param_2") (+ "+") (identifier "param_4")) () ")")))) (= "=") (binary_expression "uVar6 - 4" (identifier "uVar6") (- "-") (number_literal "4"))) (; ";")) (expression_statement "__dest = (int *)(param_2 + 8 + param_4);" (assignment_expression "__dest = (int *)(param_2 + 8 + param_4)" (identifier "__dest") (= "=") (cast_expression "(int *)(param_2 + 8 + param_4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8 + param_4)" (( "(") (binary_expression "param_2 + 8 + param_4" (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) (+ "+") (identifier "param_4")) () ")")))) (; ";")) (expression_statement "*(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;" (assignment_expression "*(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8" (pointer_expression "*(uint *)(param_2 + 4 + param_4)" (* "*") (cast_expression "(uint *)(param_2 + 4 + param_4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4 + param_4)" (( "(") (binary_expression "param_2 + 4 + param_4" (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) (+ "+") (identifier "param_4")) () ")")))) (= "=") (binary_expression "(param_4 + 4) - param_8" (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")) (- "-") (identifier "param_8"))) (; ";")) (expression_statement "memcpy(__dest,(void *)param_1[3],__n);" (call_expression "memcpy(__dest,(void *)param_1[3],__n)" (identifier "memcpy") (argument_list "(__dest,(void *)param_1[3],__n)" (( "(") (identifier "__dest") (, ",") (cast_expression "(void *)param_1[3]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (, ",") (identifier "__n") () ")"))) (; ";")) (if_statement "if (*param_1 == 0) {\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }" (if "if") (parenthesized_expression "(*param_1 == 0)" (( "(") (binary_expression "*param_1 == 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }\n    piVar2 = *(int **)(DAT_0038f378 + 0xc);\n    if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }\n    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);\n    uVar3 = (local_2c - 8) - param_5;\n    iVar4 = uVar3 - param_4;\n    if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }\n    *__dest = iVar4;\n    *(int *)(param_2 + 0xc + param_4) = local_24;\n  }" ({ "{") (if_statement "if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }" (if "if") (parenthesized_expression "((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c))" (( "(") (binary_expression "(*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)" (parenthesized_expression "(*__dest != _UNK_0029ec18)" (( "(") (binary_expression "*__dest != _UNK_0029ec18" (pointer_expression "*__dest" (* "*") (identifier "__dest")) (!= "!=") (identifier "_UNK_0029ec18")) () ")")) (|| "||") (parenthesized_expression "(__dest[1] != _UNK_0029ec1c)" (( "(") (binary_expression "__dest[1] != _UNK_0029ec1c" (subscript_expression "__dest[1]" (identifier "__dest") ([ "[") (number_literal "1") (] "]")) (!= "!=") (identifier "_UNK_0029ec1c")) () ")"))) () ")")) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");\n    }" ({ "{") (expression_statement "FUN_00069d00("../../gold/ehframe.cc",0x182,"write");" (call_expression "FUN_00069d00("../../gold/ehframe.cc",0x182,"write")" (identifier "FUN_00069d00") (argument_list "("../../gold/ehframe.cc",0x182,"write")" (( "(") (string_literal ""../../gold/ehframe.cc"" (" """) (string_content "../../gold/ehframe.cc") (" """)) (, ",") (number_literal "0x182") (, ",") (string_literal ""write"" (" """) (string_content "write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar2 = *(int **)(DAT_0038f378 + 0xc);" (assignment_expression "piVar2 = *(int **)(DAT_0038f378 + 0xc)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(DAT_0038f378 + 0xc)" (* "*") (cast_expression "(int **)(DAT_0038f378 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_0038f378 + 0xc)" (( "(") (binary_expression "DAT_0038f378 + 0xc" (identifier "DAT_0038f378") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (piVar2 == (int *)0x0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);\n    }" ({ "{") (expression_statement "FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX)" (identifier "FUN_00069d00") (argument_list "("../../gold/parameters.h",0x69,"target",extraout_ECX)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);" (call_expression "(**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24)" (parenthesized_expression "(**(code **)(*piVar2 + 0x24))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x24)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x24)" (* "*") (cast_expression "(code **)(*piVar2 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x24)" (( "(") (binary_expression "*piVar2 + 0x24" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(piVar2,param_1[1],__dest,&local_2c,&local_24)" (( "(") (identifier "piVar2") (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "__dest") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))) (; ";")) (expression_statement "uVar3 = (local_2c - 8) - param_5;" (assignment_expression "uVar3 = (local_2c - 8) - param_5" (identifier "uVar3") (= "=") (binary_expression "(local_2c - 8) - param_5" (parenthesized_expression "(local_2c - 8)" (( "(") (binary_expression "local_2c - 8" (identifier "local_2c") (- "-") (number_literal "8")) () ")")) (- "-") (identifier "param_5"))) (; ";")) (expression_statement "iVar4 = uVar3 - param_4;" (assignment_expression "iVar4 = uVar3 - param_4" (identifier "iVar4") (= "=") (binary_expression "uVar3 - param_4" (identifier "uVar3") (- "-") (identifier "param_4"))) (; ";")) (if_statement "if ((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }" (if "if") (parenthesized_expression "((iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0))" (( "(") (binary_expression "(iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)" (parenthesized_expression "(iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4))" (( "(") (binary_expression "iVar4 >> 0x1f !=\n         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)" (binary_expression "iVar4 >> 0x1f" (identifier "iVar4") (>> ">>") (number_literal "0x1f")) (!= "!=") (binary_expression "((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)" (parenthesized_expression "((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f))" (( "(") (binary_expression "(((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -\n         ((int)param_4 >> 0x1f)" (parenthesized_expression "(((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5))" (( "(") (binary_expression "((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)" (parenthesized_expression "((local_28 + -1 + (uint)(7 < local_2c)) - param_6)" (( "(") (binary_expression "(local_28 + -1 + (uint)(7 < local_2c)) - param_6" (parenthesized_expression "(local_28 + -1 + (uint)(7 < local_2c))" (( "(") (binary_expression "local_28 + -1 + (uint)(7 < local_2c)" (binary_expression "local_28 + -1" (identifier "local_28") (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)(7 < local_2c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(7 < local_2c)" (( "(") (binary_expression "7 < local_2c" (number_literal "7") (< "<") (identifier "local_2c")) () ")")))) () ")")) (- "-") (identifier "param_6")) () ")")) (- "-") (call_expression "(uint)(local_2c - 8 < param_5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_2c - 8 < param_5)" (( "(") (binary_expression "local_2c - 8 < param_5" (binary_expression "local_2c - 8" (identifier "local_2c") (- "-") (number_literal "8")) (< "<") (identifier "param_5")) () ")")))) () ")")) (- "-") (parenthesized_expression "((int)param_4 >> 0x1f)" (( "(") (binary_expression "(int)param_4 >> 0x1f" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (>> ">>") (number_literal "0x1f")) () ")"))) () ")")) (- "-") (call_expression "(uint)(uVar3 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < param_4)" (( "(") (binary_expression "uVar3 < param_4" (identifier "uVar3") (< "<") (identifier "param_4")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(local_20 != 0)" (( "(") (binary_expression "local_20 != 0" (identifier "local_20") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");\n      FUN_000654e0(uVar5);\n    }" ({ "{") (expression_statement "uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");" (assignment_expression "uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail")" (identifier "uVar5") (= "=") (call_expression "gettext("overflow in PLT unwind data; unwinding through PLT may fail")" (identifier "gettext") (argument_list "("overflow in PLT unwind data; unwinding through PLT may fail")" (( "(") (string_literal ""overflow in PLT unwind data; unwinding through PLT may fail"" (" """) (string_content "overflow in PLT unwind data; unwinding through PLT may fail") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654e0(uVar5);" (call_expression "FUN_000654e0(uVar5)" (identifier "FUN_000654e0") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "*__dest = iVar4;" (assignment_expression "*__dest = iVar4" (pointer_expression "*__dest" (* "*") (identifier "__dest")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*(int *)(param_2 + 0xc + param_4) = local_24;" (assignment_expression "*(int *)(param_2 + 0xc + param_4) = local_24" (pointer_expression "*(int *)(param_2 + 0xc + param_4)" (* "*") (cast_expression "(int *)(param_2 + 0xc + param_4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc + param_4)" (( "(") (binary_expression "param_2 + 0xc + param_4" (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) (+ "+") (identifier "param_4")) () ")")))) (= "=") (identifier "local_24")) (; ";")) (} "}"))) (if_statement "if (uVar1 < uVar6) {\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }" (if "if") (parenthesized_expression "(uVar1 < uVar6)" (( "(") (binary_expression "uVar1 < uVar6" (identifier "uVar1") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);\n  }" ({ "{") (expression_statement "memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);" (call_expression "memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8)" (identifier "memset") (argument_list "((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8)" (( "(") (cast_expression "(void *)(uVar1 + param_4 + param_2)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + param_4 + param_2)" (( "(") (binary_expression "uVar1 + param_4 + param_2" (binary_expression "uVar1 + param_4" (identifier "uVar1") (+ "+") (identifier "param_4")) (+ "+") (identifier "param_2")) () ")"))) (, ",") (number_literal "0") (, ",") (binary_expression "(uVar6 - __n) - 8" (parenthesized_expression "(uVar6 - __n)" (( "(") (binary_expression "uVar6 - __n" (identifier "uVar6") (- "-") (identifier "__n")) () ")")) (- "-") (number_literal "8")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }" (if "if") (parenthesized_expression "((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0'))" (( "(") (binary_expression "(param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')" (parenthesized_expression "(param_10 != 0)" (( "(") (binary_expression "param_10 != 0" (identifier "param_10") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_10 + 0x40) == '\0')" (( "(") (binary_expression "*(char *)(param_10 + 0x40) == '\0'" (pointer_expression "*(char *)(param_10 + 0x40)" (* "*") (cast_expression "(char *)(param_10 + 0x40)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_10 + 0x40)" (( "(") (binary_expression "param_10 + 0x40" (identifier "param_10") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    local_24 = param_3 + param_4;\n    local_20 = CONCAT31(local_20._1_3_,param_9);\n    FUN_001b1d30(param_10 + 0x34,&local_24);\n    return param_4 + uVar6;\n  }" ({ "{") (expression_statement "local_24 = param_3 + param_4;" (assignment_expression "local_24 = param_3 + param_4" (identifier "local_24") (= "=") (binary_expression "param_3 + param_4" (identifier "param_3") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "local_20 = CONCAT31(local_20._1_3_,param_9);" (assignment_expression "local_20 = CONCAT31(local_20._1_3_,param_9)" (identifier "local_20") (= "=") (call_expression "CONCAT31(local_20._1_3_,param_9)" (identifier "CONCAT31") (argument_list "(local_20._1_3_,param_9)" (( "(") (field_expression "local_20._1_3_" (identifier "local_20") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "param_9") () ")")))) (; ";")) (expression_statement "FUN_001b1d30(param_10 + 0x34,&local_24);" (call_expression "FUN_001b1d30(param_10 + 0x34,&local_24)" (identifier "FUN_001b1d30") (argument_list "(param_10 + 0x34,&local_24)" (( "(") (binary_expression "param_10 + 0x34" (identifier "param_10") (+ "+") (number_literal "0x34")) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))) (; ";")) (return_statement "return param_4 + uVar6;" (return "return") (binary_expression "param_4 + uVar6" (identifier "param_4") (+ "+") (identifier "uVar6")) (; ";")) (} "}"))) (return_statement "return param_4 + uVar6;" (return "return") (binary_expression "param_4 + uVar6" (identifier "param_4") (+ "+") (identifier "uVar6")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: write<32, false>
   DWARF original prototype: section_offset_type write<32,_false>(Fde * this, uchar * oview,
   section_offset_type output_offset, section_offset_type offset, uint64_t address, uint addralign,
   section_offset_type cie_offset, uchar fde_encoding, Eh_frame_hdr * eh_frame_hdr) */

type_1 __thiscall
gold::Fde::write<32,_false>
          (Fde *this,uchar *var_5,type_1 var_19,type_1 var_2,
          uint64_t address,type_3 var_1,type_1 var_7,uchar fde_encoding,
          type_7 *var_18)

{
  type_3 var_16;
  int *__dest;
  size_t var_4;
  type_2 *var_11;
  type_3 var_12;
  int var_13;
  char *format;
  type_3 var_6;
  uint64_t paddress;
  type_4 var_25;
  
  if ((var_1 - 1 & var_2) != 0) {
                    /* WARNING: Subroutine does not return */
    var_3("../../gold/ehframe.cc",0x165,"write");
  }
  var_4 = (this->contents_)._M_string_length;
  var_16 = var_4 + 8;
  var_6 = var_16;
  if (var_1 != 0) {
    var_6 = var_4 + 7 + var_1 & -var_1;
  }
  *(type_3 *)(var_5 + var_2) = var_6 - 4;
  __dest = (int *)(var_5 + var_2 + 8);
  *(type_1 *)(var_5 + var_2 + 4) = (var_2 + 4) - var_7;
  var_8(__dest,(this->contents_)._M_dataplus._M_p,var_4);
  if (this->object_ == (type_5 *)0x0) {
    if ((*__dest != var_9) || (__dest[1] != var_10)) {
                    /* WARNING: Subroutine does not return */
      var_3("../../gold/ehframe.cc",0x182,"write");
    }
    var_11 = parameters->target_;
    if (var_11 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_3("../../gold/parameters.h",0x69,"target");
    }
    (**(type_6 **)(*(int *)var_11 + 0x24))
              (var_11,(this->u_).from_object.shndx,__dest,&paddress,&var_25);
    var_12 = ((type_3)paddress - 8) - (type_3)address;
    var_13 = var_12 - var_2;
    if ((var_13 >> 0x1f !=
         ((((paddress._4_4_ + -1 + (type_3)(7 < (type_3)paddress)) - address._4_4_) -
          (type_3)((type_3)paddress - 8 < (type_3)address)) - (var_2 >> 0x1f)) -
         (type_3)(var_12 < (type_3)var_2)) || (var_25._4_4_ != 0)) {
      format = (char *)var_14("overflow in PLT unwind data; unwinding through PLT may fail");
      var_15(format);
    }
    *__dest = var_13;
    *(int *)(var_5 + var_2 + 0xc) = (int)var_25;
  }
  if (var_16 < var_6) {
    var_17(var_5 + var_16 + var_2,0,(var_6 - var_4) - 8);
  }
  if ((var_18 != (type_7 *)0x0) &&
     (var_18->any_unrecognized_eh_frame_sections_ == false)) {
    var_25._0_4_ = var_19 + var_2;
    var_25._4_4_ = var_20(var_25._5_3_,fde_encoding);
    std::vector<std::var_21<var_22,var_23>,_std::allocator<std::var_21<var_22,var_23>var_24>var_24>::
    emplace_back<std::var_21<var_22,var_23>var_24>
              (&var_18->fde_offsets_,(var_21<var_22,var_23> *)&var_25);
    return var_2 + var_6;
  }
  return var_2 + var_6;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int MASKED(int *param_1,int param_2,int param_3,uint param_4,uint param_5,int param_6,
                int param_7,int param_8,undefined1 param_9,int param_10)

{
  uint uVar1;
  int *__dest;
  size_t __n;
  int *piVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 extraout_ECX;
  uint uVar6;
  uint local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  if ((param_7 - 1U & param_4) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/ehframe.cc",0x165,"write",param_4);
  }
  __n = param_1[4];
  uVar1 = __n + 8;
  uVar6 = uVar1;
  if (param_7 != 0) {
    uVar6 = __n + 7 + param_7 & -param_7;
  }
  *(uint *)(param_2 + param_4) = uVar6 - 4;
  __dest = (int *)(param_2 + 8 + param_4);
  *(uint *)(param_2 + 4 + param_4) = (param_4 + 4) - param_8;
  memcpy(__dest,(void *)param_1[3],__n);
  if (*param_1 == 0) {
    if ((*__dest != _UNK_0029ec18) || (__dest[1] != _UNK_0029ec1c)) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/ehframe.cc",0x182,"write");
    }
    piVar2 = *(int **)(DAT_0038f378 + 0xc);
    if (piVar2 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/parameters.h",0x69,"target",extraout_ECX);
    }
    (**(code **)(*piVar2 + 0x24))(piVar2,param_1[1],__dest,&local_2c,&local_24);
    uVar3 = (local_2c - 8) - param_5;
    iVar4 = uVar3 - param_4;
    if ((iVar4 >> 0x1f !=
         ((((local_28 + -1 + (uint)(7 < local_2c)) - param_6) - (uint)(local_2c - 8 < param_5)) -
         ((int)param_4 >> 0x1f)) - (uint)(uVar3 < param_4)) || (local_20 != 0)) {
      uVar5 = gettext("overflow in PLT unwind data; unwinding through PLT may fail");
      FUN_000654e0(uVar5);
    }
    *__dest = iVar4;
    *(int *)(param_2 + 0xc + param_4) = local_24;
  }
  if (uVar1 < uVar6) {
    memset((void *)(uVar1 + param_4 + param_2),0,(uVar6 - __n) - 8);
  }
  if ((param_10 != 0) && (*(char *)(param_10 + 0x40) == '\0')) {
    local_24 = param_3 + param_4;
    local_20 = CONCAT31(local_20._1_3_,param_9);
    FUN_001b1d30(param_10 + 0x34,&local_24);
    return param_4 + uVar6;
  }
  return param_4 + uVar6;
}

