
symbolS * md_undefined_symbol(char *name)

{
  symbolS *psVar1;
  char *format;
  long lVar2;
  byte *pbVar3;
  byte *pbVar4;
  bool bVar5;
  bool bVar6;
  
  psVar1 = (symbolS *)0x0;
  if (*name != '_') {
    return (symbolS *)0x0;
  }
  if (name[1] == 'G') {
    bVar5 = (byte)name[2] < 0x4c;
    bVar6 = name[2] == 0x4c;
    if (bVar6) {
      lVar2 = 0x16;
      pbVar3 = (byte *)name;
      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";
      do {
        if (lVar2 == 0) break;
        lVar2 = lVar2 + -1;
        bVar5 = *pbVar3 < *pbVar4;
        bVar6 = *pbVar3 == *pbVar4;
        pbVar3 = pbVar3 + 1;
        pbVar4 = pbVar4 + 1;
      } while (bVar6);
      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {
        psVar1 = symbol_find(name);
        if (psVar1 != (symbolS *)0x0) {
          format = (char *)dcgettext(0,"GOT already in symbol table",5);
          as_bad(format);
        }
        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);
        return GOT_symbol;
      }
    }
  }
  return psVar1;
}



long FUN_00142540(byte *param_1)

{
  long lVar1;
  undefined8 uVar2;
  long lVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  
  lVar1 = 0;
  if (*param_1 != 0x5f) {
    return 0;
  }
  if (param_1[1] == 0x47) {
    bVar6 = param_1[2] < 0x4c;
    bVar7 = param_1[2] == 0x4c;
    if (bVar7) {
      lVar3 = 0x16;
      pbVar4 = param_1;
      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";
      do {
        if (lVar3 == 0) break;
        lVar3 = lVar3 + -1;
        bVar6 = *pbVar4 < *pbVar5;
        bVar7 = *pbVar4 == *pbVar5;
        pbVar4 = pbVar4 + 1;
        pbVar5 = pbVar5 + 1;
      } while (bVar7);
      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {
        lVar1 = FUN_0012b0d0(param_1);
        if (lVar1 != 0) {
          uVar2 = dcgettext(0,"GOT already in symbol table",5);
          FUN_0011da70(uVar2);
        }
        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);
        return DAT_001e3a80;
      }
    }
  }
  return lVar1;
}


XOR EAX,EAX
CMP byte ptr [RDI],0x5f
JNZ 0x00142580
PUSH RBX
CMP byte ptr [RDI + 0x1],0x47
MOV RBX,RDI
JNZ 0x0014257e
CMP byte ptr [RDI + 0x2],0x4c
JNZ 0x0014257e
MOV ECX,0x16
LEA RDI,[0x1520e5]
MOV RSI,RBX
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x0014257e
MOV RAX,qword ptr [0x001e3a80]
TEST RAX,RAX
JZ 0x00142588
POP RBX
RET
RET
MOV RDI,RBX
CALL 0x0012b0d0
TEST RAX,RAX
JZ 0x001425b2
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x1526ec]
CALL 0x001081c0
MOV RDI,RAX
XOR EAX,EAX
CALL 0x0011da70
MOV RDI,RBX
LEA RCX,[0x1e44c0]
XOR EDX,EDX
LEA RSI,[0x1dad78]
CALL 0x001298c0
POP RBX
MOV qword ptr [0x001e3a80],RAX
RET
(translation_unit "long FUN_00142540(byte *param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}\n\n" (function_definition "long FUN_00142540(byte *param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00142540(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (expression_statement "lVar1 = 0;" (assignment_expression "lVar1 = 0" identifier = number_literal) ;) (if_statement "if (*param_1 != 0x5f) {\n    return 0;\n  }" if (parenthesized_expression "(*param_1 != 0x5f)" ( (binary_expression "*param_1 != 0x5f" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }" if (parenthesized_expression "(param_1[1] == 0x47)" ( (binary_expression "param_1[1] == 0x47" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }" { (expression_statement "bVar6 = param_1[2] < 0x4c;" (assignment_expression "bVar6 = param_1[2] < 0x4c" identifier = (binary_expression "param_1[2] < 0x4c" (subscript_expression "param_1[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar7 = param_1[2] == 0x4c;" (assignment_expression "bVar7 = param_1[2] == 0x4c" identifier = (binary_expression "param_1[2] == 0x4c" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }" { (expression_statement "lVar3 = 0x16;" (assignment_expression "lVar3 = 0x16" identifier = number_literal) ;) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";" (assignment_expression "pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_"" identifier = (cast_expression "(byte *)"_GLOBAL_OFFSET_TABLE_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_OFFSET_TABLE_"" " string_content "))) ;) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" do (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }" if (parenthesized_expression "(((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0))" ( (binary_expression "((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)" (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" ( (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) == identifier) )) && (parenthesized_expression "(lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)" ( (comma_expression "lVar1 = DAT_001e3a80, DAT_001e3a80 == 0" (assignment_expression "lVar1 = DAT_001e3a80" identifier = identifier) , (binary_expression "DAT_001e3a80 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }" { (expression_statement "lVar1 = FUN_0012b0d0(param_1);" (assignment_expression "lVar1 = FUN_0012b0d0(param_1)" identifier = (call_expression "FUN_0012b0d0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }" { (expression_statement "uVar2 = dcgettext(0,"GOT already in symbol table",5);" (assignment_expression "uVar2 = dcgettext(0,"GOT already in symbol table",5)" identifier = (call_expression "dcgettext(0,"GOT already in symbol table",5)" identifier (argument_list "(0,"GOT already in symbol table",5)" ( number_literal , (string_literal ""GOT already in symbol table"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0011da70(uVar2);" (call_expression "FUN_0011da70(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) })) (expression_statement "DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);" (assignment_expression "DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0)" identifier = (call_expression "FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0)" identifier (argument_list "(param_1,0x1dad78,0,&DAT_001e44c0)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_001e44c0" & identifier) )))) ;) (return_statement "return DAT_001e3a80;" return identifier ;) })) })) })) (return_statement "return lVar1;" return identifier ;) })))
(translation_unit "symbolS * md_undefined_symbol(char *name)\n\n{\n  symbolS *psVar1;\n  char *format;\n  long lVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  \n  psVar1 = (symbolS *)0x0;\n  if (*name != '_') {\n    return (symbolS *)0x0;\n  }\n  if (name[1] == 'G') {\n    bVar5 = (byte)name[2] < 0x4c;\n    bVar6 = name[2] == 0x4c;\n    if (bVar6) {\n      lVar2 = 0x16;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }\n    }\n  }\n  return psVar1;\n}\n\n" (function_definition "symbolS * md_undefined_symbol(char *name)\n\n{\n  symbolS *psVar1;\n  char *format;\n  long lVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  \n  psVar1 = (symbolS *)0x0;\n  if (*name != '_') {\n    return (symbolS *)0x0;\n  }\n  if (name[1] == 'G') {\n    bVar5 = (byte)name[2] < 0x4c;\n    bVar6 = name[2] == 0x4c;\n    if (bVar6) {\n      lVar2 = 0x16;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }\n    }\n  }\n  return psVar1;\n}" type_identifier (pointer_declarator "* md_undefined_symbol(char *name)" * (function_declarator "md_undefined_symbol(char *name)" identifier (parameter_list "(char *name)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) )))) (compound_statement "{\n  symbolS *psVar1;\n  char *format;\n  long lVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  \n  psVar1 = (symbolS *)0x0;\n  if (*name != '_') {\n    return (symbolS *)0x0;\n  }\n  if (name[1] == 'G') {\n    bVar5 = (byte)name[2] < 0x4c;\n    bVar6 = name[2] == 0x4c;\n    if (bVar6) {\n      lVar2 = 0x16;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }\n    }\n  }\n  return psVar1;\n}" { (declaration "symbolS *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "psVar1 = (symbolS *)0x0;" (assignment_expression "psVar1 = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*name != '_') {\n    return (symbolS *)0x0;\n  }" if (parenthesized_expression "(*name != '_')" ( (binary_expression "*name != '_'" (pointer_expression "*name" * identifier) != (char_literal "'_'" ' character ')) )) (compound_statement "{\n    return (symbolS *)0x0;\n  }" { (return_statement "return (symbolS *)0x0;" return (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (name[1] == 'G') {\n    bVar5 = (byte)name[2] < 0x4c;\n    bVar6 = name[2] == 0x4c;\n    if (bVar6) {\n      lVar2 = 0x16;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }\n    }\n  }" if (parenthesized_expression "(name[1] == 'G')" ( (binary_expression "name[1] == 'G'" (subscript_expression "name[1]" identifier [ number_literal ]) == (char_literal "'G'" ' character ')) )) (compound_statement "{\n    bVar5 = (byte)name[2] < 0x4c;\n    bVar6 = name[2] == 0x4c;\n    if (bVar6) {\n      lVar2 = 0x16;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }\n    }\n  }" { (expression_statement "bVar5 = (byte)name[2] < 0x4c;" (assignment_expression "bVar5 = (byte)name[2] < 0x4c" identifier = (binary_expression "(byte)name[2] < 0x4c" (cast_expression "(byte)name[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "name[2]" identifier [ number_literal ])) < number_literal)) ;) (expression_statement "bVar6 = name[2] == 0x4c;" (assignment_expression "bVar6 = name[2] == 0x4c" identifier = (binary_expression "name[2] == 0x4c" (subscript_expression "name[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar6) {\n      lVar2 = 0x16;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }\n    }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n      lVar2 = 0x16;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }\n    }" { (expression_statement "lVar2 = 0x16;" (assignment_expression "lVar2 = 0x16" identifier = number_literal) ;) (expression_statement "pbVar3 = (byte *)name;" (assignment_expression "pbVar3 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_";" (assignment_expression "pbVar4 = (byte *)"_GLOBAL_OFFSET_TABLE_"" identifier = (cast_expression "(byte *)"_GLOBAL_OFFSET_TABLE_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_OFFSET_TABLE_"" " string_content "))) ;) (do_statement "do {\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);" do (compound_statement "{\n        if (lVar2 == 0) break;\n        lVar2 = lVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      }" { (if_statement "if (lVar2 == 0) break;" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" identifier = (binary_expression "lVar2 + -1" identifier + number_literal)) ;) (expression_statement "bVar5 = *pbVar3 < *pbVar4;" (assignment_expression "bVar5 = *pbVar3 < *pbVar4" identifier = (binary_expression "*pbVar3 < *pbVar4" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "bVar6 = *pbVar3 == *pbVar4;" (assignment_expression "bVar6 = *pbVar3 == *pbVar4" identifier = (binary_expression "*pbVar3 == *pbVar4" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar6)" ( identifier )) ;) (if_statement "if (((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)) {\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }" if (parenthesized_expression "(((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0))" ( (binary_expression "((!bVar5 && !bVar6) == bVar5) && (psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)" (parenthesized_expression "((!bVar5 && !bVar6) == bVar5)" ( (binary_expression "(!bVar5 && !bVar6) == bVar5" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) == identifier) )) && (parenthesized_expression "(psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0)" ( (comma_expression "psVar1 = GOT_symbol, GOT_symbol == (symbolS *)0x0" (assignment_expression "psVar1 = GOT_symbol" identifier = identifier) , (binary_expression "GOT_symbol == (symbolS *)0x0" identifier == (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        psVar1 = symbol_find(name);\n        if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }\n        GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);\n        return GOT_symbol;\n      }" { (expression_statement "psVar1 = symbol_find(name);" (assignment_expression "psVar1 = symbol_find(name)" identifier = (call_expression "symbol_find(name)" identifier (argument_list "(name)" ( identifier )))) ;) (if_statement "if (psVar1 != (symbolS *)0x0) {\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }" if (parenthesized_expression "(psVar1 != (symbolS *)0x0)" ( (binary_expression "psVar1 != (symbolS *)0x0" identifier != (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          format = (char *)dcgettext(0,"GOT already in symbol table",5);\n          as_bad(format);\n        }" { (expression_statement "format = (char *)dcgettext(0,"GOT already in symbol table",5);" (assignment_expression "format = (char *)dcgettext(0,"GOT already in symbol table",5)" identifier = (cast_expression "(char *)dcgettext(0,"GOT already in symbol table",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"GOT already in symbol table",5)" identifier (argument_list "(0,"GOT already in symbol table",5)" ( number_literal , (string_literal ""GOT already in symbol table"" " string_content ") , number_literal ))))) ;) (expression_statement "as_bad(format);" (call_expression "as_bad(format)" identifier (argument_list "(format)" ( identifier ))) ;) })) (expression_statement "GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag);" (assignment_expression "GOT_symbol = symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag)" identifier = (call_expression "symbol_new(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag)" identifier (argument_list "(name,(segT)(_bfd_std_section + 0x118),0,&zero_address_frag)" ( identifier , (call_expression "(segT)(_bfd_std_section + 0x118)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , (pointer_expression "&zero_address_frag" & identifier) )))) ;) (return_statement "return GOT_symbol;" return identifier ;) })) })) })) (return_statement "return psVar1;" return identifier ;) })))
(translation_unit "long FUN_00142540(byte *param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}\n\n" (function_definition "long FUN_00142540(byte *param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00142540(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (expression_statement "lVar1 = 0;" (assignment_expression "lVar1 = 0" identifier = number_literal) ;) (if_statement "if (*param_1 != 0x5f) {\n    return 0;\n  }" if (parenthesized_expression "(*param_1 != 0x5f)" ( (binary_expression "*param_1 != 0x5f" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }" if (parenthesized_expression "(param_1[1] == 0x47)" ( (binary_expression "param_1[1] == 0x47" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }" { (expression_statement "bVar6 = param_1[2] < 0x4c;" (assignment_expression "bVar6 = param_1[2] < 0x4c" identifier = (binary_expression "param_1[2] < 0x4c" (subscript_expression "param_1[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar7 = param_1[2] == 0x4c;" (assignment_expression "bVar7 = param_1[2] == 0x4c" identifier = (binary_expression "param_1[2] == 0x4c" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }" { (expression_statement "lVar3 = 0x16;" (assignment_expression "lVar3 = 0x16" identifier = number_literal) ;) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";" (assignment_expression "pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_"" identifier = (cast_expression "(byte *)"_GLOBAL_OFFSET_TABLE_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_OFFSET_TABLE_"" " string_content "))) ;) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" do (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }" if (parenthesized_expression "(((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0))" ( (binary_expression "((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)" (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" ( (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) == identifier) )) && (parenthesized_expression "(lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)" ( (comma_expression "lVar1 = DAT_001e3a80, DAT_001e3a80 == 0" (assignment_expression "lVar1 = DAT_001e3a80" identifier = identifier) , (binary_expression "DAT_001e3a80 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }" { (expression_statement "lVar1 = FUN_0012b0d0(param_1);" (assignment_expression "lVar1 = FUN_0012b0d0(param_1)" identifier = (call_expression "FUN_0012b0d0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }" { (expression_statement "uVar2 = dcgettext(0,"GOT already in symbol table",5);" (assignment_expression "uVar2 = dcgettext(0,"GOT already in symbol table",5)" identifier = (call_expression "dcgettext(0,"GOT already in symbol table",5)" identifier (argument_list "(0,"GOT already in symbol table",5)" ( number_literal , (string_literal ""GOT already in symbol table"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0011da70(uVar2);" (call_expression "FUN_0011da70(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) })) (expression_statement "DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);" (assignment_expression "DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0)" identifier = (call_expression "FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0)" identifier (argument_list "(param_1,0x1dad78,0,&DAT_001e44c0)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_001e44c0" & identifier) )))) ;) (return_statement "return DAT_001e3a80;" return identifier ;) })) })) })) (return_statement "return lVar1;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (pointer_expression & IDENT) )))) ;) (return_statement return IDENT ;) })) })) })) (return_statement return IDENT ;) })))
(function_definition "long FUN_00142540(byte *param_1)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_00142540(byte *param_1)" (identifier "FUN_00142540") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  lVar1 = 0;\n  if (*param_1 != 0x5f) {\n    return 0;\n  }\n  if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }\n  return lVar1;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (expression_statement "lVar1 = 0;" (assignment_expression "lVar1 = 0" (identifier "lVar1") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*param_1 != 0x5f) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(*param_1 != 0x5f)" (( "(") (binary_expression "*param_1 != 0x5f" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0x5f")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_1[1] == 0x47) {\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_1[1] == 0x47)" (( "(") (binary_expression "param_1[1] == 0x47" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x47")) () ")")) (compound_statement "{\n    bVar6 = param_1[2] < 0x4c;\n    bVar7 = param_1[2] == 0x4c;\n    if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }\n  }" ({ "{") (expression_statement "bVar6 = param_1[2] < 0x4c;" (assignment_expression "bVar6 = param_1[2] < 0x4c" (identifier "bVar6") (= "=") (binary_expression "param_1[2] < 0x4c" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (< "<") (number_literal "0x4c"))) (; ";")) (expression_statement "bVar7 = param_1[2] == 0x4c;" (assignment_expression "bVar7 = param_1[2] == 0x4c" (identifier "bVar7") (= "=") (binary_expression "param_1[2] == 0x4c" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x4c"))) (; ";")) (if_statement "if (bVar7) {\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n      lVar3 = 0x16;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }\n    }" ({ "{") (expression_statement "lVar3 = 0x16;" (assignment_expression "lVar3 = 0x16" (identifier "lVar3") (= "=") (number_literal "0x16")) (; ";")) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" (identifier "pbVar4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";" (assignment_expression "pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"_GLOBAL_OFFSET_TABLE_"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""_GLOBAL_OFFSET_TABLE_"" (" """) (string_content "_GLOBAL_OFFSET_TABLE_") (" """)))) (; ";")) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" (do "do") (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" (identifier "bVar6") (= "=") (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" (identifier "bVar7") (= "=") (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (; ";")) (if_statement "if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }" (if "if") (parenthesized_expression "(((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0))" (( "(") (binary_expression "((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)" (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" (( "(") (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" (( "(") (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" (! "!") (identifier "bVar6")) (&& "&&") (unary_expression "!bVar7" (! "!") (identifier "bVar7"))) () ")")) (== "==") (identifier "bVar6")) () ")")) (&& "&&") (parenthesized_expression "(lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)" (( "(") (comma_expression "lVar1 = DAT_001e3a80, DAT_001e3a80 == 0" (assignment_expression "lVar1 = DAT_001e3a80" (identifier "lVar1") (= "=") (identifier "DAT_001e3a80")) (, ",") (binary_expression "DAT_001e3a80 == 0" (identifier "DAT_001e3a80") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        lVar1 = FUN_0012b0d0(param_1);\n        if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }\n        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);\n        return DAT_001e3a80;\n      }" ({ "{") (expression_statement "lVar1 = FUN_0012b0d0(param_1);" (assignment_expression "lVar1 = FUN_0012b0d0(param_1)" (identifier "lVar1") (= "=") (call_expression "FUN_0012b0d0(param_1)" (identifier "FUN_0012b0d0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (lVar1 != 0) {\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }" (if "if") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar2 = dcgettext(0,"GOT already in symbol table",5);\n          FUN_0011da70(uVar2);\n        }" ({ "{") (expression_statement "uVar2 = dcgettext(0,"GOT already in symbol table",5);" (assignment_expression "uVar2 = dcgettext(0,"GOT already in symbol table",5)" (identifier "uVar2") (= "=") (call_expression "dcgettext(0,"GOT already in symbol table",5)" (identifier "dcgettext") (argument_list "(0,"GOT already in symbol table",5)" (( "(") (number_literal "0") (, ",") (string_literal ""GOT already in symbol table"" (" """) (string_content "GOT already in symbol table") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0011da70(uVar2);" (call_expression "FUN_0011da70(uVar2)" (identifier "FUN_0011da70") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);" (assignment_expression "DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0)" (identifier "DAT_001e3a80") (= "=") (call_expression "FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0)" (identifier "FUN_001298c0") (argument_list "(param_1,0x1dad78,0,&DAT_001e44c0)" (( "(") (identifier "param_1") (, ",") (number_literal "0x1dad78") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_001e44c0" (& "&") (identifier "DAT_001e44c0")) () ")")))) (; ";")) (return_statement "return DAT_001e3a80;" (return "return") (identifier "DAT_001e3a80") (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return lVar1;" (return "return") (identifier "lVar1") (; ";")) (} "}")))

type_1 * function_1(char *name)

{
  type_1 *var_7;
  char *format;
  long var_1;
  type_2 *var_2;
  type_2 *var_3;
  bool var_4;
  bool bVar6;
  
  var_7 = (type_1 *)0x0;
  if (*name != '_') {
    return (type_1 *)0x0;
  }
  if (name[1] == 'G') {
    var_4 = (type_2)name[2] < 0x4c;
    bVar6 = name[2] == 0x4c;
    if (bVar6) {
      var_1 = 0x16;
      var_2 = (type_2 *)name;
      var_3 = (type_2 *)"_GLOBAL_OFFSET_TABLE_";
      do {
        if (var_1 == 0) break;
        var_1 = var_1 + -1;
        var_4 = *var_2 < *var_3;
        bVar6 = *var_2 == *var_3;
        var_2 = var_2 + 1;
        var_3 = var_3 + 1;
      } while (bVar6);
      if (((!var_4 && !bVar6) == var_4) && (var_7 = var_5, var_5 == (type_1 *)0x0)) {
        var_7 = var_6(name);
        if (var_7 != (type_1 *)0x0) {
          format = (char *)var_8(0,"GOT already in symbol table",5);
          var_9(format);
        }
        var_5 = var_10(name,(segT)(var_11 + 0x118),0,&zero_address_frag);
        return var_5;
      }
    }
  }
  return var_7;
}


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

long MASKED(byte *param_1)

{
  long lVar1;
  undefined8 uVar2;
  long lVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  
  lVar1 = 0;
  if (*param_1 != 0x5f) {
    return 0;
  }
  if (param_1[1] == 0x47) {
    bVar6 = param_1[2] < 0x4c;
    bVar7 = param_1[2] == 0x4c;
    if (bVar7) {
      lVar3 = 0x16;
      pbVar4 = param_1;
      pbVar5 = (byte *)"_GLOBAL_OFFSET_TABLE_";
      do {
        if (lVar3 == 0) break;
        lVar3 = lVar3 + -1;
        bVar6 = *pbVar4 < *pbVar5;
        bVar7 = *pbVar4 == *pbVar5;
        pbVar4 = pbVar4 + 1;
        pbVar5 = pbVar5 + 1;
      } while (bVar7);
      if (((!bVar6 && !bVar7) == bVar6) && (lVar1 = DAT_001e3a80, DAT_001e3a80 == 0)) {
        lVar1 = FUN_0012b0d0(param_1);
        if (lVar1 != 0) {
          uVar2 = dcgettext(0,"GOT already in symbol table",5);
          FUN_0011da70(uVar2);
        }
        DAT_001e3a80 = FUN_001298c0(param_1,0x1dad78,0,&DAT_001e44c0);
        return DAT_001e3a80;
      }
    }
  }
  return lVar1;
}

