
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: int64_t do_tls_offset_for_global(Target_powerpc<32,_false> * this,
   Symbol * gsym, uint got_indx) */

int64_t __thiscall
anon_unknown.dwarf_2af53c::Target_powerpc<32,_false>::do_tls_offset_for_global
          (Target_powerpc<32,_false> *this,Symbol *gsym,uint got_indx)

{
}



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

undefined4 FUN_00057f20(undefined4 param_1,int param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  
  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {
    piVar4 = (int *)(param_2 + 0x1c);
    iVar5 = 1;
    piVar1 = piVar4;
LAB_00057f60:
    do {
      if (*piVar1 == iVar5) {
        piVar2 = piVar4;
        if (piVar1[1] != -1) {
          while (iVar5 != *piVar2) {
            piVar2 = (int *)piVar2[2];
            if (piVar2 == (int *)0x0) goto LAB_00057fab;
          }
          piVar2 = (int *)piVar2[1];
          if (piVar2 == (int *)0xffffffff) {
LAB_00057fab:
                    /* WARNING: Subroutine does not return */
            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);
          }
          if (iVar5 == 1) {
            piVar2 = piVar2 + 1;
          }
          if ((int *)(param_3 * 4) == piVar2) {
            uVar3 = 0xffff9000;
            if (iVar5 != 3) {
              uVar3 = 0xffff8000;
            }
            return uVar3;
          }
        }
      }
      else {
        piVar2 = piVar1 + 2;
        piVar1 = (int *)*piVar2;
        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;
      }
      iVar5 = iVar5 + 1;
      piVar1 = piVar4;
    } while (iVar5 != 4);
  }
                    /* WARNING: Subroutine does not return */
  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0003a210
ADD EBX,0x3bc0d7
SUB ESP,0xc
MOV ECX,dword ptr [ESP + 0x24]
MOVZX EAX,byte ptr [ECX + 0x28]
AND EAX,0xf
CMP AL,0x6
JNZ 0x00057f73
MOV EAX,dword ptr [ESP + 0x28]
ADD ECX,0x1c
MOV EBP,0x1
LEA ESI,[EAX*0x4 + 0x0]
MOV EAX,ECX
LEA ESI,[ESI]
LEA ESI,[ESI]
CMP dword ptr [EAX],EBP
JZ 0x00057f90
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x00057f60
ADD EBP,0x1
CMP EBP,0x4
JNZ 0x00057f54
SUB ESP,0x4
LEA EAX,[EBX + 0xffee113c]
PUSH EAX
LEA EAX,[EBX + 0xffee2e84]
PUSH 0x2a3c
PUSH EAX
CALL 0x000da200
CMP dword ptr [EAX + 0x4],-0x1
JZ 0x00057f6b
MOV EAX,ECX
LEA ESI,[ESI]
NOP
CMP EBP,dword ptr [EAX]
JZ 0x00057fc8
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x00057fa0
PUSH EAX
LEA EAX,[EBX + 0xffee20e8]
PUSH EAX
LEA EAX,[EBX + 0xffee2f2e]
PUSH 0x1b7
PUSH EAX
CALL 0x000da200
MOV EAX,dword ptr [EAX + 0x4]
CMP EAX,-0x1
JZ 0x00057fab
LEA EDI,[EAX + 0x4]
CMP EBP,0x1
CMOVZ EAX,EDI
CMP ESI,EAX
JNZ 0x00057f6b
MOV EAX,0xffff9000
XOR EDX,EDX
CMP EBP,0x3
JZ 0x00057ff0
MOV EAX,0xffff8000
XOR EDX,EDX
ADD ESP,0xc
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_00057f20(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}\n\n" comment (function_definition "undefined4 FUN_00057f20(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}" type_identifier (function_declarator "FUN_00057f20(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (if_statement "if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x28) & 0xf) == 6)" ( (binary_expression "(*(byte *)(param_2 + 0x28) & 0xf) == 6" (parenthesized_expression "(*(byte *)(param_2 + 0x28) & 0xf)" ( (binary_expression "*(byte *)(param_2 + 0x28) & 0xf" (pointer_expression "*(byte *)(param_2 + 0x28)" * (cast_expression "(byte *)(param_2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }" { (expression_statement "piVar4 = (int *)(param_2 + 0x1c);" (assignment_expression "piVar4 = (int *)(param_2 + 0x1c)" identifier = (cast_expression "(int *)(param_2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" identifier = identifier) ;) (labeled_statement "LAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);" statement_identifier : (do_statement "do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);" do (compound_statement "{\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    }" { (if_statement "if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" if (parenthesized_expression "(*piVar1 == iVar5)" ( (binary_expression "*piVar1 == iVar5" (pointer_expression "*piVar1" * identifier) == identifier) )) (compound_statement "{\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }" { (expression_statement "piVar2 = piVar4;" (assignment_expression "piVar2 = piVar4" identifier = identifier) ;) (if_statement "if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }" if (parenthesized_expression "(piVar1[1] != -1)" ( (binary_expression "piVar1[1] != -1" (subscript_expression "piVar1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }" { (while_statement "while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }" while (parenthesized_expression "(iVar5 != *piVar2)" ( (binary_expression "iVar5 != *piVar2" identifier != (pointer_expression "*piVar2" * identifier)) )) (compound_statement "{\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }" { (expression_statement "piVar2 = (int *)piVar2[2];" (assignment_expression "piVar2 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar2 == (int *)0x0) goto LAB_00057fab;" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00057fab;" goto statement_identifier ;)) })) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }" if (parenthesized_expression "(piVar2 == (int *)0xffffffff)" ( (binary_expression "piVar2 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }" { (labeled_statement "LAB_00057fab:\n                    /* WARNING: Subroutine does not return */\n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);" statement_identifier : comment (expression_statement "FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);" (call_expression "FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2)" identifier (argument_list "("../../gold/symtab.h",0x1b7,"got_offset",piVar2)" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""got_offset"" " string_content ") , identifier ))) ;)) })) (if_statement "if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n            piVar2 = piVar2 + 1;\n          }" { (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) })) (if_statement "if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }" if (parenthesized_expression "((int *)(param_3 * 4) == piVar2)" ( (binary_expression "(int *)(param_3 * 4) == piVar2" (cast_expression "(int *)(param_3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 * 4)" ( (binary_expression "param_3 * 4" identifier * number_literal) ))) == identifier) )) (compound_statement "{\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }" { (expression_statement "uVar3 = 0xffff9000;" (assignment_expression "uVar3 = 0xffff9000" identifier = number_literal) ;) (if_statement "if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }" if (parenthesized_expression "(iVar5 != 3)" ( (binary_expression "iVar5 != 3" identifier != number_literal) )) (compound_statement "{\n              uVar3 = 0xffff8000;\n            }" { (expression_statement "uVar3 = 0xffff8000;" (assignment_expression "uVar3 = 0xffff8000" identifier = number_literal) ;) })) (return_statement "return uVar3;" return identifier ;) })) })) }) (else_clause "else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" else (compound_statement "{\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" { (expression_statement "piVar2 = piVar1 + 2;" (assignment_expression "piVar2 = piVar1 + 2" identifier = (binary_expression "piVar1 + 2" identifier + number_literal)) ;) (expression_statement "piVar1 = (int *)*piVar2;" (assignment_expression "piVar1 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;" if (parenthesized_expression "((int *)*piVar2 != (int *)0x0)" ( (binary_expression "(int *)*piVar2 != (int *)0x0" (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier)) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00057f60;" goto statement_identifier ;)) }))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 4)" ( (binary_expression "iVar5 != 4" identifier != number_literal) )) ;)) })) comment (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global")" identifier (argument_list "("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global")" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""do_tls_offset_for_global"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: int64_t do_tls_offset_for_global(Target_powerpc<32,_false> * this,\n   Symbol * gsym, uint got_indx) */\n\nint64_t __thiscall\nanon_unknown.dwarf_2af53c::Target_powerpc<32,_false>::do_tls_offset_for_global\n          (Target_powerpc<32,_false> *this,Symbol *gsym,uint got_indx)\n\n{\n}\n\n" comment comment comment (ERROR "int64_t __thiscall\nanon_unknown.dwarf_2af53c::Target_powerpc<32,_false>::do_tls_offset_for_global\n          (Target_powerpc<32,_false> *this,Symbol *gsym,uint got_indx)" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_2af53c::" identifier . identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::" identifier > : :) (function_declarator "do_tls_offset_for_global\n          (Target_powerpc<32,_false> *this,Symbol *gsym,uint got_indx)" identifier (parameter_list "(Target_powerpc<32,_false> *this,Symbol *gsym,uint got_indx)" ( (parameter_declaration "Target_powerpc" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol *gsym" type_identifier (pointer_declarator "*gsym" * identifier)) , (parameter_declaration "uint got_indx" type_identifier identifier) )))) (compound_statement "{\n}" { }))
(translation_unit "undefined4 FUN_00057f20(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    \n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}\n\n" (function_definition "undefined4 FUN_00057f20(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    \n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}" type_identifier (function_declarator "FUN_00057f20(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    \n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (if_statement "if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x28) & 0xf) == 6)" ( (binary_expression "(*(byte *)(param_2 + 0x28) & 0xf) == 6" (parenthesized_expression "(*(byte *)(param_2 + 0x28) & 0xf)" ( (binary_expression "*(byte *)(param_2 + 0x28) & 0xf" (pointer_expression "*(byte *)(param_2 + 0x28)" * (cast_expression "(byte *)(param_2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }" { (expression_statement "piVar4 = (int *)(param_2 + 0x1c);" (assignment_expression "piVar4 = (int *)(param_2 + 0x1c)" identifier = (cast_expression "(int *)(param_2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" identifier = identifier) ;) (labeled_statement "LAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);" statement_identifier : (do_statement "do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);" do (compound_statement "{\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    }" { (if_statement "if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" if (parenthesized_expression "(*piVar1 == iVar5)" ( (binary_expression "*piVar1 == iVar5" (pointer_expression "*piVar1" * identifier) == identifier) )) (compound_statement "{\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }" { (expression_statement "piVar2 = piVar4;" (assignment_expression "piVar2 = piVar4" identifier = identifier) ;) (if_statement "if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }" if (parenthesized_expression "(piVar1[1] != -1)" ( (binary_expression "piVar1[1] != -1" (subscript_expression "piVar1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }" { (while_statement "while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }" while (parenthesized_expression "(iVar5 != *piVar2)" ( (binary_expression "iVar5 != *piVar2" identifier != (pointer_expression "*piVar2" * identifier)) )) (compound_statement "{\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }" { (expression_statement "piVar2 = (int *)piVar2[2];" (assignment_expression "piVar2 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar2 == (int *)0x0) goto LAB_00057fab;" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00057fab;" goto statement_identifier ;)) })) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }" if (parenthesized_expression "(piVar2 == (int *)0xffffffff)" ( (binary_expression "piVar2 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }" { (labeled_statement "LAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);" statement_identifier : (expression_statement "FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);" (call_expression "FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2)" identifier (argument_list "("../../gold/symtab.h",0x1b7,"got_offset",piVar2)" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""got_offset"" " string_content ") , identifier ))) ;)) })) (if_statement "if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n            piVar2 = piVar2 + 1;\n          }" { (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) })) (if_statement "if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }" if (parenthesized_expression "((int *)(param_3 * 4) == piVar2)" ( (binary_expression "(int *)(param_3 * 4) == piVar2" (cast_expression "(int *)(param_3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 * 4)" ( (binary_expression "param_3 * 4" identifier * number_literal) ))) == identifier) )) (compound_statement "{\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }" { (expression_statement "uVar3 = 0xffff9000;" (assignment_expression "uVar3 = 0xffff9000" identifier = number_literal) ;) (if_statement "if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }" if (parenthesized_expression "(iVar5 != 3)" ( (binary_expression "iVar5 != 3" identifier != number_literal) )) (compound_statement "{\n              uVar3 = 0xffff8000;\n            }" { (expression_statement "uVar3 = 0xffff8000;" (assignment_expression "uVar3 = 0xffff8000" identifier = number_literal) ;) })) (return_statement "return uVar3;" return identifier ;) })) })) }) (else_clause "else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" else (compound_statement "{\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" { (expression_statement "piVar2 = piVar1 + 2;" (assignment_expression "piVar2 = piVar1 + 2" identifier = (binary_expression "piVar1 + 2" identifier + number_literal)) ;) (expression_statement "piVar1 = (int *)*piVar2;" (assignment_expression "piVar1 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;" if (parenthesized_expression "((int *)*piVar2 != (int *)0x0)" ( (binary_expression "(int *)*piVar2 != (int *)0x0" (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier)) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00057f60;" goto statement_identifier ;)) }))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 4)" ( (binary_expression "iVar5 != 4" identifier != number_literal) )) ;)) })) (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global")" identifier (argument_list "("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global")" ( (string_literal ""../../gold/powerpc.cc"" " string_content ") , number_literal , (string_literal ""do_tls_offset_for_global"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (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 + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) ))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;)) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "undefined4 FUN_00057f20(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    \n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}" (type_identifier "undefined4") (function_declarator "FUN_00057f20(undefined4 param_1,int param_2,int param_3)" (identifier "FUN_00057f20") (parameter_list "(undefined4 param_1,int param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int *piVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }\n                    \n  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (if_statement "if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x28) & 0xf) == 6)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x28) & 0xf) == 6" (parenthesized_expression "(*(byte *)(param_2 + 0x28) & 0xf)" (( "(") (binary_expression "*(byte *)(param_2 + 0x28) & 0xf" (pointer_expression "*(byte *)(param_2 + 0x28)" (* "*") (cast_expression "(byte *)(param_2 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (== "==") (number_literal "6")) () ")")) (compound_statement "{\n    piVar4 = (int *)(param_2 + 0x1c);\n    iVar5 = 1;\n    piVar1 = piVar4;\nLAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);\n  }" ({ "{") (expression_statement "piVar4 = (int *)(param_2 + 0x1c);" (assignment_expression "piVar4 = (int *)(param_2 + 0x1c)" (identifier "piVar4") (= "=") (cast_expression "(int *)(param_2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (; ";")) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" (identifier "piVar1") (= "=") (identifier "piVar4")) (; ";")) (labeled_statement "LAB_00057f60:\n    do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);" (statement_identifier "LAB_00057f60") (: ":") (do_statement "do {\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    } while (iVar5 != 4);" (do "do") (compound_statement "{\n      if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }\n      iVar5 = iVar5 + 1;\n      piVar1 = piVar4;\n    }" ({ "{") (if_statement "if (*piVar1 == iVar5) {\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }\n      else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" (if "if") (parenthesized_expression "(*piVar1 == iVar5)" (( "(") (binary_expression "*piVar1 == iVar5" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n        piVar2 = piVar4;\n        if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }\n      }" ({ "{") (expression_statement "piVar2 = piVar4;" (assignment_expression "piVar2 = piVar4" (identifier "piVar2") (= "=") (identifier "piVar4")) (; ";")) (if_statement "if (piVar1[1] != -1) {\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }" (if "if") (parenthesized_expression "(piVar1[1] != -1)" (( "(") (binary_expression "piVar1[1] != -1" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n          while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }\n          piVar2 = (int *)piVar2[1];\n          if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }\n          if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }\n          if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }\n        }" ({ "{") (while_statement "while (iVar5 != *piVar2) {\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }" (while "while") (parenthesized_expression "(iVar5 != *piVar2)" (( "(") (binary_expression "iVar5 != *piVar2" (identifier "iVar5") (!= "!=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) () ")")) (compound_statement "{\n            piVar2 = (int *)piVar2[2];\n            if (piVar2 == (int *)0x0) goto LAB_00057fab;\n          }" ({ "{") (expression_statement "piVar2 = (int *)piVar2[2];" (assignment_expression "piVar2 = (int *)piVar2[2]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (piVar2 == (int *)0x0) goto LAB_00057fab;" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00057fab;" (goto "goto") (statement_identifier "LAB_00057fab") (; ";"))) (} "}"))) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (piVar2 == (int *)0xffffffff) {\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }" (if "if") (parenthesized_expression "(piVar2 == (int *)0xffffffff)" (( "(") (binary_expression "piVar2 == (int *)0xffffffff" (identifier "piVar2") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\nLAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);\n          }" ({ "{") (labeled_statement "LAB_00057fab:\n                    \n            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);" (statement_identifier "LAB_00057fab") (: ":") (expression_statement "FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);" (call_expression "FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2)" (identifier "FUN_000da200") (argument_list "("../../gold/symtab.h",0x1b7,"got_offset",piVar2)" (( "(") (string_literal ""../../gold/symtab.h"" (" """) (string_content "../../gold/symtab.h") (" """)) (, ",") (number_literal "0x1b7") (, ",") (string_literal ""got_offset"" (" """) (string_content "got_offset") (" """)) (, ",") (identifier "piVar2") () ")"))) (; ";"))) (} "}"))) (if_statement "if (iVar5 == 1) {\n            piVar2 = piVar2 + 1;\n          }" (if "if") (parenthesized_expression "(iVar5 == 1)" (( "(") (binary_expression "iVar5 == 1" (identifier "iVar5") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            piVar2 = piVar2 + 1;\n          }" ({ "{") (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((int *)(param_3 * 4) == piVar2) {\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }" (if "if") (parenthesized_expression "((int *)(param_3 * 4) == piVar2)" (( "(") (binary_expression "(int *)(param_3 * 4) == piVar2" (cast_expression "(int *)(param_3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 * 4)" (( "(") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4")) () ")"))) (== "==") (identifier "piVar2")) () ")")) (compound_statement "{\n            uVar3 = 0xffff9000;\n            if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }\n            return uVar3;\n          }" ({ "{") (expression_statement "uVar3 = 0xffff9000;" (assignment_expression "uVar3 = 0xffff9000" (identifier "uVar3") (= "=") (number_literal "0xffff9000")) (; ";")) (if_statement "if (iVar5 != 3) {\n              uVar3 = 0xffff8000;\n            }" (if "if") (parenthesized_expression "(iVar5 != 3)" (( "(") (binary_expression "iVar5 != 3" (identifier "iVar5") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n              uVar3 = 0xffff8000;\n            }" ({ "{") (expression_statement "uVar3 = 0xffff8000;" (assignment_expression "uVar3 = 0xffff8000" (identifier "uVar3") (= "=") (number_literal "0xffff8000")) (; ";")) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" (else "else") (compound_statement "{\n        piVar2 = piVar1 + 2;\n        piVar1 = (int *)*piVar2;\n        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;\n      }" ({ "{") (expression_statement "piVar2 = piVar1 + 2;" (assignment_expression "piVar2 = piVar1 + 2" (identifier "piVar2") (= "=") (binary_expression "piVar1 + 2" (identifier "piVar1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar1 = (int *)*piVar2;" (assignment_expression "piVar1 = (int *)*piVar2" (identifier "piVar1") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (if_statement "if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;" (if "if") (parenthesized_expression "((int *)*piVar2 != (int *)0x0)" (( "(") (binary_expression "(int *)*piVar2 != (int *)0x0" (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00057f60;" (goto "goto") (statement_identifier "LAB_00057f60") (; ";"))) (} "}")))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" (identifier "piVar1") (= "=") (identifier "piVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 4)" (( "(") (binary_expression "iVar5 != 4" (identifier "iVar5") (!= "!=") (number_literal "4")) () ")")) (; ";"))) (} "}"))) (expression_statement "FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");" (call_expression "FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global")" (identifier "FUN_000da200") (argument_list "("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global")" (( "(") (string_literal ""../../gold/powerpc.cc"" (" """) (string_content "../../gold/powerpc.cc") (" """)) (, ",") (number_literal "0x2a3c") (, ",") (string_literal ""do_tls_offset_for_global"" (" """) (string_content "do_tls_offset_for_global") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: int64_t do_tls_offset_for_global(Target_powerpc<32,_false> * this,
   Symbol * gsym, uint got_indx) */

int64_t __thiscall
anon_unknown.dwarf_2af53c::Target_powerpc<32,_false>::do_tls_offset_for_global
          (Target_powerpc<32,_false> *this,Symbol *gsym,uint got_indx)

{
}


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

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

undefined4 MASKED(undefined4 param_1,int param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  
  if ((*(byte *)(param_2 + 0x28) & 0xf) == 6) {
    piVar4 = (int *)(param_2 + 0x1c);
    iVar5 = 1;
    piVar1 = piVar4;
LAB_00057f60:
    do {
      if (*piVar1 == iVar5) {
        piVar2 = piVar4;
        if (piVar1[1] != -1) {
          while (iVar5 != *piVar2) {
            piVar2 = (int *)piVar2[2];
            if (piVar2 == (int *)0x0) goto LAB_00057fab;
          }
          piVar2 = (int *)piVar2[1];
          if (piVar2 == (int *)0xffffffff) {
LAB_00057fab:
                    /* WARNING: Subroutine does not return */
            FUN_000da200("../../gold/symtab.h",0x1b7,"got_offset",piVar2);
          }
          if (iVar5 == 1) {
            piVar2 = piVar2 + 1;
          }
          if ((int *)(param_3 * 4) == piVar2) {
            uVar3 = 0xffff9000;
            if (iVar5 != 3) {
              uVar3 = 0xffff8000;
            }
            return uVar3;
          }
        }
      }
      else {
        piVar2 = piVar1 + 2;
        piVar1 = (int *)*piVar2;
        if ((int *)*piVar2 != (int *)0x0) goto LAB_00057f60;
      }
      iVar5 = iVar5 + 1;
      piVar1 = piVar4;
    } while (iVar5 != 4);
  }
                    /* WARNING: Subroutine does not return */
  FUN_000da200("../../gold/powerpc.cc",0x2a3c,"do_tls_offset_for_global");
}

