
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void reserve_global_got_entry(Target_tilegx<64,_false> * this, uint
   got_index, Symbol * gsym, uint got_type) */

void __thiscall
anon_unknown.dwarf_b97484::Target_tilegx<64,_false>::reserve_global_got_entry
          (Target_tilegx<64,_false> *this,uint got_index,Symbol *gsym,uint got_type)

{
}



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

void FUN_00167790(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined1 local_40 [28];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x16779b;
  iVar1 = (param_2 + 1) * 8;
  uVar4 = FUN_00156d60();
  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);
  if (param_4 == 1) {
    uVar5 = *(undefined4 *)(param_1 + 0x14);
    uVar9 = 1;
    uVar8 = 1;
    uVar7 = 0x6c;
    goto LAB_0016795f;
  }
  if (param_4 != 0) {
    if (param_4 == 2) {
      piVar2 = *(int **)(param_1 + 0x14);
      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {
        uVar6 = (param_2 + 2) * 0x40;
        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);
      }
      else {
        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);
      }
      uVar5 = *(undefined4 *)(param_1 + 0x14);
      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);
      local_24 = 0;
      local_20 = 0;
      FUN_00090f50(uVar4,uVar5,local_40);
      uVar5 = *(undefined4 *)(param_1 + 0x14);
      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);
      local_24 = 0;
      local_20 = 0;
      FUN_00090f50(uVar4,uVar5,local_40);
      return;
    }
    if (param_4 == 3) {
      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");
                    /* WARNING: Subroutine does not return */
      FUN_0023b7b0(uVar4);
    }
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);
  }
  cVar3 = FUN_0034ca00(param_3);
  if (cVar3 != '\0') {
    return;
  }
  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {
    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||
       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))
    goto LAB_0016792e;
LAB_001679d6:
    cVar3 = FUN_00071a80(param_3);
    uVar5 = *(undefined4 *)(param_1 + 0x14);
    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {
      uVar9 = 1;
      uVar8 = 1;
      uVar7 = 0x13;
      goto LAB_0016795f;
    }
  }
  else {
    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;
LAB_0016792e:
    uVar5 = *(undefined4 *)(param_1 + 0x14);
  }
  uVar9 = 0;
  uVar8 = 0;
  uVar7 = 0x11;
LAB_0016795f:
  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);
  local_24 = 0;
  local_20 = 0;
  FUN_00090f50(uVar4,uVar5,local_40);
  return;
}


PUSH EBP
XOR EDX,EDX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x482865
SUB ESP,0x4c
MOV EAX,dword ptr [ESP + 0x64]
MOV ESI,dword ptr [ESP + 0x60]
MOV EDI,dword ptr [ESP + 0x6c]
LEA EBP,[EAX + 0x1]
LEA EAX,[EBP*0x8 + 0x0]
MOV dword ptr [ESP + 0x4],EAX
LEA EAX,[ESI + 0x2c]
CALL 0x00156d60
MOV dword ptr [ESP + 0x8],EAX
PUSH EDI
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESI + 0x14]
CALL 0x002dca90
ADD ESP,0x10
CMP EDI,0x1
JZ 0x00167948
TEST EDI,EDI
JZ 0x001678f8
CMP EDI,0x2
JNZ 0x001678d0
MOV ECX,dword ptr [ESI + 0x14]
LEA EDX,[EBX + 0xffaa5c20]
MOV EAX,dword ptr [ECX]
MOV EAX,dword ptr [EAX + 0x64]
CMP EAX,EDX
JNZ 0x001679a0
MOV EAX,dword ptr [ESP + 0x64]
XOR EDX,EDX
SUB ESP,0xc
ADD ECX,0x38
PUSH EDX
XOR EDX,EDX
LEA EDI,[EAX + 0x2]
SHL EDI,0x6
MOV EAX,EDI
SUB EDI,0x40
SHR EAX,0x3
SHR EDI,0x3
PUSH EAX
PUSH EDX
PUSH EDI
PUSH ECX
CALL 0x00270b80
ADD ESP,0x20
SUB ESP,0xc
MOV EBP,dword ptr [ESI + 0x14]
XOR EDX,EDX
PUSH 0x0
PUSH 0x1
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x1c]
PUSH EDX
PUSH EAX
PUSH EBP
PUSH 0x6a
PUSH dword ptr [ESP + 0x90]
LEA EDI,[ESP + 0x48]
PUSH EDI
CALL 0x002d7e30
MOV dword ptr [ESP + 0x68],0x0
MOV dword ptr [ESP + 0x6c],0x0
ADD ESP,0x2c
PUSH EDI
PUSH EBP
MOV EBP,dword ptr [ESP + 0x14]
PUSH EBP
CALL 0x00090f50
MOV ESI,dword ptr [ESI + 0x14]
MOV dword ptr [ESP],0x0
XOR EDX,EDX
PUSH 0x1
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x1c]
PUSH EDX
ADD EAX,0x8
PUSH EAX
PUSH ESI
PUSH 0x6b
PUSH dword ptr [ESP + 0x90]
PUSH EDI
CALL 0x002d7e30
MOV dword ptr [ESP + 0x68],0x0
MOV dword ptr [ESP + 0x6c],0x0
ADD ESP,0x2c
PUSH EDI
PUSH ESI
PUSH EBP
CALL 0x00090f50
ADD ESP,0x10
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EDI,0x3
JZ 0x00167a1a
PUSH EAX
LEA EAX,[EBX + 0xffe852e8]
PUSH EAX
LEA EAX,[EBX + 0xffe82a52]
PUSH 0xaec
PUSH EAX
CALL 0x002446e0
SUB ESP,0xc
PUSH dword ptr [ESP + 0x74]
CALL 0x0034ca00
ADD ESP,0x10
TEST AL,AL
JNZ 0x001678c8
MOV EAX,dword ptr [ESP + 0x68]
MOV EDI,dword ptr [ESP + 0x4]
XOR EBP,EBP
MOVZX EAX,byte ptr [EAX + 0x2a]
MOV byte ptr [ESP + 0xf],AL
AND EAX,0x7
JZ 0x001679b0
CMP AL,0x4
JNZ 0x001679d6
MOV ESI,dword ptr [ESI + 0x14]
SUB ESP,0xc
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH EBP
PUSH EDI
PUSH ESI
PUSH 0x11
JMP 0x0016795f
SUB ESP,0xc
MOV ESI,dword ptr [ESI + 0x14]
XOR EDX,EDX
PUSH 0x0
PUSH 0x1
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x1c]
PUSH EDX
PUSH EAX
PUSH ESI
PUSH 0x6c
PUSH dword ptr [ESP + 0x90]
LEA EDI,[ESP + 0x48]
PUSH EDI
CALL 0x002d7e30
MOV dword ptr [ESP + 0x68],0x0
MOV dword ptr [ESP + 0x6c],0x0
ADD ESP,0x2c
PUSH EDI
PUSH ESI
PUSH dword ptr [ESP + 0x14]
CALL 0x00090f50
ADD ESP,0x10
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
PUSH EBP
PUSH ECX
CALL EAX
ADD ESP,0x10
JMP 0x0016783a
MOV EAX,dword ptr [ESP + 0x68]
MOV EAX,dword ptr [EAX + 0x8]
TEST byte ptr [EAX + 0x2c],0x1
JNZ 0x0016792e
MOV EAX,dword ptr [ESP + 0x68]
MOV EDX,dword ptr [EAX + 0xc]
TEST EDX,EDX
JNZ 0x001679d6
TEST byte ptr [EAX + 0x2b],0x20
JNZ 0x0016792e
SUB ESP,0xc
PUSH dword ptr [ESP + 0x74]
CALL 0x00071a80
ADD ESP,0x10
MOV ESI,dword ptr [ESI + 0x14]
TEST AL,AL
JNZ 0x00167931
MOV EAX,dword ptr [ESP + 0x68]
MOVZX EAX,byte ptr [EAX + 0x28]
MOV byte ptr [ESP + 0x4],AL
AND EAX,0xf
CMP AL,0xa
JZ 0x00167931
SUB ESP,0xc
PUSH 0x0
PUSH 0x1
PUSH 0x1
PUSH EBP
PUSH EDI
PUSH ESI
PUSH 0x13
JMP 0x0016795f
SUB ESP,0xc
LEA EAX,[EBX + 0xffe82b20]
PUSH EAX
CALL 0x00039440
MOV dword ptr [ESP],EAX
CALL 0x0023b7b0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00167790(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    /* WARNING: Subroutine does not return */\n      FUN_0023b7b0(uVar4);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}\n\n" comment (function_definition "void FUN_00167790(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    /* WARNING: Subroutine does not return */\n      FUN_0023b7b0(uVar4);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}" primitive_type (function_declarator "FUN_00167790(int param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    /* WARNING: Subroutine does not return */\n      FUN_0023b7b0(uVar4);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined1 local_40 [28];" type_identifier (array_declarator "local_40 [28]" identifier [ number_literal ]) ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x16779b;" (assignment_expression "uStack_14 = 0x16779b" identifier = number_literal) ;) (expression_statement "iVar1 = (param_2 + 1) * 8;" (assignment_expression "iVar1 = (param_2 + 1) * 8" identifier = (binary_expression "(param_2 + 1) * 8" (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "uVar4 = FUN_00156d60();" (assignment_expression "uVar4 = FUN_00156d60()" identifier = (call_expression "FUN_00156d60()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);" (assignment_expression "uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" identifier = (call_expression "FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) , identifier , identifier , identifier )))) ;) (if_statement "if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }" if (parenthesized_expression "(param_4 == 1)" ( (binary_expression "param_4 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }" { (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = 0x6c;" (assignment_expression "uVar7 = 0x6c" identifier = number_literal) ;) (goto_statement "goto LAB_0016795f;" goto statement_identifier ;) })) (if_statement "if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    /* WARNING: Subroutine does not return */\n      FUN_0023b7b0(uVar4);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    /* WARNING: Subroutine does not return */\n      FUN_0023b7b0(uVar4);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }" { (if_statement "if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }" if (parenthesized_expression "(param_4 == 2)" ( (binary_expression "param_4 == 2" identifier == number_literal) )) (compound_statement "{\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }" { (expression_statement "piVar2 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x14)" identifier = (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" if (parenthesized_expression "(*(code **)(*piVar2 + 100) == FUN_0008fc20)" ( (binary_expression "*(code **)(*piVar2 + 100) == FUN_0008fc20" (pointer_expression "*(code **)(*piVar2 + 100)" * (cast_expression "(code **)(*piVar2 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 100)" ( (binary_expression "*piVar2 + 100" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }" { (expression_statement "uVar6 = (param_2 + 2) * 0x40;" (assignment_expression "uVar6 = (param_2 + 2) * 0x40" identifier = (binary_expression "(param_2 + 2) * 0x40" (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )) * number_literal)) ;) (expression_statement "FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);" (call_expression "FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0)" identifier (argument_list "(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0)" ( (binary_expression "piVar2 + 0xe" identifier + number_literal) , (binary_expression "uVar6 - 0x40 >> 3" (binary_expression "uVar6 - 0x40" identifier - number_literal) >> number_literal) , number_literal , (binary_expression "uVar6 >> 3" identifier >> number_literal) , number_literal ))) ;) }) (else_clause "else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" else (compound_statement "{\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" { (expression_statement "(**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);" (call_expression "(**(code **)(*piVar2 + 100))(piVar2,param_2 + 1)" (parenthesized_expression "(**(code **)(*piVar2 + 100))" ( (pointer_expression "**(code **)(*piVar2 + 100)" * (pointer_expression "*(code **)(*piVar2 + 100)" * (cast_expression "(code **)(*piVar2 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 100)" ( (binary_expression "*piVar2 + 100" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_2 + 1)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) ))) ;) }))) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);" (call_expression "FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0)" identifier (argument_list "(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0)" ( identifier , identifier , number_literal , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" identifier (argument_list "(uVar4,uVar5,local_40)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);" (call_expression "FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0)" identifier (argument_list "(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0)" ( identifier , identifier , number_literal , identifier , (binary_expression "iVar1 + 8" identifier + number_literal) , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" identifier (argument_list "(uVar4,uVar5,local_40)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    /* WARNING: Subroutine does not return */\n      FUN_0023b7b0(uVar4);\n    }" if (parenthesized_expression "(param_4 == 3)" ( (binary_expression "param_4 == 3" identifier == number_literal) )) (compound_statement "{\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    /* WARNING: Subroutine does not return */\n      FUN_0023b7b0(uVar4);\n    }" { (expression_statement "uVar4 = gettext("TLS_DESC not yet supported for TILEGX");" (assignment_expression "uVar4 = gettext("TLS_DESC not yet supported for TILEGX")" identifier = (call_expression "gettext("TLS_DESC not yet supported for TILEGX")" identifier (argument_list "("TLS_DESC not yet supported for TILEGX")" ( (string_literal ""TLS_DESC not yet supported for TILEGX"" " string_content ") )))) ;) comment (expression_statement "FUN_0023b7b0(uVar4);" (call_expression "FUN_0023b7b0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) comment (expression_statement "FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);" (call_expression "FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5)" identifier (argument_list "("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5)" ( (string_literal ""../../gold/tilegx.cc"" " string_content ") , number_literal , (string_literal ""reserve_global_got_entry"" " string_content ") , identifier ))) ;) })) (expression_statement "cVar3 = FUN_0034ca00(param_3);" (assignment_expression "cVar3 = FUN_0034ca00(param_3)" identifier = (call_expression "FUN_0034ca00(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n    return;\n  }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" if (parenthesized_expression "((*(byte *)(param_3 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_3 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_3 + 0x2a) & 7)" ( (binary_expression "*(byte *)(param_3 + 0x2a) & 7" (pointer_expression "*(byte *)(param_3 + 0x2a)" * (cast_expression "(byte *)(param_3 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2a)" ( (binary_expression "param_3 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }" { (if_statement "if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;" if (parenthesized_expression "(((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))" ( (binary_expression "((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)))" (parenthesized_expression "((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1)" ( (binary_expression "*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1" (pointer_expression "*(byte *)(*(int *)(param_3 + 8) + 0x2c)" * (cast_expression "(byte *)(*(int *)(param_3 + 8) + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_3 + 8) + 0x2c)" ( (binary_expression "*(int *)(param_3 + 8) + 0x2c" (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)))" ( (parenthesized_expression "(*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))" ( (binary_expression "*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)" (binary_expression "*(int *)(param_3 + 0xc) == 0" (pointer_expression "*(int *)(param_3 + 0xc)" * (cast_expression "(int *)(param_3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "((*(byte *)(param_3 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_3 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 0x2b) & 0x20" (pointer_expression "*(byte *)(param_3 + 0x2b)" * (cast_expression "(byte *)(param_3 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2b)" ( (binary_expression "param_3 + 0x2b" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0016792e;" goto statement_identifier ;)) (labeled_statement "LAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);" statement_identifier : (expression_statement "cVar3 = FUN_00071a80(param_3);" (assignment_expression "cVar3 = FUN_00071a80(param_3)" identifier = (call_expression "FUN_00071a80(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;)) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }" if (parenthesized_expression "((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10))" ( (binary_expression "(cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)" (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(byte *)(param_3 + 0x28) & 0xf) != 10)" ( (binary_expression "(*(byte *)(param_3 + 0x28) & 0xf) != 10" (parenthesized_expression "(*(byte *)(param_3 + 0x28) & 0xf)" ( (binary_expression "*(byte *)(param_3 + 0x28) & 0xf" (pointer_expression "*(byte *)(param_3 + 0x28)" * (cast_expression "(byte *)(param_3 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = 0x13;" (assignment_expression "uVar7 = 0x13" identifier = number_literal) ;) (goto_statement "goto LAB_0016795f;" goto statement_identifier ;) })) }) (else_clause "else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" else (compound_statement "{\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" { (if_statement "if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;" if (parenthesized_expression "((*(byte *)(param_3 + 0x2a) & 7) != 4)" ( (binary_expression "(*(byte *)(param_3 + 0x2a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_3 + 0x2a) & 7)" ( (binary_expression "*(byte *)(param_3 + 0x2a) & 7" (pointer_expression "*(byte *)(param_3 + 0x2a)" * (cast_expression "(byte *)(param_3 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2a)" ( (binary_expression "param_3 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001679d6;" goto statement_identifier ;)) (labeled_statement "LAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);" statement_identifier : (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0x11;" (assignment_expression "uVar7 = 0x11" identifier = number_literal) ;) (labeled_statement "LAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);" statement_identifier : (expression_statement "FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);" (call_expression "FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0)" identifier (argument_list "(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier , identifier , number_literal ))) ;)) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" identifier (argument_list "(uVar4,uVar5,local_40)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void reserve_global_got_entry(Target_tilegx<64,_false> * this, uint\n   got_index, Symbol * gsym, uint got_type) */\n\nvoid __thiscall\nanon_unknown.dwarf_b97484::Target_tilegx<64,_false>::reserve_global_got_entry\n          (Target_tilegx<64,_false> *this,uint got_index,Symbol *gsym,uint got_type)\n\n{\n}\n\n" comment comment comment comment (ERROR "void __thiscall\nanon_unknown.dwarf_b97484::Target_tilegx<64,_false>::reserve_global_got_entry\n          (Target_tilegx<64,_false> *this,uint got_index,Symbol *gsym,uint got_type)" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_b97484::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::" identifier > : :) (function_declarator "reserve_global_got_entry\n          (Target_tilegx<64,_false> *this,uint got_index,Symbol *gsym,uint got_type)" identifier (parameter_list "(Target_tilegx<64,_false> *this,uint got_index,Symbol *gsym,uint got_type)" ( (parameter_declaration "Target_tilegx" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint got_index" type_identifier identifier) , (parameter_declaration "Symbol *gsym" type_identifier (pointer_declarator "*gsym" * identifier)) , (parameter_declaration "uint got_type" type_identifier identifier) )))) (compound_statement "{\n}" { }))
(translation_unit "void FUN_00167790(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}\n\n" (function_definition "void FUN_00167790(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}" primitive_type (function_declarator "FUN_00167790(int param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined1 local_40 [28];" type_identifier (array_declarator "local_40 [28]" identifier [ number_literal ]) ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x16779b;" (assignment_expression "uStack_14 = 0x16779b" identifier = number_literal) ;) (expression_statement "iVar1 = (param_2 + 1) * 8;" (assignment_expression "iVar1 = (param_2 + 1) * 8" identifier = (binary_expression "(param_2 + 1) * 8" (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "uVar4 = FUN_00156d60();" (assignment_expression "uVar4 = FUN_00156d60()" identifier = (call_expression "FUN_00156d60()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);" (assignment_expression "uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" identifier = (call_expression "FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) , identifier , identifier , identifier )))) ;) (if_statement "if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }" if (parenthesized_expression "(param_4 == 1)" ( (binary_expression "param_4 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }" { (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = 0x6c;" (assignment_expression "uVar7 = 0x6c" identifier = number_literal) ;) (goto_statement "goto LAB_0016795f;" goto statement_identifier ;) })) (if_statement "if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }" { (if_statement "if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }" if (parenthesized_expression "(param_4 == 2)" ( (binary_expression "param_4 == 2" identifier == number_literal) )) (compound_statement "{\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }" { (expression_statement "piVar2 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x14)" identifier = (pointer_expression "*(int **)(param_1 + 0x14)" * (cast_expression "(int **)(param_1 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" if (parenthesized_expression "(*(code **)(*piVar2 + 100) == FUN_0008fc20)" ( (binary_expression "*(code **)(*piVar2 + 100) == FUN_0008fc20" (pointer_expression "*(code **)(*piVar2 + 100)" * (cast_expression "(code **)(*piVar2 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 100)" ( (binary_expression "*piVar2 + 100" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }" { (expression_statement "uVar6 = (param_2 + 2) * 0x40;" (assignment_expression "uVar6 = (param_2 + 2) * 0x40" identifier = (binary_expression "(param_2 + 2) * 0x40" (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )) * number_literal)) ;) (expression_statement "FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);" (call_expression "FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0)" identifier (argument_list "(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0)" ( (binary_expression "piVar2 + 0xe" identifier + number_literal) , (binary_expression "uVar6 - 0x40 >> 3" (binary_expression "uVar6 - 0x40" identifier - number_literal) >> number_literal) , number_literal , (binary_expression "uVar6 >> 3" identifier >> number_literal) , number_literal ))) ;) }) (else_clause "else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" else (compound_statement "{\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" { (expression_statement "(**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);" (call_expression "(**(code **)(*piVar2 + 100))(piVar2,param_2 + 1)" (parenthesized_expression "(**(code **)(*piVar2 + 100))" ( (pointer_expression "**(code **)(*piVar2 + 100)" * (pointer_expression "*(code **)(*piVar2 + 100)" * (cast_expression "(code **)(*piVar2 + 100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 100)" ( (binary_expression "*piVar2 + 100" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_2 + 1)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) ))) ;) }))) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);" (call_expression "FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0)" identifier (argument_list "(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0)" ( identifier , identifier , number_literal , identifier , identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" identifier (argument_list "(uVar4,uVar5,local_40)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);" (call_expression "FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0)" identifier (argument_list "(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0)" ( identifier , identifier , number_literal , identifier , (binary_expression "iVar1 + 8" identifier + number_literal) , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" identifier (argument_list "(uVar4,uVar5,local_40)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }" if (parenthesized_expression "(param_4 == 3)" ( (binary_expression "param_4 == 3" identifier == number_literal) )) (compound_statement "{\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }" { (expression_statement "uVar4 = gettext("TLS_DESC not yet supported for TILEGX");" (assignment_expression "uVar4 = gettext("TLS_DESC not yet supported for TILEGX")" identifier = (call_expression "gettext("TLS_DESC not yet supported for TILEGX")" identifier (argument_list "("TLS_DESC not yet supported for TILEGX")" ( (string_literal ""TLS_DESC not yet supported for TILEGX"" " string_content ") )))) ;) (expression_statement "FUN_0023b7b0(uVar4);" (call_expression "FUN_0023b7b0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) (expression_statement "FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);" (call_expression "FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5)" identifier (argument_list "("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5)" ( (string_literal ""../../gold/tilegx.cc"" " string_content ") , number_literal , (string_literal ""reserve_global_got_entry"" " string_content ") , identifier ))) ;) })) (expression_statement "cVar3 = FUN_0034ca00(param_3);" (assignment_expression "cVar3 = FUN_0034ca00(param_3)" identifier = (call_expression "FUN_0034ca00(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n    return;\n  }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" if (parenthesized_expression "((*(byte *)(param_3 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_3 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_3 + 0x2a) & 7)" ( (binary_expression "*(byte *)(param_3 + 0x2a) & 7" (pointer_expression "*(byte *)(param_3 + 0x2a)" * (cast_expression "(byte *)(param_3 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2a)" ( (binary_expression "param_3 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }" { (if_statement "if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;" if (parenthesized_expression "(((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))" ( (binary_expression "((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)))" (parenthesized_expression "((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0)" ( (binary_expression "(*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1)" ( (binary_expression "*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1" (pointer_expression "*(byte *)(*(int *)(param_3 + 8) + 0x2c)" * (cast_expression "(byte *)(*(int *)(param_3 + 8) + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_3 + 8) + 0x2c)" ( (binary_expression "*(int *)(param_3 + 8) + 0x2c" (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)))" ( (parenthesized_expression "(*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))" ( (binary_expression "*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)" (binary_expression "*(int *)(param_3 + 0xc) == 0" (pointer_expression "*(int *)(param_3 + 0xc)" * (cast_expression "(int *)(param_3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "((*(byte *)(param_3 + 0x2b) & 0x20) != 0)" ( (binary_expression "(*(byte *)(param_3 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)(param_3 + 0x2b) & 0x20" (pointer_expression "*(byte *)(param_3 + 0x2b)" * (cast_expression "(byte *)(param_3 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2b)" ( (binary_expression "param_3 + 0x2b" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0016792e;" goto statement_identifier ;)) (labeled_statement "LAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);" statement_identifier : (expression_statement "cVar3 = FUN_00071a80(param_3);" (assignment_expression "cVar3 = FUN_00071a80(param_3)" identifier = (call_expression "FUN_00071a80(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;)) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }" if (parenthesized_expression "((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10))" ( (binary_expression "(cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)" (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(byte *)(param_3 + 0x28) & 0xf) != 10)" ( (binary_expression "(*(byte *)(param_3 + 0x28) & 0xf) != 10" (parenthesized_expression "(*(byte *)(param_3 + 0x28) & 0xf)" ( (binary_expression "*(byte *)(param_3 + 0x28) & 0xf" (pointer_expression "*(byte *)(param_3 + 0x28)" * (cast_expression "(byte *)(param_3 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = 0x13;" (assignment_expression "uVar7 = 0x13" identifier = number_literal) ;) (goto_statement "goto LAB_0016795f;" goto statement_identifier ;) })) }) (else_clause "else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" else (compound_statement "{\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" { (if_statement "if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;" if (parenthesized_expression "((*(byte *)(param_3 + 0x2a) & 7) != 4)" ( (binary_expression "(*(byte *)(param_3 + 0x2a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_3 + 0x2a) & 7)" ( (binary_expression "*(byte *)(param_3 + 0x2a) & 7" (pointer_expression "*(byte *)(param_3 + 0x2a)" * (cast_expression "(byte *)(param_3 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2a)" ( (binary_expression "param_3 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001679d6;" goto statement_identifier ;)) (labeled_statement "LAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);" statement_identifier : (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0x11;" (assignment_expression "uVar7 = 0x11" identifier = number_literal) ;) (labeled_statement "LAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);" statement_identifier : (expression_statement "FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);" (call_expression "FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0)" identifier (argument_list "(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier , identifier , number_literal ))) ;)) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" identifier (argument_list "(uVar4,uVar5,local_40)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression (binary_expression IDENT - LIT) >> LIT) , LIT , (binary_expression IDENT >> LIT) , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT , LIT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , (binary_expression IDENT + LIT) , LIT , LIT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (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) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT , IDENT , LIT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00167790(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00167790(int param_1,int param_2,int param_3,int param_4)" (identifier "FUN_00167790") (parameter_list "(int param_1,int param_2,int param_3,int param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined1 local_40 [28];\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x16779b;\n  iVar1 = (param_2 + 1) * 8;\n  uVar4 = FUN_00156d60();\n  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);\n  if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }\n  if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }\n  cVar3 = FUN_0034ca00(param_3);\n  if (cVar3 != '\0') {\n    return;\n  }\n  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }\n  uVar9 = 0;\n  uVar8 = 0;\n  uVar7 = 0x11;\nLAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);\n  local_24 = 0;\n  local_20 = 0;\n  FUN_00090f50(uVar4,uVar5,local_40);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined1 local_40 [28];" (type_identifier "undefined1") (array_declarator "local_40 [28]" (identifier "local_40") ([ "[") (number_literal "28") (] "]")) (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x16779b;" (assignment_expression "uStack_14 = 0x16779b" (identifier "uStack_14") (= "=") (number_literal "0x16779b")) (; ";")) (expression_statement "iVar1 = (param_2 + 1) * 8;" (assignment_expression "iVar1 = (param_2 + 1) * 8" (identifier "iVar1") (= "=") (binary_expression "(param_2 + 1) * 8" (parenthesized_expression "(param_2 + 1)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8"))) (; ";")) (expression_statement "uVar4 = FUN_00156d60();" (assignment_expression "uVar4 = FUN_00156d60()" (identifier "uVar4") (= "=") (call_expression "FUN_00156d60()" (identifier "FUN_00156d60") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);" (assignment_expression "uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" (identifier "uVar5") (= "=") (call_expression "FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" (identifier "FUN_002dca90") (argument_list "(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (param_4 == 1) {\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }" (if "if") (parenthesized_expression "(param_4 == 1)" (( "(") (binary_expression "param_4 == 1" (identifier "param_4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    uVar9 = 1;\n    uVar8 = 1;\n    uVar7 = 0x6c;\n    goto LAB_0016795f;\n  }" ({ "{") (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar7 = 0x6c;" (assignment_expression "uVar7 = 0x6c" (identifier "uVar7") (= "=") (number_literal "0x6c")) (; ";")) (goto_statement "goto LAB_0016795f;" (goto "goto") (statement_identifier "LAB_0016795f") (; ";")) (} "}"))) (if_statement "if (param_4 != 0) {\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }\n    if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }\n                    \n    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);\n  }" ({ "{") (if_statement "if (param_4 == 2) {\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }" (if "if") (parenthesized_expression "(param_4 == 2)" (( "(") (binary_expression "param_4 == 2" (identifier "param_4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      piVar2 = *(int **)(param_1 + 0x14);\n      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      uVar5 = *(undefined4 *)(param_1 + 0x14);\n      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);\n      local_24 = 0;\n      local_20 = 0;\n      FUN_00090f50(uVar4,uVar5,local_40);\n      return;\n    }" ({ "{") (expression_statement "piVar2 = *(int **)(param_1 + 0x14);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x14)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x14)" (* "*") (cast_expression "(int **)(param_1 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }\n      else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" (if "if") (parenthesized_expression "(*(code **)(*piVar2 + 100) == FUN_0008fc20)" (( "(") (binary_expression "*(code **)(*piVar2 + 100) == FUN_0008fc20" (pointer_expression "*(code **)(*piVar2 + 100)" (* "*") (cast_expression "(code **)(*piVar2 + 100)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 100)" (( "(") (binary_expression "*piVar2 + 100" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "100")) () ")")))) (== "==") (identifier "FUN_0008fc20")) () ")")) (compound_statement "{\n        uVar6 = (param_2 + 2) * 0x40;\n        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);\n      }" ({ "{") (expression_statement "uVar6 = (param_2 + 2) * 0x40;" (assignment_expression "uVar6 = (param_2 + 2) * 0x40" (identifier "uVar6") (= "=") (binary_expression "(param_2 + 2) * 0x40" (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")) (* "*") (number_literal "0x40"))) (; ";")) (expression_statement "FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);" (call_expression "FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0)" (identifier "FUN_00270b80") (argument_list "(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0)" (( "(") (binary_expression "piVar2 + 0xe" (identifier "piVar2") (+ "+") (number_literal "0xe")) (, ",") (binary_expression "uVar6 - 0x40 >> 3" (binary_expression "uVar6 - 0x40" (identifier "uVar6") (- "-") (number_literal "0x40")) (>> ">>") (number_literal "3")) (, ",") (number_literal "0") (, ",") (binary_expression "uVar6 >> 3" (identifier "uVar6") (>> ">>") (number_literal "3")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" (else "else") (compound_statement "{\n        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);\n      }" ({ "{") (expression_statement "(**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);" (call_expression "(**(code **)(*piVar2 + 100))(piVar2,param_2 + 1)" (parenthesized_expression "(**(code **)(*piVar2 + 100))" (( "(") (pointer_expression "**(code **)(*piVar2 + 100)" (* "*") (pointer_expression "*(code **)(*piVar2 + 100)" (* "*") (cast_expression "(code **)(*piVar2 + 100)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 100)" (( "(") (binary_expression "*piVar2 + 100" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "100")) () ")"))))) () ")")) (argument_list "(piVar2,param_2 + 1)" (( "(") (identifier "piVar2") (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")"))) (; ";")) (} "}")))) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);" (call_expression "FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0)" (identifier "FUN_002d7e30") (argument_list "(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0)" (( "(") (identifier "local_40") (, ",") (identifier "param_3") (, ",") (number_literal "0x6a") (, ",") (identifier "uVar5") (, ",") (identifier "iVar1") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" (identifier "FUN_00090f50") (argument_list "(uVar4,uVar5,local_40)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar5") (, ",") (identifier "local_40") () ")"))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);" (call_expression "FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0)" (identifier "FUN_002d7e30") (argument_list "(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0)" (( "(") (identifier "local_40") (, ",") (identifier "param_3") (, ",") (number_literal "0x6b") (, ",") (identifier "uVar5") (, ",") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" (identifier "FUN_00090f50") (argument_list "(uVar4,uVar5,local_40)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar5") (, ",") (identifier "local_40") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_4 == 3) {\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }" (if "if") (parenthesized_expression "(param_4 == 3)" (( "(") (binary_expression "param_4 == 3" (identifier "param_4") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");\n                    \n      FUN_0023b7b0(uVar4);\n    }" ({ "{") (expression_statement "uVar4 = gettext("TLS_DESC not yet supported for TILEGX");" (assignment_expression "uVar4 = gettext("TLS_DESC not yet supported for TILEGX")" (identifier "uVar4") (= "=") (call_expression "gettext("TLS_DESC not yet supported for TILEGX")" (identifier "gettext") (argument_list "("TLS_DESC not yet supported for TILEGX")" (( "(") (string_literal ""TLS_DESC not yet supported for TILEGX"" (" """) (string_content "TLS_DESC not yet supported for TILEGX") (" """)) () ")")))) (; ";")) (expression_statement "FUN_0023b7b0(uVar4);" (call_expression "FUN_0023b7b0(uVar4)" (identifier "FUN_0023b7b0") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);" (call_expression "FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5)" (identifier "FUN_002446e0") (argument_list "("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5)" (( "(") (string_literal ""../../gold/tilegx.cc"" (" """) (string_content "../../gold/tilegx.cc") (" """)) (, ",") (number_literal "0xaec") (, ",") (string_literal ""reserve_global_got_entry"" (" """) (string_content "reserve_global_got_entry") (" """)) (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "cVar3 = FUN_0034ca00(param_3);" (assignment_expression "cVar3 = FUN_0034ca00(param_3)" (identifier "cVar3") (= "=") (call_expression "FUN_0034ca00(param_3)" (identifier "FUN_0034ca00") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (cVar3 != '\0') {\n    return;\n  }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }\n  else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_3 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_3 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)(param_3 + 0x2a) & 7" (pointer_expression "*(byte *)(param_3 + 0x2a)" (* "*") (cast_expression "(byte *)(param_3 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2a)" (( "(") (binary_expression "param_3 + 0x2a" (identifier "param_3") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;\nLAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }\n  }" ({ "{") (if_statement "if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))\n    goto LAB_0016792e;" (if "if") (parenthesized_expression "(((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))" (( "(") (binary_expression "((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||\n       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)))" (parenthesized_expression "((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0" (parenthesized_expression "(*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1)" (( "(") (binary_expression "*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1" (pointer_expression "*(byte *)(*(int *)(param_3 + 8) + 0x2c)" (* "*") (cast_expression "(byte *)(*(int *)(param_3 + 8) + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_3 + 8) + 0x2c)" (( "(") (binary_expression "*(int *)(param_3 + 8) + 0x2c" (pointer_expression "*(int *)(param_3 + 8)" (* "*") (cast_expression "(int *)(param_3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)))" (( "(") (parenthesized_expression "(*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))" (( "(") (binary_expression "*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0)" (binary_expression "*(int *)(param_3 + 0xc) == 0" (pointer_expression "*(int *)(param_3 + 0xc)" (* "*") (cast_expression "(int *)(param_3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "((*(byte *)(param_3 + 0x2b) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 0x2b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x2b) & 0x20)" (( "(") (binary_expression "*(byte *)(param_3 + 0x2b) & 0x20" (pointer_expression "*(byte *)(param_3 + 0x2b)" (* "*") (cast_expression "(byte *)(param_3 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2b)" (( "(") (binary_expression "param_3 + 0x2b" (identifier "param_3") (+ "+") (number_literal "0x2b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0016792e;" (goto "goto") (statement_identifier "LAB_0016792e") (; ";"))) (labeled_statement "LAB_001679d6:\n    cVar3 = FUN_00071a80(param_3);" (statement_identifier "LAB_001679d6") (: ":") (expression_statement "cVar3 = FUN_00071a80(param_3);" (assignment_expression "cVar3 = FUN_00071a80(param_3)" (identifier "cVar3") (= "=") (call_expression "FUN_00071a80(param_3)" (identifier "FUN_00071a80") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";"))) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }" (if "if") (parenthesized_expression "((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10))" (( "(") (binary_expression "(cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)" (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_3 + 0x28) & 0xf) != 10)" (( "(") (binary_expression "(*(byte *)(param_3 + 0x28) & 0xf) != 10" (parenthesized_expression "(*(byte *)(param_3 + 0x28) & 0xf)" (( "(") (binary_expression "*(byte *)(param_3 + 0x28) & 0xf" (pointer_expression "*(byte *)(param_3 + 0x28)" (* "*") (cast_expression "(byte *)(param_3 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x28)" (( "(") (binary_expression "param_3 + 0x28" (identifier "param_3") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (!= "!=") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n      uVar9 = 1;\n      uVar8 = 1;\n      uVar7 = 0x13;\n      goto LAB_0016795f;\n    }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar7 = 0x13;" (assignment_expression "uVar7 = 0x13" (identifier "uVar7") (= "=") (number_literal "0x13")) (; ";")) (goto_statement "goto LAB_0016795f;" (goto "goto") (statement_identifier "LAB_0016795f") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" (else "else") (compound_statement "{\n    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;\nLAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);\n  }" ({ "{") (if_statement "if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;" (if "if") (parenthesized_expression "((*(byte *)(param_3 + 0x2a) & 7) != 4)" (( "(") (binary_expression "(*(byte *)(param_3 + 0x2a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_3 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)(param_3 + 0x2a) & 7" (pointer_expression "*(byte *)(param_3 + 0x2a)" (* "*") (cast_expression "(byte *)(param_3 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2a)" (( "(") (binary_expression "param_3 + 0x2a" (identifier "param_3") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "4")) () ")")) (goto_statement "goto LAB_001679d6;" (goto "goto") (statement_identifier "LAB_001679d6") (; ";"))) (labeled_statement "LAB_0016792e:\n    uVar5 = *(undefined4 *)(param_1 + 0x14);" (statement_identifier "LAB_0016792e") (: ":") (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 0x11;" (assignment_expression "uVar7 = 0x11" (identifier "uVar7") (= "=") (number_literal "0x11")) (; ";")) (labeled_statement "LAB_0016795f:\n  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);" (statement_identifier "LAB_0016795f") (: ":") (expression_statement "FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);" (call_expression "FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0)" (identifier "FUN_002d7e30") (argument_list "(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0)" (( "(") (identifier "local_40") (, ",") (identifier "param_3") (, ",") (identifier "uVar7") (, ",") (identifier "uVar5") (, ",") (identifier "iVar1") (, ",") (number_literal "0") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") (, ",") (number_literal "0") () ")"))) (; ";"))) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00090f50(uVar4,uVar5,local_40);" (call_expression "FUN_00090f50(uVar4,uVar5,local_40)" (identifier "FUN_00090f50") (argument_list "(uVar4,uVar5,local_40)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar5") (, ",") (identifier "local_40") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void reserve_global_got_entry(Target_tilegx<64,_false> * this, uint
   got_index, Symbol * gsym, uint got_type) */

void __thiscall
anon_unknown.dwarf_b97484::Target_tilegx<64,_false>::reserve_global_got_entry
          (Target_tilegx<64,_false> *this,uint got_index,Symbol *gsym,uint got_type)

{
}


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

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

void MASKED(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined1 local_40 [28];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x16779b;
  iVar1 = (param_2 + 1) * 8;
  uVar4 = FUN_00156d60();
  uVar5 = FUN_002dca90(*(undefined4 *)(param_1 + 0x14),param_2,param_3,param_4);
  if (param_4 == 1) {
    uVar5 = *(undefined4 *)(param_1 + 0x14);
    uVar9 = 1;
    uVar8 = 1;
    uVar7 = 0x6c;
    goto LAB_0016795f;
  }
  if (param_4 != 0) {
    if (param_4 == 2) {
      piVar2 = *(int **)(param_1 + 0x14);
      if (*(code **)(*piVar2 + 100) == FUN_0008fc20) {
        uVar6 = (param_2 + 2) * 0x40;
        FUN_00270b80(piVar2 + 0xe,uVar6 - 0x40 >> 3,0,uVar6 >> 3,0);
      }
      else {
        (**(code **)(*piVar2 + 100))(piVar2,param_2 + 1);
      }
      uVar5 = *(undefined4 *)(param_1 + 0x14);
      FUN_002d7e30(local_40,param_3,0x6a,uVar5,iVar1,0,1,1,0);
      local_24 = 0;
      local_20 = 0;
      FUN_00090f50(uVar4,uVar5,local_40);
      uVar5 = *(undefined4 *)(param_1 + 0x14);
      FUN_002d7e30(local_40,param_3,0x6b,uVar5,iVar1 + 8,0,1,1,0);
      local_24 = 0;
      local_20 = 0;
      FUN_00090f50(uVar4,uVar5,local_40);
      return;
    }
    if (param_4 == 3) {
      uVar4 = gettext("TLS_DESC not yet supported for TILEGX");
                    /* WARNING: Subroutine does not return */
      FUN_0023b7b0(uVar4);
    }
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/tilegx.cc",0xaec,"reserve_global_got_entry",uVar5);
  }
  cVar3 = FUN_0034ca00(param_3);
  if (cVar3 != '\0') {
    return;
  }
  if ((*(byte *)(param_3 + 0x2a) & 7) == 0) {
    if (((*(byte *)(*(int *)(param_3 + 8) + 0x2c) & 1) != 0) ||
       ((*(int *)(param_3 + 0xc) == 0 && ((*(byte *)(param_3 + 0x2b) & 0x20) != 0))))
    goto LAB_0016792e;
LAB_001679d6:
    cVar3 = FUN_00071a80(param_3);
    uVar5 = *(undefined4 *)(param_1 + 0x14);
    if ((cVar3 == '\0') && ((*(byte *)(param_3 + 0x28) & 0xf) != 10)) {
      uVar9 = 1;
      uVar8 = 1;
      uVar7 = 0x13;
      goto LAB_0016795f;
    }
  }
  else {
    if ((*(byte *)(param_3 + 0x2a) & 7) != 4) goto LAB_001679d6;
LAB_0016792e:
    uVar5 = *(undefined4 *)(param_1 + 0x14);
  }
  uVar9 = 0;
  uVar8 = 0;
  uVar7 = 0x11;
LAB_0016795f:
  FUN_002d7e30(local_40,param_3,uVar7,uVar5,iVar1,0,uVar8,uVar9,0);
  local_24 = 0;
  local_20 = 0;
  FUN_00090f50(uVar4,uVar5,local_40);
  return;
}

