
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

One_option * __regparm3
anon_unknown.dwarf_a6a7ee::parse_long_option
          (int argc,char **argv,bool equals_only,char **arg,int *i)

{
  int iVar1;
  char *__s;
  Dashes DVar2;
  int iVar3;
  char *pcVar4;
  size_t sVar5;
  uint __code;
  One_option *pOVar6;
  char *pcVar7;
  int in_stack_ffffffa8;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar8;
  undefined1 uVar9;
  _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
  *this;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__k;
  string option;
  
  __s = argv[*i];
  pcVar4 = strchr(__s,0x3d);
  sVar5 = strspn(__s,"-");
  pcVar7 = __s + sVar5;
  if (pcVar4 == (char *)0x0) {
    sVar5 = strlen(pcVar7);
  }
  else {
    sVar5 = (int)pcVar4 - (int)pcVar7;
  }
  __k = &option;
  paVar8 = &option.field_2;
  option._M_dataplus._M_p = (pointer)paVar8;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(__k,pcVar7,pcVar7 + sVar5,0);
  this = (_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
          *)gold::options::long_options;
  __code = std::_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907);
  pOVar6 = (One_option *)
           std::
           _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);
  uVar9 = SUB41(this,0);
  if ((pOVar6 == (One_option *)0x0) ||
     (pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p, pOVar6 == (One_option *)0x0))
  goto LAB_000df54f;
  pOVar6 = *(One_option **)&pOVar6->shortname;
  DVar2 = pOVar6->dashes;
  if (*__s == '-') {
    if (__s[1] == '-') {
      if ((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)) goto LAB_000df5a8;
    }
    else if (EXACTLY_ONE_DASH < DVar2) {
LAB_000df5a8:
      pOVar6 = (One_option *)0x0;
      goto LAB_000df54f;
    }
  }
  else if (DVar2 != DASH_Z) goto LAB_000df5a8;
  iVar3 = *i;
  iVar1 = iVar3 + 1;
  *i = iVar1;
  if (pOVar6->helparg == (char *)0x0) {
    if (pcVar4 != (char *)0x0) {
LAB_000df643:
      pcVar7 = (char *)gettext("unexpected argument");
      usage(pcVar7,__s);
                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */
      pOVar6 = (One_option *)
               (anonymous_namespace)::parse_long_option
                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,
                          (char **)__k,(int *)argc);
      return pOVar6;
    }
    *arg = (char *)0x0;
  }
  else if (pcVar4 == (char *)0x0) {
    if (pOVar6->optional_arg == false) {
      if ((argc <= iVar1) || (equals_only)) {
        pcVar7 = (char *)gettext("missing argument");
                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */
        usage(pcVar7,__s);
        goto LAB_000df643;
      }
      *i = iVar3 + 2;
      *arg = argv[iVar1];
    }
    else {
      *arg = pOVar6->default_value;
    }
  }
  else {
    *arg = pcVar4 + 1;
  }
LAB_000df54f:
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)option._M_dataplus._M_p != paVar8) {
    operator_delete(option._M_dataplus._M_p);
  }
  return pOVar6;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int * __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)

{
  int iVar1;
  char *__s;
  char *__s_00;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  uint uVar5;
  int *piVar6;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  __s_00 = *(char **)(param_2 + *param_5 * 4);
  pcVar3 = strchr(__s_00,0x3d);
  sVar4 = strspn(__s_00,"-");
  __s = __s_00 + sVar4;
  if (pcVar3 == (char *)0x0) {
    sVar4 = strlen(__s);
  }
  else {
    sVar4 = (int)pcVar3 - (int)__s;
  }
  local_34 = local_2c;
  FUN_00050e40(&local_34,__s,__s + sVar4,0);
  iVar1 = DAT_003951e0;
  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);
  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);
  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;
  piVar6 = (int *)piVar6[7];
  uVar5 = piVar6[6];
  if (*__s_00 == '-') {
    if (__s_00[1] == '-') {
      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;
    }
    else if (2 < uVar5) {
LAB_000df5a8:
      piVar6 = (int *)0x0;
      goto LAB_000df54f;
    }
  }
  else if (uVar5 != 4) goto LAB_000df5a8;
  iVar2 = *param_5;
  iVar1 = iVar2 + 1;
  *param_5 = iVar1;
  if (piVar6[10] == 0) {
    if (pcVar3 != (char *)0x0) {
LAB_000df643:
      gettext("unexpected argument");
      FUN_000dcd10();
                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */
      piVar6 = (int *)FUN_0002b93c();
      return piVar6;
    }
    *param_4 = 0;
  }
  else if (pcVar3 == (char *)0x0) {
    if ((char)piVar6[0xb] == '\0') {
      if ((param_1 <= iVar1) || (param_3 != '\0')) {
        gettext("missing argument");
                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */
        FUN_000dcd10();
        goto LAB_000df643;
      }
      *param_5 = iVar2 + 2;
      *param_4 = *(int *)(param_2 + iVar1 * 4);
    }
    else {
      *param_4 = piVar6[8];
    }
  }
  else {
    *param_4 = (int)(pcVar3 + 1);
  }
LAB_000df54f:
  if (local_34 != local_2c) {
    FUN_001e6db0(local_34);
  }
  return piVar6;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x000559ea
ADD ESI,0x2afb98
PUSH EBX
SUB ESP,0x54
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x24],ECX
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x20],EDX
MOV EBX,ESI
MOV EDI,dword ptr [EDX + EAX*0x4]
PUSH 0x3d
PUSH EDI
CALL 0x000291d0
POP EBP
POP EDX
MOV EBP,EAX
LEA EAX,[ESI + 0xffefe758]
PUSH EAX
PUSH EDI
CALL 0x00029930
ADD ESP,0x10
LEA ECX,[EDI + EAX*0x1]
TEST EBP,EBP
JZ 0x000df5c8
MOV EAX,EBP
SUB EAX,ECX
LEA EDX,[ESP + 0x28]
LEA EBX,[ESP + 0x30]
ADD EAX,ECX
MOV dword ptr [ESP + 0x8],EBX
MOV dword ptr [ESP + 0x28],EBX
MOV EBX,ESI
PUSH 0x0
PUSH EAX
PUSH ECX
PUSH EDX
MOV dword ptr [ESP + 0x20],EDX
CALL 0x00050e40
MOV ECX,dword ptr [ESI + 0x61e0]
MOV dword ptr [ESP + 0x1c],ECX
ADD ESP,0xc
PUSH 0xc70f6907
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x34]
CALL 0x001e52b0
PUSH EAX
MOV EDX,dword ptr [ESP + 0x24]
PUSH EDX
MOV ECX,dword ptr [ESP + 0x24]
XOR EDX,EDX
DIV dword ptr [ECX + 0x4]
PUSH EDX
PUSH ECX
CALL 0x000eb180
ADD ESP,0x20
TEST EAX,EAX
JZ 0x000df54f
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x000df54f
MOV EAX,dword ptr [EAX + 0x1c]
CMP byte ptr [EDI],0x2d
MOV EDX,dword ptr [EAX + 0x18]
JZ 0x000df5b0
CMP EDX,0x4
JNZ 0x000df5a8
MOV EBX,dword ptr [ESP + 0x64]
MOV EDX,dword ptr [EBX]
LEA ECX,[EDX + 0x1]
MOV dword ptr [EBX],ECX
MOV EBX,dword ptr [EAX + 0x28]
TEST EBX,EBX
JZ 0x000df580
TEST EBP,EBP
JZ 0x000df5e8
MOV EDI,dword ptr [ESP + 0x60]
ADD EBP,0x1
MOV dword ptr [EDI],EBP
MOV EDX,dword ptr [ESP + 0x28]
CMP EDX,dword ptr [ESP + 0x8]
JZ 0x000df56f
MOV dword ptr [ESP + 0x8],EAX
SUB ESP,0xc
MOV EBX,ESI
PUSH EDX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EBP,EBP
JNZ 0x000df643
MOV EDI,dword ptr [ESP + 0x60]
MOV dword ptr [EDI],0x0
JMP 0x000df54f
CMP EDX,0x3
JZ 0x000df52c
CMP EDX,0x1
JBE 0x000df52c
LEA ESI,[ESI]
XOR EAX,EAX
JMP 0x000df54f
CMP byte ptr [EDI + 0x1],0x2d
JZ 0x000df598
CMP EDX,0x2
JBE 0x000df52c
JMP 0x000df5a8
SUB ESP,0xc
PUSH ECX
MOV dword ptr [ESP + 0x18],ECX
CALL 0x000295f0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
JMP 0x000df4b4
CMP byte ptr [EAX + 0x2c],0x0
JZ 0x000df600
MOV EDX,dword ptr [EAX + 0x20]
MOV EDI,dword ptr [ESP + 0x60]
MOV dword ptr [EDI],EDX
JMP 0x000df54f
CMP ECX,dword ptr [ESP + 0x14]
JGE 0x000df628
CMP byte ptr [ESP + 0x1c],0x0
JNZ 0x000df628
MOV EDI,dword ptr [ESP + 0x64]
ADD EDX,0x2
MOV dword ptr [EDI],EDX
MOV EDI,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [EDI + ECX*0x4]
MOV EDI,dword ptr [ESP + 0x60]
MOV dword ptr [EDI],EDX
JMP 0x000df54f
SUB ESP,0xc
LEA EAX,[ESI + 0xffefe7ea]
MOV EBX,ESI
PUSH EAX
CALL 0x000293b0
ADD ESP,0x10
MOV EDX,EDI
CALL 0x000dcd10
SUB ESP,0xc
LEA EAX,[ESI + 0xffefe7d6]
MOV EBX,ESI
PUSH EAX
CALL 0x000293b0
ADD ESP,0x10
MOV EDX,EDI
CALL 0x000dcd10
MOV EDI,EAX
JMP 0x0002b93c
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nint * __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)\n\n{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}\n\n" comment (function_definition "int * __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)\n\n{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)" identifier (parameter_list "(int param_1,int param_2,char param_3,int *param_4,int *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "char param_3" primitive_type identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "__s_00 = *(char **)(param_2 + *param_5 * 4);" (assignment_expression "__s_00 = *(char **)(param_2 + *param_5 * 4)" identifier = (pointer_expression "*(char **)(param_2 + *param_5 * 4)" * (cast_expression "(char **)(param_2 + *param_5 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + *param_5 * 4)" ( (binary_expression "param_2 + *param_5 * 4" identifier + (binary_expression "*param_5 * 4" (pointer_expression "*param_5" * identifier) * number_literal)) ))))) ;) (expression_statement "pcVar3 = strchr(__s_00,0x3d);" (assignment_expression "pcVar3 = strchr(__s_00,0x3d)" identifier = (call_expression "strchr(__s_00,0x3d)" identifier (argument_list "(__s_00,0x3d)" ( identifier , number_literal )))) ;) (expression_statement "sVar4 = strspn(__s_00,"-");" (assignment_expression "sVar4 = strspn(__s_00,"-")" identifier = (call_expression "strspn(__s_00,"-")" identifier (argument_list "(__s_00,"-")" ( identifier , (string_literal ""-"" " string_content ") )))) ;) (expression_statement "__s = __s_00 + sVar4;" (assignment_expression "__s = __s_00 + sVar4" identifier = (binary_expression "__s_00 + sVar4" identifier + identifier)) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = strlen(__s);\n  }" { (expression_statement "sVar4 = strlen(__s);" (assignment_expression "sVar4 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) }) (else_clause "else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" else (compound_statement "{\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" { (expression_statement "sVar4 = (int)pcVar3 - (int)__s;" (assignment_expression "sVar4 = (int)pcVar3 - (int)__s" identifier = (binary_expression "(int)pcVar3 - (int)__s" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_00050e40(&local_34,__s,__s + sVar4,0);" (call_expression "FUN_00050e40(&local_34,__s,__s + sVar4,0)" identifier (argument_list "(&local_34,__s,__s + sVar4,0)" ( (pointer_expression "&local_34" & identifier) , identifier , (binary_expression "__s + sVar4" identifier + identifier) , number_literal ))) ;) (expression_statement "iVar1 = DAT_003951e0;" (assignment_expression "iVar1 = DAT_003951e0" identifier = identifier) ;) (expression_statement "uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);" (assignment_expression "uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907)" identifier = (call_expression "FUN_001e52b0(local_34,local_30,0xc70f6907)" identifier (argument_list "(local_34,local_30,0xc70f6907)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);" (assignment_expression "piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" identifier = (cast_expression "(int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" identifier (argument_list "(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" ( identifier , (binary_expression "uVar5 % *(uint *)(iVar1 + 4)" identifier % (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) , (pointer_expression "&local_34" & identifier) , identifier ))))) ;) (if_statement "if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;" if (parenthesized_expression "((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0))" ( (binary_expression "(piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)" (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)" ( (comma_expression "piVar6 = (int *)*piVar6, piVar6 == (int *)0x0" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) , (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_000df54f;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)piVar6[7];" (assignment_expression "piVar6 = (int *)piVar6[7]" identifier = (cast_expression "(int *)piVar6[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[7]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = piVar6[6];" (assignment_expression "uVar5 = piVar6[6]" identifier = (subscript_expression "piVar6[6]" identifier [ number_literal ])) ;) (if_statement "if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;" if (parenthesized_expression "(*__s_00 == '-')" ( (binary_expression "*__s_00 == '-'" (pointer_expression "*__s_00" * identifier) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }" { (if_statement "if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" if (parenthesized_expression "(__s_00[1] == '-')" ( (binary_expression "__s_00[1] == '-'" (subscript_expression "__s_00[1]" identifier [ number_literal ]) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }" { (if_statement "if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;" if (parenthesized_expression "((uVar5 != 3) && (1 < uVar5))" ( (binary_expression "(uVar5 != 3) && (1 < uVar5)" (parenthesized_expression "(uVar5 != 3)" ( (binary_expression "uVar5 != 3" identifier != number_literal) )) && (parenthesized_expression "(1 < uVar5)" ( (binary_expression "1 < uVar5" number_literal < identifier) ))) )) (goto_statement "goto LAB_000df5a8;" goto statement_identifier ;)) }) (else_clause "else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" else (if_statement "if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" if (parenthesized_expression "(2 < uVar5)" ( (binary_expression "2 < uVar5" number_literal < identifier) )) (compound_statement "{\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" { (labeled_statement "LAB_000df5a8:\n      piVar6 = (int *)0x0;" statement_identifier : (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_000df54f;" goto statement_identifier ;) })))) }) (else_clause "else if (uVar5 != 4) goto LAB_000df5a8;" else (if_statement "if (uVar5 != 4) goto LAB_000df5a8;" if (parenthesized_expression "(uVar5 != 4)" ( (binary_expression "uVar5 != 4" identifier != number_literal) )) (goto_statement "goto LAB_000df5a8;" goto statement_identifier ;)))) (expression_statement "iVar2 = *param_5;" (assignment_expression "iVar2 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar1 = iVar2 + 1;" (assignment_expression "iVar1 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "*param_5 = iVar1;" (assignment_expression "*param_5 = iVar1" (pointer_expression "*param_5" * identifier) = identifier) ;) (if_statement "if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" if (parenthesized_expression "(piVar6[10] == 0)" ( (binary_expression "piVar6[10] == 0" (subscript_expression "piVar6[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }" { (if_statement "if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }" { (labeled_statement "LAB_000df643:\n      gettext("unexpected argument");" statement_identifier : (expression_statement "gettext("unexpected argument");" (call_expression "gettext("unexpected argument")" identifier (argument_list "("unexpected argument")" ( (string_literal ""unexpected argument"" " string_content ") ))) ;)) (expression_statement "FUN_000dcd10();" (call_expression "FUN_000dcd10()" identifier (argument_list "()" ( ))) ;) comment (expression_statement "piVar6 = (int *)FUN_0002b93c();" (assignment_expression "piVar6 = (int *)FUN_0002b93c()" identifier = (cast_expression "(int *)FUN_0002b93c()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002b93c()" identifier (argument_list "()" ( ))))) ;) (return_statement "return piVar6;" return identifier ;) })) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) }) (else_clause "else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" else (if_statement "if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }" { (if_statement "if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }" if (parenthesized_expression "((char)piVar6[0xb] == '\0')" ( (binary_expression "(char)piVar6[0xb] == '\0'" (cast_expression "(char)piVar6[0xb]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar6[0xb]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }" { (if_statement "if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }" if (parenthesized_expression "((param_1 <= iVar1) || (param_3 != '\0'))" ( (binary_expression "(param_1 <= iVar1) || (param_3 != '\0')" (parenthesized_expression "(param_1 <= iVar1)" ( (binary_expression "param_1 <= iVar1" identifier <= identifier) )) || (parenthesized_expression "(param_3 != '\0')" ( (binary_expression "param_3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        FUN_000dcd10();\n        goto LAB_000df643;\n      }" { (expression_statement "gettext("missing argument");" (call_expression "gettext("missing argument")" identifier (argument_list "("missing argument")" ( (string_literal ""missing argument"" " string_content ") ))) ;) comment (expression_statement "FUN_000dcd10();" (call_expression "FUN_000dcd10()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000df643;" goto statement_identifier ;) })) (expression_statement "*param_5 = iVar2 + 2;" (assignment_expression "*param_5 = iVar2 + 2" (pointer_expression "*param_5" * identifier) = (binary_expression "iVar2 + 2" identifier + number_literal)) ;) (expression_statement "*param_4 = *(int *)(param_2 + iVar1 * 4);" (assignment_expression "*param_4 = *(int *)(param_2 + iVar1 * 4)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(int *)(param_2 + iVar1 * 4)" * (cast_expression "(int *)(param_2 + iVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar1 * 4)" ( (binary_expression "param_2 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n      *param_4 = piVar6[8];\n    }" else (compound_statement "{\n      *param_4 = piVar6[8];\n    }" { (expression_statement "*param_4 = piVar6[8];" (assignment_expression "*param_4 = piVar6[8]" (pointer_expression "*param_4" * identifier) = (subscript_expression "piVar6[8]" identifier [ number_literal ])) ;) }))) }) (else_clause "else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" else (compound_statement "{\n    *param_4 = (int)(pcVar3 + 1);\n  }" { (expression_statement "*param_4 = (int)(pcVar3 + 1);" (assignment_expression "*param_4 = (int)(pcVar3 + 1)" (pointer_expression "*param_4" * identifier) = (cast_expression "(int)(pcVar3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar3 + 1)" ( (binary_expression "pcVar3 + 1" identifier + number_literal) )))) ;) }))))) (labeled_statement "LAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" statement_identifier : (if_statement "if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_34);\n  }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) }))) (return_statement "return piVar6;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nOne_option * __regparm3\nanon_unknown.dwarf_a6a7ee::parse_long_option\n          (int argc,char **argv,bool equals_only,char **arg,int *i)\n\n{\n  int iVar1;\n  char *__s;\n  Dashes DVar2;\n  int iVar3;\n  char *pcVar4;\n  size_t sVar5;\n  uint __code;\n  One_option *pOVar6;\n  char *pcVar7;\n  int in_stack_ffffffa8;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar8;\n  undefined1 uVar9;\n  _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  *this;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__k;\n  string option;\n  \n  __s = argv[*i];\n  pcVar4 = strchr(__s,0x3d);\n  sVar5 = strspn(__s,"-");\n  pcVar7 = __s + sVar5;\n  if (pcVar4 == (char *)0x0) {\n    sVar5 = strlen(pcVar7);\n  }\n  else {\n    sVar5 = (int)pcVar4 - (int)pcVar7;\n  }\n  __k = &option;\n  paVar8 = &option.field_2;\n  option._M_dataplus._M_p = (pointer)paVar8;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(__k,pcVar7,pcVar7 + sVar5,0);\n  this = (_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)gold::options::long_options;\n  __code = std::_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907);\n  pOVar6 = (One_option *)\n           std::\n           _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);\n  uVar9 = SUB41(this,0);\n  if ((pOVar6 == (One_option *)0x0) ||\n     (pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p, pOVar6 == (One_option *)0x0))\n  goto LAB_000df54f;\n  pOVar6 = *(One_option **)&pOVar6->shortname;\n  DVar2 = pOVar6->dashes;\n  if (*__s == '-') {\n    if (__s[1] == '-') {\n      if ((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)) goto LAB_000df5a8;\n    }\n    else if (EXACTLY_ONE_DASH < DVar2) {\nLAB_000df5a8:\n      pOVar6 = (One_option *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (DVar2 != DASH_Z) goto LAB_000df5a8;\n  iVar3 = *i;\n  iVar1 = iVar3 + 1;\n  *i = iVar1;\n  if (pOVar6->helparg == (char *)0x0) {\n    if (pcVar4 != (char *)0x0) {\nLAB_000df643:\n      pcVar7 = (char *)gettext("unexpected argument");\n      usage(pcVar7,__s);\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      pOVar6 = (One_option *)\n               (anonymous_namespace)::parse_long_option\n                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc);\n      return pOVar6;\n    }\n    *arg = (char *)0x0;\n  }\n  else if (pcVar4 == (char *)0x0) {\n    if (pOVar6->optional_arg == false) {\n      if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }\n      *i = iVar3 + 2;\n      *arg = argv[iVar1];\n    }\n    else {\n      *arg = pOVar6->default_value;\n    }\n  }\n  else {\n    *arg = pcVar4 + 1;\n  }\nLAB_000df54f:\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)option._M_dataplus._M_p != paVar8) {\n    operator_delete(option._M_dataplus._M_p);\n  }\n  return pOVar6;\n}\n\n" comment (ERROR "One_option * __regparm3\nanon_unknown.dwarf_a6a7ee::" (binary_expression "One_option * __regparm3\nanon_unknown.dwarf_a6a7ee" identifier * (ERROR "__regparm3" identifier) (field_expression "anon_unknown.dwarf_a6a7ee" identifier . field_identifier)) : :) (declaration "parse_long_option\n          (int argc,char **argv,bool equals_only,char **arg,int *i)\n\n{\n  int iVar1;" (macro_type_specifier "parse_long_option\n          (int" identifier ( (type_descriptor "int" primitive_type) )) identifier , (ERROR "char" identifier) (pointer_declarator "**argv" * (pointer_declarator "*argv" * identifier)) , (ERROR "bool" identifier) identifier , (ERROR "char" identifier) (pointer_declarator "**arg" * (pointer_declarator "*arg" * identifier)) , (ERROR "int *i)\n\n{\n  int" identifier (pointer_declarator "*i" * identifier) ) { primitive_type) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "Dashes DVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint __code;" type_identifier identifier ;) (declaration "One_option *pOVar6;" type_identifier (pointer_declarator "*pOVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int in_stack_ffffffa8;" primitive_type identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char," (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar8;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_>_9\n  *paVar8;" (binary_expression "allocator<char>_>_9\n  *paVar8" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar8" identifier * identifier)) ;)) (declaration "undefined1 uVar9;" type_identifier identifier ;) (ERROR "_Hashtable<std::" (binary_expression "_Hashtable<std" identifier < identifier) : :) (labeled_statement "__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  *this;" statement_identifier (ERROR "::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std:" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold" identifier (ERROR "::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (comma_expression "One_option*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (binary_expression "options::One_option*>_>,_std" (binary_expression "options::One_option*>_" identifier (ERROR "::One_option*" : : identifier *) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std" identifier (ERROR "::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) >) , identifier) : : (binary_expression "hash<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) :) : (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  *this;" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  *this;" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  *this;" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_false,_true>_>\n  *this;" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_false,_true>_>\n  *this;" (comma_expression "_Hashtable_traits<true,_false,_true>_>\n  *this" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n  *this" identifier , (binary_expression "_true>_>\n  *this" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*this" * identifier)))) ;)))))) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *__k;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> *__k;" (binary_expression "allocator<char>_> *__k" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*__k" * identifier)) ;)) (declaration "string option;" type_identifier identifier ;) (expression_statement "__s = argv[*i];" (assignment_expression "__s = argv[*i]" identifier = (subscript_expression "argv[*i]" identifier [ (pointer_expression "*i" * identifier) ])) ;) (expression_statement "pcVar4 = strchr(__s,0x3d);" (assignment_expression "pcVar4 = strchr(__s,0x3d)" identifier = (call_expression "strchr(__s,0x3d)" identifier (argument_list "(__s,0x3d)" ( identifier , number_literal )))) ;) (expression_statement "sVar5 = strspn(__s,"-");" (assignment_expression "sVar5 = strspn(__s,"-")" identifier = (call_expression "strspn(__s,"-")" identifier (argument_list "(__s,"-")" ( identifier , (string_literal ""-"" " string_content ") )))) ;) (expression_statement "pcVar7 = __s + sVar5;" (assignment_expression "pcVar7 = __s + sVar5" identifier = (binary_expression "__s + sVar5" identifier + identifier)) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    sVar5 = strlen(pcVar7);\n  }\n  else {\n    sVar5 = (int)pcVar4 - (int)pcVar7;\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar5 = strlen(pcVar7);\n  }" { (expression_statement "sVar5 = strlen(pcVar7);" (assignment_expression "sVar5 = strlen(pcVar7)" identifier = (call_expression "strlen(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier )))) ;) }) (else_clause "else {\n    sVar5 = (int)pcVar4 - (int)pcVar7;\n  }" else (compound_statement "{\n    sVar5 = (int)pcVar4 - (int)pcVar7;\n  }" { (expression_statement "sVar5 = (int)pcVar4 - (int)pcVar7;" (assignment_expression "sVar5 = (int)pcVar4 - (int)pcVar7" identifier = (binary_expression "(int)pcVar4 - (int)pcVar7" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "__k = &option;" (assignment_expression "__k = &option" identifier = (pointer_expression "&option" & identifier)) ;) (expression_statement "paVar8 = &option.field_2;" (assignment_expression "paVar8 = &option.field_2" identifier = (pointer_expression "&option.field_2" & (field_expression "option.field_2" identifier . field_identifier))) ;) (expression_statement "option._M_dataplus._M_p = (pointer)paVar8;" (assignment_expression "option._M_dataplus._M_p = (pointer)paVar8" (field_expression "option._M_dataplus._M_p" (field_expression "option._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar8" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(__k,pcVar7,pcVar7 + sVar5,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(__k,pcVar7,pcVar7 + sVar5,0);" (binary_expression "_M_construct<char_const*>(__k,pcVar7,pcVar7 + sVar5,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(__k,pcVar7,pcVar7 + sVar5,0)" ( (comma_expression "__k,pcVar7,pcVar7 + sVar5,0" identifier , (comma_expression "pcVar7,pcVar7 + sVar5,0" identifier , (comma_expression "pcVar7 + sVar5,0" (binary_expression "pcVar7 + sVar5" identifier + identifier) , number_literal))) ))) ;)) (expression_statement "this = (_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)gold::options::long_options;\n  __code = std::_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907);\n  pOVar6 = (One_option *)\n           std::\n           _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);\n  uVar9 = SUB41(this,0);" (assignment_expression "this = (_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)gold::options::long_options;\n  __code = std::_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907);\n  pOVar6 = (One_option *)\n           std::\n           _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);\n  uVar9 = SUB41(this,0)" identifier = (parenthesized_expression "(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)gold::options::long_options;\n  __code = std::_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907);\n  pOVar6 = (One_option *)\n           std::\n           _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);\n  uVar9 = SUB41(this,0)" ( (ERROR "_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)gold::options::long_options;\n  __code = std::_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907);\n  pOVar6 = (One_option *)\n           std::\n           _Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>,_std::allocator<std::pair<const_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_gold::options::One_option*>_>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);" (comma_expression "_Hashtable<std::__cxx11::basic_string<char,_std" (binary_expression "_Hashtable<std::__cxx11::basic_string<char" (binary_expression "_Hashtable<std" identifier < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "One_option*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (binary_expression "One_option*>_>,_std" (binary_expression "One_option*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : : (comma_expression "_Hashtable_traits<true,_false,_true>_>\n          *)gold" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n          *)gold" identifier , (binary_expression "_true>_>\n          *)gold" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)gold" * (ERROR ")" )) identifier)))) : : identifier : : identifier ; (assignment_expression "__code = std" identifier = identifier) : : (call_expression "_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907)" identifier (argument_list "(option._M_dataplus._M_p,option._M_string_length,0xc70f6907)" ( (field_expression "option._M_dataplus._M_p" (field_expression "option._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "option._M_string_length" identifier . field_identifier) , number_literal ))) ; (assignment_expression "pOVar6 = (One_option *)\n           std" identifier = (cast_expression "(One_option *)\n           std" ( (type_descriptor "One_option *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : : (binary_expression "_Hashtable<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "One_option*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_gold" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (binary_expression "One_option*>_>,_std" (binary_expression "One_option*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>_>,_std" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : : (comma_expression "_Hashtable_traits<true,_false,_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code)" identifier , (binary_expression "_true>_>\n           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code)" identifier (argument_list "(this,__code % this->_M_bucket_count,__k,__code)" ( identifier , (binary_expression "__code % this->_M_bucket_count" identifier % (field_expression "this->_M_bucket_count" identifier -> field_identifier)) , identifier , identifier )))))) ;) (assignment_expression "uVar9 = SUB41(this,0)" identifier = (call_expression "SUB41(this,0)" identifier (argument_list "(this,0)" ( identifier , number_literal )))) ))) ;) (if_statement "if ((pOVar6 == (One_option *)0x0) ||\n     (pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p, pOVar6 == (One_option *)0x0))\n  goto LAB_000df54f;" if (parenthesized_expression "((pOVar6 == (One_option *)0x0) ||\n     (pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p, pOVar6 == (One_option *)0x0))" ( (binary_expression "(pOVar6 == (One_option *)0x0) ||\n     (pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p, pOVar6 == (One_option *)0x0)" (parenthesized_expression "(pOVar6 == (One_option *)0x0)" ( (binary_expression "pOVar6 == (One_option *)0x0" identifier == (cast_expression "(One_option *)0x0" ( (type_descriptor "One_option *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p, pOVar6 == (One_option *)0x0)" ( (comma_expression "pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p, pOVar6 == (One_option *)0x0" (assignment_expression "pOVar6 = (One_option *)(pOVar6->longname)._M_dataplus._M_p" identifier = (cast_expression "(One_option *)(pOVar6->longname)._M_dataplus._M_p" ( (type_descriptor "One_option *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pOVar6->longname)._M_dataplus._M_p" (field_expression "(pOVar6->longname)._M_dataplus" (parenthesized_expression "(pOVar6->longname)" ( (field_expression "pOVar6->longname" identifier -> field_identifier) )) . field_identifier) . field_identifier))) , (binary_expression "pOVar6 == (One_option *)0x0" identifier == (cast_expression "(One_option *)0x0" ( (type_descriptor "One_option *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_000df54f;" goto statement_identifier ;)) (expression_statement "pOVar6 = *(One_option **)&pOVar6->shortname;" (assignment_expression "pOVar6 = *(One_option **)&pOVar6->shortname" identifier = (pointer_expression "*(One_option **)&pOVar6->shortname" * (cast_expression "(One_option **)&pOVar6->shortname" ( (type_descriptor "One_option **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pOVar6->shortname" & (field_expression "pOVar6->shortname" identifier -> field_identifier))))) ;) (expression_statement "DVar2 = pOVar6->dashes;" (assignment_expression "DVar2 = pOVar6->dashes" identifier = (field_expression "pOVar6->dashes" identifier -> field_identifier)) ;) (if_statement "if (*__s == '-') {\n    if (__s[1] == '-') {\n      if ((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)) goto LAB_000df5a8;\n    }\n    else if (EXACTLY_ONE_DASH < DVar2) {\nLAB_000df5a8:\n      pOVar6 = (One_option *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (DVar2 != DASH_Z) goto LAB_000df5a8;" if (parenthesized_expression "(*__s == '-')" ( (binary_expression "*__s == '-'" (pointer_expression "*__s" * identifier) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n    if (__s[1] == '-') {\n      if ((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)) goto LAB_000df5a8;\n    }\n    else if (EXACTLY_ONE_DASH < DVar2) {\nLAB_000df5a8:\n      pOVar6 = (One_option *)0x0;\n      goto LAB_000df54f;\n    }\n  }" { (if_statement "if (__s[1] == '-') {\n      if ((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)) goto LAB_000df5a8;\n    }\n    else if (EXACTLY_ONE_DASH < DVar2) {\nLAB_000df5a8:\n      pOVar6 = (One_option *)0x0;\n      goto LAB_000df54f;\n    }" if (parenthesized_expression "(__s[1] == '-')" ( (binary_expression "__s[1] == '-'" (subscript_expression "__s[1]" identifier [ number_literal ]) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n      if ((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)) goto LAB_000df5a8;\n    }" { (if_statement "if ((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)) goto LAB_000df5a8;" if (parenthesized_expression "((DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2))" ( (binary_expression "(DVar2 != EXACTLY_TWO_DASHES) && (TWO_DASHES < DVar2)" (parenthesized_expression "(DVar2 != EXACTLY_TWO_DASHES)" ( (binary_expression "DVar2 != EXACTLY_TWO_DASHES" identifier != identifier) )) && (parenthesized_expression "(TWO_DASHES < DVar2)" ( (binary_expression "TWO_DASHES < DVar2" identifier < identifier) ))) )) (goto_statement "goto LAB_000df5a8;" goto statement_identifier ;)) }) (else_clause "else if (EXACTLY_ONE_DASH < DVar2) {\nLAB_000df5a8:\n      pOVar6 = (One_option *)0x0;\n      goto LAB_000df54f;\n    }" else (if_statement "if (EXACTLY_ONE_DASH < DVar2) {\nLAB_000df5a8:\n      pOVar6 = (One_option *)0x0;\n      goto LAB_000df54f;\n    }" if (parenthesized_expression "(EXACTLY_ONE_DASH < DVar2)" ( (binary_expression "EXACTLY_ONE_DASH < DVar2" identifier < identifier) )) (compound_statement "{\nLAB_000df5a8:\n      pOVar6 = (One_option *)0x0;\n      goto LAB_000df54f;\n    }" { (labeled_statement "LAB_000df5a8:\n      pOVar6 = (One_option *)0x0;" statement_identifier : (expression_statement "pOVar6 = (One_option *)0x0;" (assignment_expression "pOVar6 = (One_option *)0x0" identifier = (cast_expression "(One_option *)0x0" ( (type_descriptor "One_option *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_000df54f;" goto statement_identifier ;) })))) }) (else_clause "else if (DVar2 != DASH_Z) goto LAB_000df5a8;" else (if_statement "if (DVar2 != DASH_Z) goto LAB_000df5a8;" if (parenthesized_expression "(DVar2 != DASH_Z)" ( (binary_expression "DVar2 != DASH_Z" identifier != identifier) )) (goto_statement "goto LAB_000df5a8;" goto statement_identifier ;)))) (expression_statement "iVar3 = *i;" (assignment_expression "iVar3 = *i" identifier = (pointer_expression "*i" * identifier)) ;) (expression_statement "iVar1 = iVar3 + 1;" (assignment_expression "iVar1 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "*i = iVar1;" (assignment_expression "*i = iVar1" (pointer_expression "*i" * identifier) = identifier) ;) (if_statement "if (pOVar6->helparg == (char *)0x0) {\n    if (pcVar4 != (char *)0x0) {\nLAB_000df643:\n      pcVar7 = (char *)gettext("unexpected argument");\n      usage(pcVar7,__s);\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      pOVar6 = (One_option *)\n               (anonymous_namespace)::parse_long_option\n                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc);\n      return pOVar6;\n    }\n    *arg = (char *)0x0;\n  }\n  else if (pcVar4 == (char *)0x0) {\n    if (pOVar6->optional_arg == false) {\n      if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }\n      *i = iVar3 + 2;\n      *arg = argv[iVar1];\n    }\n    else {\n      *arg = pOVar6->default_value;\n    }\n  }\n  else {\n    *arg = pcVar4 + 1;\n  }" if (parenthesized_expression "(pOVar6->helparg == (char *)0x0)" ( (binary_expression "pOVar6->helparg == (char *)0x0" (field_expression "pOVar6->helparg" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pcVar4 != (char *)0x0) {\nLAB_000df643:\n      pcVar7 = (char *)gettext("unexpected argument");\n      usage(pcVar7,__s);\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      pOVar6 = (One_option *)\n               (anonymous_namespace)::parse_long_option\n                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc);\n      return pOVar6;\n    }\n    *arg = (char *)0x0;\n  }" { (if_statement "if (pcVar4 != (char *)0x0) {\nLAB_000df643:\n      pcVar7 = (char *)gettext("unexpected argument");\n      usage(pcVar7,__s);\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      pOVar6 = (One_option *)\n               (anonymous_namespace)::parse_long_option\n                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc);\n      return pOVar6;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000df643:\n      pcVar7 = (char *)gettext("unexpected argument");\n      usage(pcVar7,__s);\n                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */\n      pOVar6 = (One_option *)\n               (anonymous_namespace)::parse_long_option\n                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc);\n      return pOVar6;\n    }" { (labeled_statement "LAB_000df643:\n      pcVar7 = (char *)gettext("unexpected argument");" statement_identifier : (expression_statement "pcVar7 = (char *)gettext("unexpected argument");" (assignment_expression "pcVar7 = (char *)gettext("unexpected argument")" identifier = (cast_expression "(char *)gettext("unexpected argument")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("unexpected argument")" identifier (argument_list "("unexpected argument")" ( (string_literal ""unexpected argument"" " string_content ") ))))) ;)) (expression_statement "usage(pcVar7,__s);" (call_expression "usage(pcVar7,__s)" identifier (argument_list "(pcVar7,__s)" ( identifier , identifier ))) ;) comment (ERROR "pOVar6 = (One_option *)\n               (anonymous_namespace)::" (assignment_expression "pOVar6 = (One_option *)\n               (anonymous_namespace)" identifier = (cast_expression "(One_option *)\n               (anonymous_namespace)" ( (type_descriptor "One_option *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(anonymous_namespace)" ( identifier )))) : :) (expression_statement "parse_long_option\n                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc);" (call_expression "parse_long_option\n                         (in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc)" identifier (argument_list "(in_stack_ffffffa8,(char **)&paVar8->_M_allocated_capacity,(bool)uVar9,\n                          (char **)__k,(int *)argc)" ( identifier , (cast_expression "(char **)&paVar8->_M_allocated_capacity" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&paVar8->_M_allocated_capacity" & (field_expression "paVar8->_M_allocated_capacity" identifier -> field_identifier))) , (cast_expression "(bool)uVar9" ( (type_descriptor "bool" primitive_type) ) identifier) , (cast_expression "(char **)__k" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , (cast_expression "(int *)argc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (return_statement "return pOVar6;" return identifier ;) })) (expression_statement "*arg = (char *)0x0;" (assignment_expression "*arg = (char *)0x0" (pointer_expression "*arg" * identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if (pcVar4 == (char *)0x0) {\n    if (pOVar6->optional_arg == false) {\n      if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }\n      *i = iVar3 + 2;\n      *arg = argv[iVar1];\n    }\n    else {\n      *arg = pOVar6->default_value;\n    }\n  }\n  else {\n    *arg = pcVar4 + 1;\n  }" else (if_statement "if (pcVar4 == (char *)0x0) {\n    if (pOVar6->optional_arg == false) {\n      if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }\n      *i = iVar3 + 2;\n      *arg = argv[iVar1];\n    }\n    else {\n      *arg = pOVar6->default_value;\n    }\n  }\n  else {\n    *arg = pcVar4 + 1;\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pOVar6->optional_arg == false) {\n      if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }\n      *i = iVar3 + 2;\n      *arg = argv[iVar1];\n    }\n    else {\n      *arg = pOVar6->default_value;\n    }\n  }" { (if_statement "if (pOVar6->optional_arg == false) {\n      if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }\n      *i = iVar3 + 2;\n      *arg = argv[iVar1];\n    }\n    else {\n      *arg = pOVar6->default_value;\n    }" if (parenthesized_expression "(pOVar6->optional_arg == false)" ( (binary_expression "pOVar6->optional_arg == false" (field_expression "pOVar6->optional_arg" identifier -> field_identifier) == false) )) (compound_statement "{\n      if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }\n      *i = iVar3 + 2;\n      *arg = argv[iVar1];\n    }" { (if_statement "if ((argc <= iVar1) || (equals_only)) {\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }" if (parenthesized_expression "((argc <= iVar1) || (equals_only))" ( (binary_expression "(argc <= iVar1) || (equals_only)" (parenthesized_expression "(argc <= iVar1)" ( (binary_expression "argc <= iVar1" identifier <= identifier) )) || (parenthesized_expression "(equals_only)" ( identifier ))) )) (compound_statement "{\n        pcVar7 = (char *)gettext("missing argument");\n                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */\n        usage(pcVar7,__s);\n        goto LAB_000df643;\n      }" { (expression_statement "pcVar7 = (char *)gettext("missing argument");" (assignment_expression "pcVar7 = (char *)gettext("missing argument")" identifier = (cast_expression "(char *)gettext("missing argument")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("missing argument")" identifier (argument_list "("missing argument")" ( (string_literal ""missing argument"" " string_content ") ))))) ;) comment (expression_statement "usage(pcVar7,__s);" (call_expression "usage(pcVar7,__s)" identifier (argument_list "(pcVar7,__s)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_000df643;" goto statement_identifier ;) })) (expression_statement "*i = iVar3 + 2;" (assignment_expression "*i = iVar3 + 2" (pointer_expression "*i" * identifier) = (binary_expression "iVar3 + 2" identifier + number_literal)) ;) (expression_statement "*arg = argv[iVar1];" (assignment_expression "*arg = argv[iVar1]" (pointer_expression "*arg" * identifier) = (subscript_expression "argv[iVar1]" identifier [ identifier ])) ;) }) (else_clause "else {\n      *arg = pOVar6->default_value;\n    }" else (compound_statement "{\n      *arg = pOVar6->default_value;\n    }" { (expression_statement "*arg = pOVar6->default_value;" (assignment_expression "*arg = pOVar6->default_value" (pointer_expression "*arg" * identifier) = (field_expression "pOVar6->default_value" identifier -> field_identifier)) ;) }))) }) (else_clause "else {\n    *arg = pcVar4 + 1;\n  }" else (compound_statement "{\n    *arg = pcVar4 + 1;\n  }" { (expression_statement "*arg = pcVar4 + 1;" (assignment_expression "*arg = pcVar4 + 1" (pointer_expression "*arg" * identifier) = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }))))) (labeled_statement "LAB_000df54f:\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)option._M_dataplus._M_p != paVar8) {\n    operator_delete(option._M_dataplus._M_p);\n  }" statement_identifier : (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)option._M_dataplus._M_p != paVar8) {\n    operator_delete(option._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)option._M_dataplus._M_p != paVar8)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)option._M_dataplus._M_p != paVar8)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)option._M_dataplus._M_p != paVar8" (binary_expression "allocator<char>_>_9\n       *)option._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)option._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "option._M_dataplus._M_p" (field_expression "option._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n    operator_delete(option._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(option._M_dataplus._M_p);" (call_expression "operator_delete(option._M_dataplus._M_p)" identifier (argument_list "(option._M_dataplus._M_p)" ( (field_expression "option._M_dataplus._M_p" (field_expression "option._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) }))) (return_statement "return pOVar6;" return identifier ;) (ERROR "}" }))
(translation_unit "int * __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)\n\n{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}\n\n" (function_definition "int * __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)\n\n{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)" identifier (parameter_list "(int param_1,int param_2,char param_3,int *param_4,int *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "char param_3" primitive_type identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "__s_00 = *(char **)(param_2 + *param_5 * 4);" (assignment_expression "__s_00 = *(char **)(param_2 + *param_5 * 4)" identifier = (pointer_expression "*(char **)(param_2 + *param_5 * 4)" * (cast_expression "(char **)(param_2 + *param_5 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + *param_5 * 4)" ( (binary_expression "param_2 + *param_5 * 4" identifier + (binary_expression "*param_5 * 4" (pointer_expression "*param_5" * identifier) * number_literal)) ))))) ;) (expression_statement "pcVar3 = strchr(__s_00,0x3d);" (assignment_expression "pcVar3 = strchr(__s_00,0x3d)" identifier = (call_expression "strchr(__s_00,0x3d)" identifier (argument_list "(__s_00,0x3d)" ( identifier , number_literal )))) ;) (expression_statement "sVar4 = strspn(__s_00,"-");" (assignment_expression "sVar4 = strspn(__s_00,"-")" identifier = (call_expression "strspn(__s_00,"-")" identifier (argument_list "(__s_00,"-")" ( identifier , (string_literal ""-"" " string_content ") )))) ;) (expression_statement "__s = __s_00 + sVar4;" (assignment_expression "__s = __s_00 + sVar4" identifier = (binary_expression "__s_00 + sVar4" identifier + identifier)) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = strlen(__s);\n  }" { (expression_statement "sVar4 = strlen(__s);" (assignment_expression "sVar4 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) }) (else_clause "else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" else (compound_statement "{\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" { (expression_statement "sVar4 = (int)pcVar3 - (int)__s;" (assignment_expression "sVar4 = (int)pcVar3 - (int)__s" identifier = (binary_expression "(int)pcVar3 - (int)__s" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_00050e40(&local_34,__s,__s + sVar4,0);" (call_expression "FUN_00050e40(&local_34,__s,__s + sVar4,0)" identifier (argument_list "(&local_34,__s,__s + sVar4,0)" ( (pointer_expression "&local_34" & identifier) , identifier , (binary_expression "__s + sVar4" identifier + identifier) , number_literal ))) ;) (expression_statement "iVar1 = DAT_003951e0;" (assignment_expression "iVar1 = DAT_003951e0" identifier = identifier) ;) (expression_statement "uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);" (assignment_expression "uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907)" identifier = (call_expression "FUN_001e52b0(local_34,local_30,0xc70f6907)" identifier (argument_list "(local_34,local_30,0xc70f6907)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);" (assignment_expression "piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" identifier = (cast_expression "(int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" identifier (argument_list "(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" ( identifier , (binary_expression "uVar5 % *(uint *)(iVar1 + 4)" identifier % (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) , (pointer_expression "&local_34" & identifier) , identifier ))))) ;) (if_statement "if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;" if (parenthesized_expression "((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0))" ( (binary_expression "(piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)" (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)" ( (comma_expression "piVar6 = (int *)*piVar6, piVar6 == (int *)0x0" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) , (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_000df54f;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)piVar6[7];" (assignment_expression "piVar6 = (int *)piVar6[7]" identifier = (cast_expression "(int *)piVar6[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[7]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = piVar6[6];" (assignment_expression "uVar5 = piVar6[6]" identifier = (subscript_expression "piVar6[6]" identifier [ number_literal ])) ;) (if_statement "if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;" if (parenthesized_expression "(*__s_00 == '-')" ( (binary_expression "*__s_00 == '-'" (pointer_expression "*__s_00" * identifier) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }" { (if_statement "if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" if (parenthesized_expression "(__s_00[1] == '-')" ( (binary_expression "__s_00[1] == '-'" (subscript_expression "__s_00[1]" identifier [ number_literal ]) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }" { (if_statement "if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;" if (parenthesized_expression "((uVar5 != 3) && (1 < uVar5))" ( (binary_expression "(uVar5 != 3) && (1 < uVar5)" (parenthesized_expression "(uVar5 != 3)" ( (binary_expression "uVar5 != 3" identifier != number_literal) )) && (parenthesized_expression "(1 < uVar5)" ( (binary_expression "1 < uVar5" number_literal < identifier) ))) )) (goto_statement "goto LAB_000df5a8;" goto statement_identifier ;)) }) (else_clause "else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" else (if_statement "if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" if (parenthesized_expression "(2 < uVar5)" ( (binary_expression "2 < uVar5" number_literal < identifier) )) (compound_statement "{\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" { (labeled_statement "LAB_000df5a8:\n      piVar6 = (int *)0x0;" statement_identifier : (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_000df54f;" goto statement_identifier ;) })))) }) (else_clause "else if (uVar5 != 4) goto LAB_000df5a8;" else (if_statement "if (uVar5 != 4) goto LAB_000df5a8;" if (parenthesized_expression "(uVar5 != 4)" ( (binary_expression "uVar5 != 4" identifier != number_literal) )) (goto_statement "goto LAB_000df5a8;" goto statement_identifier ;)))) (expression_statement "iVar2 = *param_5;" (assignment_expression "iVar2 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar1 = iVar2 + 1;" (assignment_expression "iVar1 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "*param_5 = iVar1;" (assignment_expression "*param_5 = iVar1" (pointer_expression "*param_5" * identifier) = identifier) ;) (if_statement "if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" if (parenthesized_expression "(piVar6[10] == 0)" ( (binary_expression "piVar6[10] == 0" (subscript_expression "piVar6[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }" { (if_statement "if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }" { (labeled_statement "LAB_000df643:\n      gettext("unexpected argument");" statement_identifier : (expression_statement "gettext("unexpected argument");" (call_expression "gettext("unexpected argument")" identifier (argument_list "("unexpected argument")" ( (string_literal ""unexpected argument"" " string_content ") ))) ;)) (expression_statement "FUN_000dcd10();" (call_expression "FUN_000dcd10()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar6 = (int *)FUN_0002b93c();" (assignment_expression "piVar6 = (int *)FUN_0002b93c()" identifier = (cast_expression "(int *)FUN_0002b93c()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002b93c()" identifier (argument_list "()" ( ))))) ;) (return_statement "return piVar6;" return identifier ;) })) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) }) (else_clause "else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" else (if_statement "if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }" { (if_statement "if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }" if (parenthesized_expression "((char)piVar6[0xb] == '\0')" ( (binary_expression "(char)piVar6[0xb] == '\0'" (cast_expression "(char)piVar6[0xb]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar6[0xb]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }" { (if_statement "if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }" if (parenthesized_expression "((param_1 <= iVar1) || (param_3 != '\0'))" ( (binary_expression "(param_1 <= iVar1) || (param_3 != '\0')" (parenthesized_expression "(param_1 <= iVar1)" ( (binary_expression "param_1 <= iVar1" identifier <= identifier) )) || (parenthesized_expression "(param_3 != '\0')" ( (binary_expression "param_3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }" { (expression_statement "gettext("missing argument");" (call_expression "gettext("missing argument")" identifier (argument_list "("missing argument")" ( (string_literal ""missing argument"" " string_content ") ))) ;) (expression_statement "FUN_000dcd10();" (call_expression "FUN_000dcd10()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000df643;" goto statement_identifier ;) })) (expression_statement "*param_5 = iVar2 + 2;" (assignment_expression "*param_5 = iVar2 + 2" (pointer_expression "*param_5" * identifier) = (binary_expression "iVar2 + 2" identifier + number_literal)) ;) (expression_statement "*param_4 = *(int *)(param_2 + iVar1 * 4);" (assignment_expression "*param_4 = *(int *)(param_2 + iVar1 * 4)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(int *)(param_2 + iVar1 * 4)" * (cast_expression "(int *)(param_2 + iVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar1 * 4)" ( (binary_expression "param_2 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n      *param_4 = piVar6[8];\n    }" else (compound_statement "{\n      *param_4 = piVar6[8];\n    }" { (expression_statement "*param_4 = piVar6[8];" (assignment_expression "*param_4 = piVar6[8]" (pointer_expression "*param_4" * identifier) = (subscript_expression "piVar6[8]" identifier [ number_literal ])) ;) }))) }) (else_clause "else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" else (compound_statement "{\n    *param_4 = (int)(pcVar3 + 1);\n  }" { (expression_statement "*param_4 = (int)(pcVar3 + 1);" (assignment_expression "*param_4 = (int)(pcVar3 + 1)" (pointer_expression "*param_4" * identifier) = (cast_expression "(int)(pcVar3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar3 + 1)" ( (binary_expression "pcVar3 + 1" identifier + number_literal) )))) ;) }))))) (labeled_statement "LAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" statement_identifier : (if_statement "if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_34);\n  }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) }))) (return_statement "return piVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (binary_expression IDENT + IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (pointer_expression & IDENT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (goto_statement goto statement_identifier ;) })))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int * __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)\n\n{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}" (primitive_type "int") (pointer_declarator "* __regparm3 FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000df460(int param_1,int param_2,char param_3,int *param_4,int *param_5)" (identifier "FUN_000df460") (parameter_list "(int param_1,int param_2,char param_3,int *param_4,int *param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "char param_3" (primitive_type "char") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")")))) (compound_statement "{\n  int iVar1;\n  char *__s;\n  char *__s_00;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *piVar6;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  __s_00 = *(char **)(param_2 + *param_5 * 4);\n  pcVar3 = strchr(__s_00,0x3d);\n  sVar4 = strspn(__s_00,"-");\n  __s = __s_00 + sVar4;\n  if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }\n  local_34 = local_2c;\n  FUN_00050e40(&local_34,__s,__s + sVar4,0);\n  iVar1 = DAT_003951e0;\n  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);\n  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);\n  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;\n  piVar6 = (int *)piVar6[7];\n  uVar5 = piVar6[6];\n  if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;\n  iVar2 = *param_5;\n  iVar1 = iVar2 + 1;\n  *param_5 = iVar1;\n  if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }\nLAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  return piVar6;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "char *__s_00;" (primitive_type "char") (pointer_declarator "*__s_00" (* "*") (identifier "__s_00")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "__s_00 = *(char **)(param_2 + *param_5 * 4);" (assignment_expression "__s_00 = *(char **)(param_2 + *param_5 * 4)" (identifier "__s_00") (= "=") (pointer_expression "*(char **)(param_2 + *param_5 * 4)" (* "*") (cast_expression "(char **)(param_2 + *param_5 * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + *param_5 * 4)" (( "(") (binary_expression "param_2 + *param_5 * 4" (identifier "param_2") (+ "+") (binary_expression "*param_5 * 4" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "pcVar3 = strchr(__s_00,0x3d);" (assignment_expression "pcVar3 = strchr(__s_00,0x3d)" (identifier "pcVar3") (= "=") (call_expression "strchr(__s_00,0x3d)" (identifier "strchr") (argument_list "(__s_00,0x3d)" (( "(") (identifier "__s_00") (, ",") (number_literal "0x3d") () ")")))) (; ";")) (expression_statement "sVar4 = strspn(__s_00,"-");" (assignment_expression "sVar4 = strspn(__s_00,"-")" (identifier "sVar4") (= "=") (call_expression "strspn(__s_00,"-")" (identifier "strspn") (argument_list "(__s_00,"-")" (( "(") (identifier "__s_00") (, ",") (string_literal ""-"" (" """) (string_content "-") (" """)) () ")")))) (; ";")) (expression_statement "__s = __s_00 + sVar4;" (assignment_expression "__s = __s_00 + sVar4" (identifier "__s") (= "=") (binary_expression "__s_00 + sVar4" (identifier "__s_00") (+ "+") (identifier "sVar4"))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n    sVar4 = strlen(__s);\n  }\n  else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar4 = strlen(__s);\n  }" ({ "{") (expression_statement "sVar4 = strlen(__s);" (assignment_expression "sVar4 = strlen(__s)" (identifier "sVar4") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" (else "else") (compound_statement "{\n    sVar4 = (int)pcVar3 - (int)__s;\n  }" ({ "{") (expression_statement "sVar4 = (int)pcVar3 - (int)__s;" (assignment_expression "sVar4 = (int)pcVar3 - (int)__s" (identifier "sVar4") (= "=") (binary_expression "(int)pcVar3 - (int)__s" (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3")) (- "-") (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")))) (; ";")) (} "}")))) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "FUN_00050e40(&local_34,__s,__s + sVar4,0);" (call_expression "FUN_00050e40(&local_34,__s,__s + sVar4,0)" (identifier "FUN_00050e40") (argument_list "(&local_34,__s,__s + sVar4,0)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "__s") (, ",") (binary_expression "__s + sVar4" (identifier "__s") (+ "+") (identifier "sVar4")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar1 = DAT_003951e0;" (assignment_expression "iVar1 = DAT_003951e0" (identifier "iVar1") (= "=") (identifier "DAT_003951e0")) (; ";")) (expression_statement "uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);" (assignment_expression "uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907)" (identifier "uVar5") (= "=") (call_expression "FUN_001e52b0(local_34,local_30,0xc70f6907)" (identifier "FUN_001e52b0") (argument_list "(local_34,local_30,0xc70f6907)" (( "(") (identifier "local_34") (, ",") (identifier "local_30") (, ",") (number_literal "0xc70f6907") () ")")))) (; ";")) (expression_statement "piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);" (assignment_expression "piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" (identifier "piVar6") (= "=") (cast_expression "(int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" (identifier "FUN_000eb180") (argument_list "(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5)" (( "(") (identifier "iVar1") (, ",") (binary_expression "uVar5 % *(uint *)(iVar1 + 4)" (identifier "uVar5") (% "%") (pointer_expression "*(uint *)(iVar1 + 4)" (* "*") (cast_expression "(uint *)(iVar1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "uVar5") () ")"))))) (; ";")) (if_statement "if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;" (if "if") (parenthesized_expression "((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0))" (( "(") (binary_expression "(piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)" (parenthesized_expression "(piVar6 == (int *)0x0)" (( "(") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)" (( "(") (comma_expression "piVar6 = (int *)*piVar6, piVar6 == (int *)0x0" (assignment_expression "piVar6 = (int *)*piVar6" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (, ",") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_000df54f;" (goto "goto") (statement_identifier "LAB_000df54f") (; ";"))) (expression_statement "piVar6 = (int *)piVar6[7];" (assignment_expression "piVar6 = (int *)piVar6[7]" (identifier "piVar6") (= "=") (cast_expression "(int *)piVar6[7]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar6[7]" (identifier "piVar6") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "uVar5 = piVar6[6];" (assignment_expression "uVar5 = piVar6[6]" (identifier "uVar5") (= "=") (subscript_expression "piVar6[6]" (identifier "piVar6") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (*__s_00 == '-') {\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }\n  else if (uVar5 != 4) goto LAB_000df5a8;" (if "if") (parenthesized_expression "(*__s_00 == '-')" (( "(") (binary_expression "*__s_00 == '-'" (pointer_expression "*__s_00" (* "*") (identifier "__s_00")) (== "==") (char_literal "'-'" (' "'") (character "-") (' "'"))) () ")")) (compound_statement "{\n    if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }\n  }" ({ "{") (if_statement "if (__s_00[1] == '-') {\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }\n    else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" (if "if") (parenthesized_expression "(__s_00[1] == '-')" (( "(") (binary_expression "__s_00[1] == '-'" (subscript_expression "__s_00[1]" (identifier "__s_00") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'-'" (' "'") (character "-") (' "'"))) () ")")) (compound_statement "{\n      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;\n    }" ({ "{") (if_statement "if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;" (if "if") (parenthesized_expression "((uVar5 != 3) && (1 < uVar5))" (( "(") (binary_expression "(uVar5 != 3) && (1 < uVar5)" (parenthesized_expression "(uVar5 != 3)" (( "(") (binary_expression "uVar5 != 3" (identifier "uVar5") (!= "!=") (number_literal "3")) () ")")) (&& "&&") (parenthesized_expression "(1 < uVar5)" (( "(") (binary_expression "1 < uVar5" (number_literal "1") (< "<") (identifier "uVar5")) () ")"))) () ")")) (goto_statement "goto LAB_000df5a8;" (goto "goto") (statement_identifier "LAB_000df5a8") (; ";"))) (} "}")) (else_clause "else if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" (else "else") (if_statement "if (2 < uVar5) {\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" (if "if") (parenthesized_expression "(2 < uVar5)" (( "(") (binary_expression "2 < uVar5" (number_literal "2") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\nLAB_000df5a8:\n      piVar6 = (int *)0x0;\n      goto LAB_000df54f;\n    }" ({ "{") (labeled_statement "LAB_000df5a8:\n      piVar6 = (int *)0x0;" (statement_identifier "LAB_000df5a8") (: ":") (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" (identifier "piVar6") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (goto_statement "goto LAB_000df54f;" (goto "goto") (statement_identifier "LAB_000df54f") (; ";")) (} "}"))))) (} "}")) (else_clause "else if (uVar5 != 4) goto LAB_000df5a8;" (else "else") (if_statement "if (uVar5 != 4) goto LAB_000df5a8;" (if "if") (parenthesized_expression "(uVar5 != 4)" (( "(") (binary_expression "uVar5 != 4" (identifier "uVar5") (!= "!=") (number_literal "4")) () ")")) (goto_statement "goto LAB_000df5a8;" (goto "goto") (statement_identifier "LAB_000df5a8") (; ";"))))) (expression_statement "iVar2 = *param_5;" (assignment_expression "iVar2 = *param_5" (identifier "iVar2") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "iVar1 = iVar2 + 1;" (assignment_expression "iVar1 = iVar2 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_5 = iVar1;" (assignment_expression "*param_5 = iVar1" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (piVar6[10] == 0) {\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }\n  else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" (if "if") (parenthesized_expression "(piVar6[10] == 0)" (( "(") (binary_expression "piVar6[10] == 0" (subscript_expression "piVar6[10]" (identifier "piVar6") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }\n    *param_4 = 0;\n  }" ({ "{") (if_statement "if (pcVar3 != (char *)0x0) {\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000df643:\n      gettext("unexpected argument");\n      FUN_000dcd10();\n                    \n      piVar6 = (int *)FUN_0002b93c();\n      return piVar6;\n    }" ({ "{") (labeled_statement "LAB_000df643:\n      gettext("unexpected argument");" (statement_identifier "LAB_000df643") (: ":") (expression_statement "gettext("unexpected argument");" (call_expression "gettext("unexpected argument")" (identifier "gettext") (argument_list "("unexpected argument")" (( "(") (string_literal ""unexpected argument"" (" """) (string_content "unexpected argument") (" """)) () ")"))) (; ";"))) (expression_statement "FUN_000dcd10();" (call_expression "FUN_000dcd10()" (identifier "FUN_000dcd10") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar6 = (int *)FUN_0002b93c();" (assignment_expression "piVar6 = (int *)FUN_0002b93c()" (identifier "piVar6") (= "=") (cast_expression "(int *)FUN_0002b93c()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002b93c()" (identifier "FUN_0002b93c") (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return piVar6;" (return "return") (identifier "piVar6") (; ";")) (} "}"))) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" (else "else") (if_statement "if (pcVar3 == (char *)0x0) {\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }\n  else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }\n  }" ({ "{") (if_statement "if ((char)piVar6[0xb] == '\0') {\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }\n    else {\n      *param_4 = piVar6[8];\n    }" (if "if") (parenthesized_expression "((char)piVar6[0xb] == '\0')" (( "(") (binary_expression "(char)piVar6[0xb] == '\0'" (cast_expression "(char)piVar6[0xb]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar6[0xb]" (identifier "piVar6") ([ "[") (number_literal "0xb") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }\n      *param_5 = iVar2 + 2;\n      *param_4 = *(int *)(param_2 + iVar1 * 4);\n    }" ({ "{") (if_statement "if ((param_1 <= iVar1) || (param_3 != '\0')) {\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }" (if "if") (parenthesized_expression "((param_1 <= iVar1) || (param_3 != '\0'))" (( "(") (binary_expression "(param_1 <= iVar1) || (param_3 != '\0')" (parenthesized_expression "(param_1 <= iVar1)" (( "(") (binary_expression "param_1 <= iVar1" (identifier "param_1") (<= "<=") (identifier "iVar1")) () ")")) (|| "||") (parenthesized_expression "(param_3 != '\0')" (( "(") (binary_expression "param_3 != '\0'" (identifier "param_3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        gettext("missing argument");\n                    \n        FUN_000dcd10();\n        goto LAB_000df643;\n      }" ({ "{") (expression_statement "gettext("missing argument");" (call_expression "gettext("missing argument")" (identifier "gettext") (argument_list "("missing argument")" (( "(") (string_literal ""missing argument"" (" """) (string_content "missing argument") (" """)) () ")"))) (; ";")) (expression_statement "FUN_000dcd10();" (call_expression "FUN_000dcd10()" (identifier "FUN_000dcd10") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000df643;" (goto "goto") (statement_identifier "LAB_000df643") (; ";")) (} "}"))) (expression_statement "*param_5 = iVar2 + 2;" (assignment_expression "*param_5 = iVar2 + 2" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "iVar2 + 2" (identifier "iVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*param_4 = *(int *)(param_2 + iVar1 * 4);" (assignment_expression "*param_4 = *(int *)(param_2 + iVar1 * 4)" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (pointer_expression "*(int *)(param_2 + iVar1 * 4)" (* "*") (cast_expression "(int *)(param_2 + iVar1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar1 * 4)" (( "(") (binary_expression "param_2 + iVar1 * 4" (identifier "param_2") (+ "+") (binary_expression "iVar1 * 4" (identifier "iVar1") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      *param_4 = piVar6[8];\n    }" (else "else") (compound_statement "{\n      *param_4 = piVar6[8];\n    }" ({ "{") (expression_statement "*param_4 = piVar6[8];" (assignment_expression "*param_4 = piVar6[8]" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (subscript_expression "piVar6[8]" (identifier "piVar6") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    *param_4 = (int)(pcVar3 + 1);\n  }" (else "else") (compound_statement "{\n    *param_4 = (int)(pcVar3 + 1);\n  }" ({ "{") (expression_statement "*param_4 = (int)(pcVar3 + 1);" (assignment_expression "*param_4 = (int)(pcVar3 + 1)" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (cast_expression "(int)(pcVar3 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar3 + 1)" (( "(") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")))))) (labeled_statement "LAB_000df54f:\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" (statement_identifier "LAB_000df54f") (: ":") (if_statement "if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n    FUN_001e6db0(local_34);\n  }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}")))) (return_statement "return piVar6;" (return "return") (identifier "piVar6") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

type_4 * __regparm3
anon_unknown.dwarf_a6a7ee::type_1
          (int var_27,var_2 **argv,bool equals_only,var_2 **arg,int *i)

{
  int var_28;
  char *var_10;
  type_2 var_19;
  int var_24;
  char *var_12;
  size_t var_11;
  type_3 __code;
  type_4 *var_18;
  char *var_16;
  int in_stack_ffffffa8;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_5 uVar9;
  _Hashtable<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::pair<const_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_gold::options::type_4*>,_std::var_1<std::pair<const_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_gold::options::type_4*>var_3>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::hash<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_6<true,_false,var_7>var_3>
  *this;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *__k;
  type_6 option;
  
  var_10 = argv[*i];
  var_12 = var_8(var_10,0x3d);
  var_11 = var_9(var_10,"-");
  var_16 = var_10 + var_11;
  if (var_12 == (char *)0x0) {
    var_11 = var_13(var_16);
  }
  else {
    var_11 = (int)var_12 - (int)var_16;
  }
  __k = &option;
  var_5 = &option.field_2;
  option._M_dataplus._M_p = (type_7)var_5;
  std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
  var_14<var_15*>(__k,var_16,var_16 + var_11,0);
  this = (_Hashtable<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::pair<const_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_gold::options::type_4*>,_std::var_1<std::pair<const_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_gold::options::type_4*>var_3>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::hash<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_6<true,_false,var_7>var_3>
          *)gold::options::long_options;
  __code = std::_Hash_bytes(option._M_dataplus._M_p,option._M_string_length,0xc70f6907);
  var_18 = (type_4 *)
           std::
           _Hashtable<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::pair<const_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_gold::options::type_4*>,_std::var_1<std::pair<const_std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_gold::options::type_4*>var_3>,_std::__detail::_Select1st,_std::equal_to<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::hash<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_6<true,_false,var_7>var_3>
           ::_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);
  uVar9 = var_17(this,0);
  if ((var_18 == (type_4 *)0x0) ||
     (var_18 = (type_4 *)(var_18->longname)._M_dataplus._M_p, var_18 == (type_4 *)0x0))
  goto LAB_000df54f;
  var_18 = *(type_4 **)&var_18->shortname;
  var_19 = var_18->dashes;
  if (*var_10 == '-') {
    if (var_10[1] == '-') {
      if ((var_19 != var_20) && (var_21 < var_19)) goto LAB_000df5a8;
    }
    else if (var_22 < var_19) {
LAB_000df5a8:
      var_18 = (type_4 *)0x0;
      goto LAB_000df54f;
    }
  }
  else if (var_19 != var_23) goto LAB_000df5a8;
  var_24 = *i;
  var_28 = var_24 + 1;
  *i = var_28;
  if (var_18->helparg == (char *)0x0) {
    if (var_12 != (char *)0x0) {
LAB_000df643:
      var_16 = (char *)var_25("unexpected argument");
      var_26(var_16,var_10);
                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */
      var_18 = (type_4 *)
               (anonymous_namespace)::type_1
                         (in_stack_ffffffa8,(char **)&var_5->_M_allocated_capacity,(bool)uVar9,
                          (char **)__k,(int *)var_27);
      return var_18;
    }
    *arg = (char *)0x0;
  }
  else if (var_12 == (char *)0x0) {
    if (var_18->optional_arg == false) {
      if ((var_27 <= var_28) || (equals_only)) {
        var_16 = (char *)var_25("missing argument");
                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */
        var_26(var_16,var_10);
        goto LAB_000df643;
      }
      *i = var_24 + 2;
      *arg = argv[var_28];
    }
    else {
      *arg = var_18->default_value;
    }
  }
  else {
    *arg = var_12 + 1;
  }
LAB_000df54f:
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)option._M_dataplus._M_p != var_5) {
    var_29(option._M_dataplus._M_p);
  }
  return var_18;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int * __regparm3 MASKED(int param_1,int param_2,char param_3,int *param_4,int *param_5)

{
  int iVar1;
  char *__s;
  char *__s_00;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  uint uVar5;
  int *piVar6;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  __s_00 = *(char **)(param_2 + *param_5 * 4);
  pcVar3 = strchr(__s_00,0x3d);
  sVar4 = strspn(__s_00,"-");
  __s = __s_00 + sVar4;
  if (pcVar3 == (char *)0x0) {
    sVar4 = strlen(__s);
  }
  else {
    sVar4 = (int)pcVar3 - (int)__s;
  }
  local_34 = local_2c;
  FUN_00050e40(&local_34,__s,__s + sVar4,0);
  iVar1 = DAT_003951e0;
  uVar5 = FUN_001e52b0(local_34,local_30,0xc70f6907);
  piVar6 = (int *)FUN_000eb180(iVar1,uVar5 % *(uint *)(iVar1 + 4),&local_34,uVar5);
  if ((piVar6 == (int *)0x0) || (piVar6 = (int *)*piVar6, piVar6 == (int *)0x0)) goto LAB_000df54f;
  piVar6 = (int *)piVar6[7];
  uVar5 = piVar6[6];
  if (*__s_00 == '-') {
    if (__s_00[1] == '-') {
      if ((uVar5 != 3) && (1 < uVar5)) goto LAB_000df5a8;
    }
    else if (2 < uVar5) {
LAB_000df5a8:
      piVar6 = (int *)0x0;
      goto LAB_000df54f;
    }
  }
  else if (uVar5 != 4) goto LAB_000df5a8;
  iVar2 = *param_5;
  iVar1 = iVar2 + 1;
  *param_5 = iVar1;
  if (piVar6[10] == 0) {
    if (pcVar3 != (char *)0x0) {
LAB_000df643:
      gettext("unexpected argument");
      FUN_000dcd10();
                    /* catch() { ... } // from try @ 000df63e with catch @ 000df65e */
      piVar6 = (int *)FUN_0002b93c();
      return piVar6;
    }
    *param_4 = 0;
  }
  else if (pcVar3 == (char *)0x0) {
    if ((char)piVar6[0xb] == '\0') {
      if ((param_1 <= iVar1) || (param_3 != '\0')) {
        gettext("missing argument");
                    /* try { // try from 000df63e to 000df65d has its CatchHandler @ 000df65e */
        FUN_000dcd10();
        goto LAB_000df643;
      }
      *param_5 = iVar2 + 2;
      *param_4 = *(int *)(param_2 + iVar1 * 4);
    }
    else {
      *param_4 = piVar6[8];
    }
  }
  else {
    *param_4 = (int)(pcVar3 + 1);
  }
LAB_000df54f:
  if (local_34 != local_2c) {
    FUN_001e6db0(local_34);
  }
  return piVar6;
}

