
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: bool defines_symbol(Archive * this, Symbol * sym) */

bool __thiscall gold::Archive::defines_symbol(Archive *this,Symbol *sym)

{
  char *__s;
  pointer pAVar1;
  _Bit_type *p_Var2;
  char *__s1;
  size_t __n;
  uint uVar3;
  int iVar4;
  char *pcVar5;
  uint uVar6;
  
  __s = sym->name_;
  __n = strlen(__s);
  pAVar1 = (this->armap_).
           super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>
           ._M_impl._M_start;
  uVar3 = (int)(this->armap_).
               super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>
               ._M_impl._M_finish - (int)pAVar1 >> 4;
  if (uVar3 != 0) {
    uVar6 = 0;
    p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.
             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
    do {
      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {
        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;
        iVar4 = strncmp(pcVar5,__s,__n);
        if (iVar4 == 0) {
          if (pcVar5[__n] == '\0') {
            pcVar5 = sym->version_;
          }
          else {
            if (pcVar5[__n] != '@') goto LAB_00194adf;
            pcVar5 = pcVar5 + __n + 1;
            __s1 = sym->version_;
            if (*pcVar5 == '@') {
              if (__s1 == (char *)0x0) {
                return true;
              }
              pcVar5 = pcVar5 + 1;
            }
            else if (__s1 == (char *)0x0) goto LAB_00194adf;
            pcVar5 = (char *)strcmp(__s1,pcVar5);
          }
          if (pcVar5 == (char *)0x0) {
            return true;
          }
        }
      }
LAB_00194adf:
      uVar6 = uVar6 + 1;
    } while (uVar3 != uVar6);
  }
  return false;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 FUN_00194a70(int param_1,undefined4 *param_2)

{
  char *__s;
  int iVar1;
  int iVar2;
  char *__s1;
  size_t __n;
  uint uVar3;
  int iVar4;
  char *pcVar5;
  uint uVar6;
  
  __s = (char *)*param_2;
  __n = strlen(__s);
  iVar1 = *(int *)(param_1 + 0x28);
  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;
  if (uVar3 != 0) {
    uVar6 = 0;
    iVar2 = *(int *)(param_1 + 100);
    do {
      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {
        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));
        iVar4 = strncmp(pcVar5,__s,__n);
        if (iVar4 == 0) {
          if (pcVar5[__n] == '\0') {
            iVar4 = param_2[1];
          }
          else {
            if (pcVar5[__n] != '@') goto LAB_00194adf;
            pcVar5 = pcVar5 + __n + 1;
            __s1 = (char *)param_2[1];
            if (*pcVar5 == '@') {
              if (__s1 == (char *)0x0) {
                return 1;
              }
              pcVar5 = pcVar5 + 1;
            }
            else if (__s1 == (char *)0x0) goto LAB_00194adf;
            iVar4 = strcmp(__s1,pcVar5);
          }
          if (iVar4 == 0) {
            return 1;
          }
        }
      }
LAB_00194adf:
      uVar6 = uVar6 + 1;
    } while (uVar3 != uVar6);
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x1fa587
SUB ESP,0x38
MOV EAX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x20],EAX
PUSH EAX
CALL 0x000295f0
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [EAX + 0x28]
MOV EAX,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0xc],EAX
SUB EAX,EDI
SAR EAX,0x4
MOV dword ptr [ESP + 0x18],EDI
MOV dword ptr [ESP + 0x10],EAX
JZ 0x00194b88
MOV EAX,dword ptr [ESP + 0x40]
XOR EDI,EDI
MOV EAX,dword ptr [EAX + 0x64]
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[ESI + 0x1]
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x00194aec
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x00194b67
ADD EDI,0x1
CMP dword ptr [ESP + 0x10],EDI
JZ 0x00194b88
MOV ECX,EDI
MOV EDX,0x1
MOV EAX,EDI
SHL EDX,CL
MOV ECX,dword ptr [ESP + 0xc]
SHR EAX,0x5
TEST dword ptr [ECX + EAX*0x4],EDX
JNZ 0x00194adf
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,EDI
SUB ESP,0x4
SHL EAX,0x4
MOV EDX,dword ptr [ECX + EAX*0x1]
MOV EAX,dword ptr [ESP + 0x44]
ADD EDX,dword ptr [EAX + 0x34]
PUSH ESI
PUSH dword ptr [ESP + 0x1c]
MOV EBP,EDX
PUSH EDX
CALL 0x00029990
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00194adf
MOVZX EAX,byte ptr [EBP + ESI*0x1]
TEST AL,AL
JZ 0x00194ad0
CMP AL,0x40
JNZ 0x00194adf
MOV EAX,dword ptr [ESP + 0x1c]
LEA EDX,[EBP + EAX*0x1]
MOV EAX,dword ptr [ESP + 0x44]
CMP byte ptr [EDX],0x40
MOV EAX,dword ptr [EAX + 0x4]
JZ 0x00194b78
TEST EAX,EAX
JZ 0x00194adf
SUB ESP,0x8
PUSH EDX
PUSH EAX
CALL 0x00029b10
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00194adf
ADD ESP,0x2c
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EAX,EAX
JZ 0x00194b67
ADD EDX,0x1
JMP 0x00194b52
ADD ESP,0x2c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00194a70(int param_1,undefined4 *param_2)\n\n{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_00194a70(int param_1,undefined4 *param_2)\n\n{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00194a70(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "__s = (char *)*param_2;" (assignment_expression "__s = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;" (assignment_expression "uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4" identifier = (binary_expression "*(int *)(param_1 + 0x2c) - iVar1 >> 4" (binary_expression "*(int *)(param_1 + 0x2c) - iVar1" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) - identifier) >> number_literal)) ;) (if_statement "if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = *(int *)(param_1 + 100);" (assignment_expression "iVar2 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) (do_statement "do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);" do (compound_statement "{\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    }" { (if_statement "if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }" if (parenthesized_expression "((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0)" ( (binary_expression "(*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0" (parenthesized_expression "(*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f))" ( (binary_expression "*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)" (pointer_expression "*(uint *)(iVar2 + (uVar6 >> 5) * 4)" * (cast_expression "(uint *)(iVar2 + (uVar6 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (uVar6 >> 5) * 4)" ( (binary_expression "iVar2 + (uVar6 >> 5) * 4" identifier + (binary_expression "(uVar6 >> 5) * 4" (parenthesized_expression "(uVar6 >> 5)" ( (binary_expression "uVar6 >> 5" identifier >> number_literal) )) * number_literal)) )))) & (binary_expression "1 << ((byte)uVar6 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar6 & 0x1f)" ( (binary_expression "(byte)uVar6 & 0x1f" (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) == number_literal) )) (compound_statement "{\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }" { (expression_statement "pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));" (assignment_expression "pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" identifier = (cast_expression "(char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" ( (binary_expression "*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34)" (pointer_expression "*(int *)(iVar1 + uVar6 * 0x10)" * (cast_expression "(int *)(iVar1 + uVar6 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar6 * 0x10)" ( (binary_expression "iVar1 + uVar6 * 0x10" identifier + (binary_expression "uVar6 * 0x10" identifier * number_literal)) )))) + (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar4 = strncmp(pcVar5,__s,__n);" (assignment_expression "iVar4 = strncmp(pcVar5,__s,__n)" identifier = (call_expression "strncmp(pcVar5,__s,__n)" identifier (argument_list "(pcVar5,__s,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }" { (if_statement "if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" if (parenthesized_expression "(pcVar5[__n] == '\0')" ( (binary_expression "pcVar5[__n] == '\0'" (subscript_expression "pcVar5[__n]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar4 = param_2[1];\n          }" { (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" else (compound_statement "{\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" { (if_statement "if (pcVar5[__n] != '@') goto LAB_00194adf;" if (parenthesized_expression "(pcVar5[__n] != '@')" ( (binary_expression "pcVar5[__n] != '@'" (subscript_expression "pcVar5[__n]" identifier [ identifier ]) != (char_literal "'@'" ' character ')) )) (goto_statement "goto LAB_00194adf;" goto statement_identifier ;)) (expression_statement "pcVar5 = pcVar5 + __n + 1;" (assignment_expression "pcVar5 = pcVar5 + __n + 1" identifier = (binary_expression "pcVar5 + __n + 1" (binary_expression "pcVar5 + __n" identifier + identifier) + number_literal)) ;) (expression_statement "__s1 = (char *)param_2[1];" (assignment_expression "__s1 = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;" if (parenthesized_expression "(*pcVar5 == '@')" ( (binary_expression "*pcVar5 == '@'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'@'" ' character ')) )) (compound_statement "{\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" { (if_statement "if (__s1 == (char *)0x0) {\n                return 1;\n              }" if (parenthesized_expression "(__s1 == (char *)0x0)" ( (binary_expression "__s1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                return 1;\n              }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else if (__s1 == (char *)0x0) goto LAB_00194adf;" else (if_statement "if (__s1 == (char *)0x0) goto LAB_00194adf;" if (parenthesized_expression "(__s1 == (char *)0x0)" ( (binary_expression "__s1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00194adf;" goto statement_identifier ;)))) (expression_statement "iVar4 = strcmp(__s1,pcVar5);" (assignment_expression "iVar4 = strcmp(__s1,pcVar5)" identifier = (call_expression "strcmp(__s1,pcVar5)" identifier (argument_list "(__s1,pcVar5)" ( identifier , identifier )))) ;) }))) (if_statement "if (iVar4 == 0) {\n            return 1;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) })) })) (labeled_statement "LAB_00194adf:\n      uVar6 = uVar6 + 1;" statement_identifier : (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(uVar3 != uVar6)" ( (binary_expression "uVar3 != uVar6" identifier != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: bool defines_symbol(Archive * this, Symbol * sym) */\n\nbool __thiscall gold::Archive::defines_symbol(Archive *this,Symbol *sym)\n\n{\n  char *__s;\n  pointer pAVar1;\n  _Bit_type *p_Var2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = sym->name_;\n  __n = strlen(__s);\n  pAVar1 = (this->armap_).\n           super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n           ._M_impl._M_start;\n  uVar3 = (int)(this->armap_).\n               super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    do {\n      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return false;\n}\n\n" comment comment comment (function_definition "bool __thiscall gold::Archive::defines_symbol(Archive *this,Symbol *sym)\n\n{\n  char *__s;\n  pointer pAVar1;\n  _Bit_type *p_Var2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = sym->name_;\n  __n = strlen(__s);\n  pAVar1 = (this->armap_).\n           super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n           ._M_impl._M_start;\n  uVar3 = (int)(this->armap_).\n               super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    do {\n      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return false;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "defines_symbol(Archive *this,Symbol *sym)" identifier (parameter_list "(Archive *this,Symbol *sym)" ( (parameter_declaration "Archive *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol *sym" type_identifier (pointer_declarator "*sym" * identifier)) ))) (compound_statement "{\n  char *__s;\n  pointer pAVar1;\n  _Bit_type *p_Var2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = sym->name_;\n  __n = strlen(__s);\n  pAVar1 = (this->armap_).\n           super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n           ._M_impl._M_start;\n  uVar3 = (int)(this->armap_).\n               super__Vector_base<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    do {\n      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return false;\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "pointer pAVar1;" type_identifier identifier ;) (declaration "_Bit_type *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "__s = sym->name_;" (assignment_expression "__s = sym->name_" identifier = (field_expression "sym->name_" identifier -> field_identifier)) ;) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (ERROR "pAVar1 = (this->armap_).\n           super__Vector_base<gold::" (assignment_expression "pAVar1 = (this->armap_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->armap_).\n           super__Vector_base<gold" (field_expression "(this->armap_).\n           super__Vector_base" (parenthesized_expression "(this->armap_)" ( (field_expression "this->armap_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n           ._M_impl._M_start;" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>\n           ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>_>\n           ._M_impl._M_start;" (field_expression "Armap_entry>_>\n           ._M_impl._M_start" (field_expression "Armap_entry>_>\n           ._M_impl" (binary_expression "Armap_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (ERROR "uVar3 = (int)(this->armap_).\n               super__Vector_base<gold::" (assignment_expression "uVar3 = (int)(this->armap_).\n               super__Vector_base<gold" identifier = (binary_expression "(int)(this->armap_).\n               super__Vector_base<gold" (cast_expression "(int)(this->armap_).\n               super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->armap_).\n               super__Vector_base" (parenthesized_expression "(this->armap_)" ( (field_expression "this->armap_" identifier -> field_identifier) )) . field_identifier)) < identifier)) : :) (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1 >> 4;" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1 >> 4;" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1 >> 4;" (binary_expression "Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1 >> 4" (binary_expression "Armap_entry>_>\n               ._M_impl._M_finish - (int)pAVar1" (field_expression "Armap_entry>_>\n               ._M_impl._M_finish" (field_expression "Armap_entry>_>\n               ._M_impl" (binary_expression "Armap_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)pAVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ;))) (if_statement "if (uVar3 != 0) {\n    uVar6 = 0;\n    p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    do {\n      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = 0;\n    p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    do {\n      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;" (field_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p" (field_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base" (field_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start" (field_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data" (field_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool>_" (binary_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std::allocator<bool" (assignment_expression "p_Var2 = (this->armap_checked_).super__Bvector_base<std" identifier = (binary_expression "(this->armap_checked_).super__Bvector_base<std" (field_expression "(this->armap_checked_).super__Bvector_base" (parenthesized_expression "(this->armap_checked_)" ( (field_expression "this->armap_checked_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (do_statement "do {\n      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);" do (compound_statement "{\n      if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    }" { (if_statement "if ((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }" if (parenthesized_expression "((p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0)" ( (binary_expression "(p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)) == 0" (parenthesized_expression "(p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f))" ( (binary_expression "p_Var2[uVar6 >> 5] & 1 << ((byte)uVar6 & 0x1f)" (subscript_expression "p_Var2[uVar6 >> 5]" identifier [ (binary_expression "uVar6 >> 5" identifier >> number_literal) ]) & (binary_expression "1 << ((byte)uVar6 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar6 & 0x1f)" ( (binary_expression "(byte)uVar6 & 0x1f" (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) == number_literal) )) (compound_statement "{\n        pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }\n      }" { (expression_statement "pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset;" (assignment_expression "pcVar5 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset" identifier = (binary_expression "(this->armap_names_)._M_dataplus._M_p + (int)pAVar1[uVar6].name_offset" (field_expression "(this->armap_names_)._M_dataplus._M_p" (field_expression "(this->armap_names_)._M_dataplus" (parenthesized_expression "(this->armap_names_)" ( (field_expression "this->armap_names_" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (cast_expression "(int)pAVar1[uVar6].name_offset" ( (type_descriptor "int" primitive_type) ) (field_expression "pAVar1[uVar6].name_offset" (subscript_expression "pAVar1[uVar6]" identifier [ identifier ]) . field_identifier)))) ;) (expression_statement "iVar4 = strncmp(pcVar5,__s,__n);" (assignment_expression "iVar4 = strncmp(pcVar5,__s,__n)" identifier = (call_expression "strncmp(pcVar5,__s,__n)" identifier (argument_list "(pcVar5,__s,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }\n          if (pcVar5 == (char *)0x0) {\n            return true;\n          }\n        }" { (if_statement "if (pcVar5[__n] == '\0') {\n            pcVar5 = sym->version_;\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }" if (parenthesized_expression "(pcVar5[__n] == '\0')" ( (binary_expression "pcVar5[__n] == '\0'" (subscript_expression "pcVar5[__n]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            pcVar5 = sym->version_;\n          }" { (expression_statement "pcVar5 = sym->version_;" (assignment_expression "pcVar5 = sym->version_" identifier = (field_expression "sym->version_" identifier -> field_identifier)) ;) }) (else_clause "else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }" else (compound_statement "{\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = sym->version_;\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            pcVar5 = (char *)strcmp(__s1,pcVar5);\n          }" { (if_statement "if (pcVar5[__n] != '@') goto LAB_00194adf;" if (parenthesized_expression "(pcVar5[__n] != '@')" ( (binary_expression "pcVar5[__n] != '@'" (subscript_expression "pcVar5[__n]" identifier [ identifier ]) != (char_literal "'@'" ' character ')) )) (goto_statement "goto LAB_00194adf;" goto statement_identifier ;)) (expression_statement "pcVar5 = pcVar5 + __n + 1;" (assignment_expression "pcVar5 = pcVar5 + __n + 1" identifier = (binary_expression "pcVar5 + __n + 1" (binary_expression "pcVar5 + __n" identifier + identifier) + number_literal)) ;) (expression_statement "__s1 = sym->version_;" (assignment_expression "__s1 = sym->version_" identifier = (field_expression "sym->version_" identifier -> field_identifier)) ;) (if_statement "if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;" if (parenthesized_expression "(*pcVar5 == '@')" ( (binary_expression "*pcVar5 == '@'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'@'" ' character ')) )) (compound_statement "{\n              if (__s1 == (char *)0x0) {\n                return true;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" { (if_statement "if (__s1 == (char *)0x0) {\n                return true;\n              }" if (parenthesized_expression "(__s1 == (char *)0x0)" ( (binary_expression "__s1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                return true;\n              }" { (return_statement "return true;" return true ;) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else if (__s1 == (char *)0x0) goto LAB_00194adf;" else (if_statement "if (__s1 == (char *)0x0) goto LAB_00194adf;" if (parenthesized_expression "(__s1 == (char *)0x0)" ( (binary_expression "__s1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00194adf;" goto statement_identifier ;)))) (expression_statement "pcVar5 = (char *)strcmp(__s1,pcVar5);" (assignment_expression "pcVar5 = (char *)strcmp(__s1,pcVar5)" identifier = (cast_expression "(char *)strcmp(__s1,pcVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "strcmp(__s1,pcVar5)" identifier (argument_list "(__s1,pcVar5)" ( identifier , identifier ))))) ;) }))) (if_statement "if (pcVar5 == (char *)0x0) {\n            return true;\n          }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            return true;\n          }" { (return_statement "return true;" return true ;) })) })) })) (labeled_statement "LAB_00194adf:\n      uVar6 = uVar6 + 1;" statement_identifier : (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(uVar3 != uVar6)" ( (binary_expression "uVar3 != uVar6" identifier != identifier) )) ;) })) (return_statement "return false;" return false ;) })))
(translation_unit "undefined4 FUN_00194a70(int param_1,undefined4 *param_2)\n\n{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_00194a70(int param_1,undefined4 *param_2)\n\n{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00194a70(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "__s = (char *)*param_2;" (assignment_expression "__s = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;" (assignment_expression "uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4" identifier = (binary_expression "*(int *)(param_1 + 0x2c) - iVar1 >> 4" (binary_expression "*(int *)(param_1 + 0x2c) - iVar1" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) - identifier) >> number_literal)) ;) (if_statement "if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = *(int *)(param_1 + 100);" (assignment_expression "iVar2 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) (do_statement "do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);" do (compound_statement "{\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    }" { (if_statement "if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }" if (parenthesized_expression "((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0)" ( (binary_expression "(*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0" (parenthesized_expression "(*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f))" ( (binary_expression "*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)" (pointer_expression "*(uint *)(iVar2 + (uVar6 >> 5) * 4)" * (cast_expression "(uint *)(iVar2 + (uVar6 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (uVar6 >> 5) * 4)" ( (binary_expression "iVar2 + (uVar6 >> 5) * 4" identifier + (binary_expression "(uVar6 >> 5) * 4" (parenthesized_expression "(uVar6 >> 5)" ( (binary_expression "uVar6 >> 5" identifier >> number_literal) )) * number_literal)) )))) & (binary_expression "1 << ((byte)uVar6 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar6 & 0x1f)" ( (binary_expression "(byte)uVar6 & 0x1f" (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) == number_literal) )) (compound_statement "{\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }" { (expression_statement "pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));" (assignment_expression "pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" identifier = (cast_expression "(char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" ( (binary_expression "*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34)" (pointer_expression "*(int *)(iVar1 + uVar6 * 0x10)" * (cast_expression "(int *)(iVar1 + uVar6 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar6 * 0x10)" ( (binary_expression "iVar1 + uVar6 * 0x10" identifier + (binary_expression "uVar6 * 0x10" identifier * number_literal)) )))) + (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar4 = strncmp(pcVar5,__s,__n);" (assignment_expression "iVar4 = strncmp(pcVar5,__s,__n)" identifier = (call_expression "strncmp(pcVar5,__s,__n)" identifier (argument_list "(pcVar5,__s,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }" { (if_statement "if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" if (parenthesized_expression "(pcVar5[__n] == '\0')" ( (binary_expression "pcVar5[__n] == '\0'" (subscript_expression "pcVar5[__n]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar4 = param_2[1];\n          }" { (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" else (compound_statement "{\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" { (if_statement "if (pcVar5[__n] != '@') goto LAB_00194adf;" if (parenthesized_expression "(pcVar5[__n] != '@')" ( (binary_expression "pcVar5[__n] != '@'" (subscript_expression "pcVar5[__n]" identifier [ identifier ]) != (char_literal "'@'" ' character ')) )) (goto_statement "goto LAB_00194adf;" goto statement_identifier ;)) (expression_statement "pcVar5 = pcVar5 + __n + 1;" (assignment_expression "pcVar5 = pcVar5 + __n + 1" identifier = (binary_expression "pcVar5 + __n + 1" (binary_expression "pcVar5 + __n" identifier + identifier) + number_literal)) ;) (expression_statement "__s1 = (char *)param_2[1];" (assignment_expression "__s1 = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;" if (parenthesized_expression "(*pcVar5 == '@')" ( (binary_expression "*pcVar5 == '@'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'@'" ' character ')) )) (compound_statement "{\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" { (if_statement "if (__s1 == (char *)0x0) {\n                return 1;\n              }" if (parenthesized_expression "(__s1 == (char *)0x0)" ( (binary_expression "__s1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                return 1;\n              }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else if (__s1 == (char *)0x0) goto LAB_00194adf;" else (if_statement "if (__s1 == (char *)0x0) goto LAB_00194adf;" if (parenthesized_expression "(__s1 == (char *)0x0)" ( (binary_expression "__s1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00194adf;" goto statement_identifier ;)))) (expression_statement "iVar4 = strcmp(__s1,pcVar5);" (assignment_expression "iVar4 = strcmp(__s1,pcVar5)" identifier = (call_expression "strcmp(__s1,pcVar5)" identifier (argument_list "(__s1,pcVar5)" ( identifier , identifier )))) ;) }))) (if_statement "if (iVar4 == 0) {\n            return 1;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) })) })) (labeled_statement "LAB_00194adf:\n      uVar6 = uVar6 + 1;" statement_identifier : (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(uVar3 != uVar6)" ( (binary_expression "uVar3 != uVar6" identifier != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) )))) & (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00194a70(int param_1,undefined4 *param_2)\n\n{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_00194a70(int param_1,undefined4 *param_2)" (identifier "FUN_00194a70") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  char *__s;\n  int iVar1;\n  int iVar2;\n  char *__s1;\n  size_t __n;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  \n  __s = (char *)*param_2;\n  __n = strlen(__s);\n  iVar1 = *(int *)(param_1 + 0x28);\n  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;\n  if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }\n  return 0;\n}" ({ "{") (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *__s1;" (primitive_type "char") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (expression_statement "__s = (char *)*param_2;" (assignment_expression "__s = (char *)*param_2" (identifier "__s") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "__n = strlen(__s);" (assignment_expression "__n = strlen(__s)" (identifier "__n") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x28)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;" (assignment_expression "uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4" (identifier "uVar3") (= "=") (binary_expression "*(int *)(param_1 + 0x2c) - iVar1 >> 4" (binary_expression "*(int *)(param_1 + 0x2c) - iVar1" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (- "-") (identifier "iVar1")) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if (uVar3 != 0) {\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = 0;\n    iVar2 = *(int *)(param_1 + 100);\n    do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);\n  }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 100);" (assignment_expression "iVar2 = *(int *)(param_1 + 100)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (do_statement "do {\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    } while (uVar3 != uVar6);" (do "do") (compound_statement "{\n      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }\nLAB_00194adf:\n      uVar6 = uVar6 + 1;\n    }" ({ "{") (if_statement "if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0)" (( "(") (binary_expression "(*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0" (parenthesized_expression "(*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f))" (( "(") (binary_expression "*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)" (pointer_expression "*(uint *)(iVar2 + (uVar6 >> 5) * 4)" (* "*") (cast_expression "(uint *)(iVar2 + (uVar6 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + (uVar6 >> 5) * 4)" (( "(") (binary_expression "iVar2 + (uVar6 >> 5) * 4" (identifier "iVar2") (+ "+") (binary_expression "(uVar6 >> 5) * 4" (parenthesized_expression "(uVar6 >> 5)" (( "(") (binary_expression "uVar6 >> 5" (identifier "uVar6") (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (binary_expression "1 << ((byte)uVar6 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar6 & 0x1f)" (( "(") (binary_expression "(byte)uVar6 & 0x1f" (cast_expression "(byte)uVar6" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar6")) (& "&") (number_literal "0x1f")) () ")")))) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));\n        iVar4 = strncmp(pcVar5,__s,__n);\n        if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }\n      }" ({ "{") (expression_statement "pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));" (assignment_expression "pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" (identifier "pcVar5") (= "=") (cast_expression "(char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34))" (( "(") (binary_expression "*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34)" (pointer_expression "*(int *)(iVar1 + uVar6 * 0x10)" (* "*") (cast_expression "(int *)(iVar1 + uVar6 * 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + uVar6 * 0x10)" (( "(") (binary_expression "iVar1 + uVar6 * 0x10" (identifier "iVar1") (+ "+") (binary_expression "uVar6 * 0x10" (identifier "uVar6") (* "*") (number_literal "0x10"))) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) () ")")))) (; ";")) (expression_statement "iVar4 = strncmp(pcVar5,__s,__n);" (assignment_expression "iVar4 = strncmp(pcVar5,__s,__n)" (identifier "iVar4") (= "=") (call_expression "strncmp(pcVar5,__s,__n)" (identifier "strncmp") (argument_list "(pcVar5,__s,__n)" (( "(") (identifier "pcVar5") (, ",") (identifier "__s") (, ",") (identifier "__n") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }\n          if (iVar4 == 0) {\n            return 1;\n          }\n        }" ({ "{") (if_statement "if (pcVar5[__n] == '\0') {\n            iVar4 = param_2[1];\n          }\n          else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" (if "if") (parenthesized_expression "(pcVar5[__n] == '\0')" (( "(") (binary_expression "pcVar5[__n] == '\0'" (subscript_expression "pcVar5[__n]" (identifier "pcVar5") ([ "[") (identifier "__n") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            iVar4 = param_2[1];\n          }" ({ "{") (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" (identifier "iVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" (else "else") (compound_statement "{\n            if (pcVar5[__n] != '@') goto LAB_00194adf;\n            pcVar5 = pcVar5 + __n + 1;\n            __s1 = (char *)param_2[1];\n            if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;\n            iVar4 = strcmp(__s1,pcVar5);\n          }" ({ "{") (if_statement "if (pcVar5[__n] != '@') goto LAB_00194adf;" (if "if") (parenthesized_expression "(pcVar5[__n] != '@')" (( "(") (binary_expression "pcVar5[__n] != '@'" (subscript_expression "pcVar5[__n]" (identifier "pcVar5") ([ "[") (identifier "__n") (] "]")) (!= "!=") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")")) (goto_statement "goto LAB_00194adf;" (goto "goto") (statement_identifier "LAB_00194adf") (; ";"))) (expression_statement "pcVar5 = pcVar5 + __n + 1;" (assignment_expression "pcVar5 = pcVar5 + __n + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + __n + 1" (binary_expression "pcVar5 + __n" (identifier "pcVar5") (+ "+") (identifier "__n")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__s1 = (char *)param_2[1];" (assignment_expression "__s1 = (char *)param_2[1]" (identifier "__s1") (= "=") (cast_expression "(char *)param_2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (*pcVar5 == '@') {\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            else if (__s1 == (char *)0x0) goto LAB_00194adf;" (if "if") (parenthesized_expression "(*pcVar5 == '@')" (( "(") (binary_expression "*pcVar5 == '@'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")")) (compound_statement "{\n              if (__s1 == (char *)0x0) {\n                return 1;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" ({ "{") (if_statement "if (__s1 == (char *)0x0) {\n                return 1;\n              }" (if "if") (parenthesized_expression "(__s1 == (char *)0x0)" (( "(") (binary_expression "__s1 == (char *)0x0" (identifier "__s1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                return 1;\n              }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if (__s1 == (char *)0x0) goto LAB_00194adf;" (else "else") (if_statement "if (__s1 == (char *)0x0) goto LAB_00194adf;" (if "if") (parenthesized_expression "(__s1 == (char *)0x0)" (( "(") (binary_expression "__s1 == (char *)0x0" (identifier "__s1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00194adf;" (goto "goto") (statement_identifier "LAB_00194adf") (; ";"))))) (expression_statement "iVar4 = strcmp(__s1,pcVar5);" (assignment_expression "iVar4 = strcmp(__s1,pcVar5)" (identifier "iVar4") (= "=") (call_expression "strcmp(__s1,pcVar5)" (identifier "strcmp") (argument_list "(__s1,pcVar5)" (( "(") (identifier "__s1") (, ",") (identifier "pcVar5") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar4 == 0) {\n            return 1;\n          }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return 1;\n          }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00194adf:\n      uVar6 = uVar6 + 1;" (statement_identifier "LAB_00194adf") (: ":") (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(uVar3 != uVar6)" (( "(") (binary_expression "uVar3 != uVar6" (identifier "uVar3") (!= "!=") (identifier "uVar6")) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: bool defines_symbol(Archive * this, Symbol * sym) */

bool __thiscall gold::type_1::function_1(type_1 *this,type_2 *sym)

{
  char *__s;
  type_3 pAVar1;
  type_4 *p_Var2;
  char *var_12;
  size_t var_11;
  type_5 var_4;
  int var_9;
  char *var_10;
  type_5 var_7;
  
  __s = sym->name_;
  var_11 = var_1(__s);
  pAVar1 = (this->armap_).
           super__Vector_base<gold::Archive::var_2,_std::allocator<gold::Archive::var_2>var_3>
           ._M_impl._M_start;
  var_4 = (int)(this->armap_).
               super__Vector_base<gold::Archive::var_2,_std::allocator<gold::Archive::var_2>var_3>
               ._M_impl._M_finish - (int)pAVar1 >> 4;
  if (var_4 != 0) {
    var_7 = 0;
    p_Var2 = (this->armap_checked_).super__Bvector_base<var_5::allocator<var_6>var_3>._M_impl.
             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
    do {
      if ((p_Var2[var_7 >> 5] & 1 << ((type_6)var_7 & 0x1f)) == 0) {
        var_10 = (this->armap_names_)._M_dataplus._M_p + (int)pAVar1[var_7].name_offset;
        var_9 = var_8(var_10,__s,var_11);
        if (var_9 == 0) {
          if (var_10[var_11] == '\0') {
            var_10 = sym->version_;
          }
          else {
            if (var_10[var_11] != '@') goto LAB_00194adf;
            var_10 = var_10 + var_11 + 1;
            var_12 = sym->version_;
            if (*var_10 == '@') {
              if (var_12 == (char *)0x0) {
                return true;
              }
              var_10 = var_10 + 1;
            }
            else if (var_12 == (char *)0x0) goto LAB_00194adf;
            var_10 = (char *)var_13(var_12,var_10);
          }
          if (var_10 == (char *)0x0) {
            return true;
          }
        }
      }
LAB_00194adf:
      var_7 = var_7 + 1;
    } while (var_4 != var_7);
  }
  return false;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 MASKED(int param_1,undefined4 *param_2)

{
  char *__s;
  int iVar1;
  int iVar2;
  char *__s1;
  size_t __n;
  uint uVar3;
  int iVar4;
  char *pcVar5;
  uint uVar6;
  
  __s = (char *)*param_2;
  __n = strlen(__s);
  iVar1 = *(int *)(param_1 + 0x28);
  uVar3 = *(int *)(param_1 + 0x2c) - iVar1 >> 4;
  if (uVar3 != 0) {
    uVar6 = 0;
    iVar2 = *(int *)(param_1 + 100);
    do {
      if ((*(uint *)(iVar2 + (uVar6 >> 5) * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0) {
        pcVar5 = (char *)(*(int *)(iVar1 + uVar6 * 0x10) + *(int *)(param_1 + 0x34));
        iVar4 = strncmp(pcVar5,__s,__n);
        if (iVar4 == 0) {
          if (pcVar5[__n] == '\0') {
            iVar4 = param_2[1];
          }
          else {
            if (pcVar5[__n] != '@') goto LAB_00194adf;
            pcVar5 = pcVar5 + __n + 1;
            __s1 = (char *)param_2[1];
            if (*pcVar5 == '@') {
              if (__s1 == (char *)0x0) {
                return 1;
              }
              pcVar5 = pcVar5 + 1;
            }
            else if (__s1 == (char *)0x0) goto LAB_00194adf;
            iVar4 = strcmp(__s1,pcVar5);
          }
          if (iVar4 == 0) {
            return 1;
          }
        }
      }
LAB_00194adf:
      uVar6 = uVar6 + 1;
    } while (uVar3 != uVar6);
  }
  return 0;
}

