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

void S_SET_THREAD_LOCAL(symbolS *s)

{
  bfd_section *pbVar1;
  uint uVar2;
  char *pcVar3;
  segT paVar4;
  symbolS *psVar5;
  
  paVar4 = (segT)s->bsym;
  if (((uint)s->sy_flags & 1) != 0) {
    if (reg_section == paVar4) {
      s = (s->sy_value).X_op_symbol;
      paVar4 = (segT)s->bsym;
    }
    else {
      s = local_symbol_convert((local_symbol *)s);
      paVar4 = (segT)s->bsym;
    }
  }
  pbVar1 = paVar4->prev;
  uVar2 = *(uint *)((undefined *)paVar4->flags + 0x14);
  if (((uVar2 & 0x1000) != 0) && (((uint)pbVar1 & 0x40000) != 0)) {
    return;
  }
  paVar4->prev = (bfd_section *)((uint)pbVar1 | 0x40000);
  if (((uint)pbVar1 & 8) == 0) {
    if ((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0) {
      return;
    }
    if ((uVar2 & 0x400) != 0) {
      return;
    }
    if (((uint)s->sy_flags & 1) == 0) {
LAB_0003b3b6:
      psVar5 = (symbolS *)paVar4->id;
    }
    else {
      if (reg_section == paVar4) {
        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;
        goto LAB_0003b3b6;
      }
      psVar5 = (s->sy_value).X_add_symbol;
    }
    pcVar3 = "Accessing `%s\' as thread-local object";
    goto LAB_0003b33c;
  }
  if (((uint)s->sy_flags & 1) == 0) {
LAB_0003b32e:
    psVar5 = (symbolS *)paVar4->id;
  }
  else {
    if (reg_section == paVar4) {
      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;
      goto LAB_0003b32e;
    }
    psVar5 = (s->sy_value).X_add_symbol;
  }
  pcVar3 = "Accessing function `%s\' as thread-local object";
LAB_0003b33c:
  pcVar3 = (char *)dcgettext(0,pcVar3,5);
  as_bad(pcVar3,psVar5);
  return;
}



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

void FUN_0003b2b0(byte *param_1)

{
  uint uVar1;
  uint uVar2;
  char *pcVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 uVar6;
  
  iVar5 = *(int *)(param_1 + 4);
  if ((*param_1 & 1) != 0) {
    if (DAT_000897ec == iVar5) {
      param_1 = *(byte **)(param_1 + 0xc);
      iVar5 = *(int *)(param_1 + 4);
    }
    else {
      param_1 = (byte *)FUN_00038d80();
      iVar5 = *(int *)(param_1 + 4);
    }
  }
  uVar1 = *(uint *)(iVar5 + 0x10);
  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);
  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {
    return;
  }
  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;
  if ((uVar1 & 8) == 0) {
    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {
      return;
    }
    if ((uVar2 & 0x400) != 0) {
      return;
    }
    if ((*param_1 & 1) == 0) {
LAB_0003b3b6:
      uVar6 = *(undefined4 *)(iVar5 + 4);
    }
    else {
      if (DAT_000897ec == iVar5) {
        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);
        goto LAB_0003b3b6;
      }
      uVar6 = *(undefined4 *)(param_1 + 8);
    }
    pcVar3 = "Accessing `%s\' as thread-local object";
    goto LAB_0003b33c;
  }
  if ((*param_1 & 1) == 0) {
LAB_0003b32e:
    uVar6 = *(undefined4 *)(iVar5 + 4);
  }
  else {
    if (DAT_000897ec == iVar5) {
      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);
      goto LAB_0003b32e;
    }
    uVar6 = *(undefined4 *)(param_1 + 8);
  }
  pcVar3 = "Accessing function `%s\' as thread-local object";
LAB_0003b33c:
  uVar4 = dcgettext(0,pcVar3,5);
  FUN_0002bd60(uVar4,uVar6);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016000
ADD EBX,0x44d47
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [EAX + 0x4]
TEST byte ptr [EAX],0x1
JZ 0x0003b2e4
LEA ECX,[EBX + 0x97ec]
CMP dword ptr [ECX],EDX
JZ 0x0003b3a0
CALL 0x00038d80
MOV EDX,dword ptr [EAX + 0x4]
MOV ESI,dword ptr [EDX + 0x14]
MOV ECX,dword ptr [EDX + 0x10]
MOV EDI,dword ptr [ESI + 0x14]
TEST EDI,0x1000
JZ 0x0003b2fd
TEST ECX,0x40000
JNZ 0x0003b350
MOV EBP,ECX
OR EBP,0x40000
AND ECX,0x8
MOV dword ptr [EDX + 0x10],EBP
JZ 0x0003b360
TEST byte ptr [EAX],0x1
JZ 0x0003b32e
LEA ECX,[EBX + 0x97ec]
CMP dword ptr [ECX],EDX
JZ 0x0003b328
MOV ESI,dword ptr [EAX + 0x8]
JMP 0x0003b331
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x4]
MOV ESI,dword ptr [EDX + 0x4]
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe12f0]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x0002bd60
ADD ESP,0x10
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [EBX + 0xffffffb0]
ADD ECX,0xc0
CMP ESI,ECX
JZ 0x0003b350
AND EDI,0x400
JNZ 0x0003b350
TEST byte ptr [EAX],0x1
JZ 0x0003b3b6
LEA ECX,[EBX + 0x97ec]
CMP dword ptr [ECX],EDX
JZ 0x0003b3b0
MOV ESI,dword ptr [EAX + 0x8]
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe1320]
PUSH 0x5
JMP 0x0003b33c
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x4]
JMP 0x0003b2e4
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x4]
MOV ESI,dword ptr [EDX + 0x4]
JMP 0x0003b38a
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_0003b2b0(byte *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}\n\n" comment (function_definition "void FUN_0003b2b0(byte *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}" primitive_type (function_declarator "FUN_0003b2b0(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }" { (if_statement "if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" if (parenthesized_expression "(DAT_000897ec == iVar5)" ( (binary_expression "DAT_000897ec == iVar5" identifier == identifier) )) (compound_statement "{\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }" { (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" identifier = (pointer_expression "*(byte **)(param_1 + 0xc)" * (cast_expression "(byte **)(param_1 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" else (compound_statement "{\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" { (expression_statement "param_1 = (byte *)FUN_00038d80();" (assignment_expression "param_1 = (byte *)FUN_00038d80()" identifier = (cast_expression "(byte *)FUN_00038d80()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00038d80()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }))) })) (expression_statement "uVar1 = *(uint *)(iVar5 + 0x10);" (assignment_expression "uVar1 = *(uint *)(iVar5 + 0x10)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x10)" * (cast_expression "(uint *)(iVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);" (assignment_expression "uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" identifier = (pointer_expression "*(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" * (cast_expression "(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined **)(iVar5 + 0x14) + 0x14)" ( (binary_expression "*(undefined **)(iVar5 + 0x14) + 0x14" (pointer_expression "*(undefined **)(iVar5 + 0x14)" * (cast_expression "(undefined **)(iVar5 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }" if (parenthesized_expression "(((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0))" ( (binary_expression "((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)" (parenthesized_expression "((uVar2 & 0x1000) != 0)" ( (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" ( (binary_expression "uVar2 & 0x1000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar1 & 0x40000) != 0)" ( (binary_expression "(uVar1 & 0x40000) != 0" (parenthesized_expression "(uVar1 & 0x40000)" ( (binary_expression "uVar1 & 0x40000" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "*(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;" (assignment_expression "*(uint *)(iVar5 + 0x10) = uVar1 | 0x40000" (pointer_expression "*(uint *)(iVar5 + 0x10)" * (cast_expression "(uint *)(iVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) = (binary_expression "uVar1 | 0x40000" identifier | number_literal)) ;) (if_statement "if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" if (parenthesized_expression "((uVar1 & 8) == 0)" ( (binary_expression "(uVar1 & 8) == 0" (parenthesized_expression "(uVar1 & 8)" ( (binary_expression "uVar1 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" { (if_statement "if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }" if (parenthesized_expression "(*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0)" ( (binary_expression "*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0" (pointer_expression "*(undefined **)(iVar5 + 0x14)" * (cast_expression "(undefined **)(iVar5 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) == (binary_expression "PTR__bfd_std_section_0007ffb0 + 0xc0" identifier + number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((uVar2 & 0x400) != 0) {\n      return;\n    }" if (parenthesized_expression "((uVar2 & 0x400) != 0)" ( (binary_expression "(uVar2 & 0x400) != 0" (parenthesized_expression "(uVar2 & 0x400)" ( (binary_expression "uVar2 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" if (parenthesized_expression "((*param_1 & 1) == 0)" ( (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }" { (labeled_statement "LAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);" statement_identifier : (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" else (compound_statement "{\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" { (if_statement "if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }" if (parenthesized_expression "(DAT_000897ec == iVar5)" ( (binary_expression "DAT_000897ec == iVar5" identifier == identifier) )) (compound_statement "{\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }" { (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_0003b3b6;" goto statement_identifier ;) })) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 8);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar3 = "Accessing `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing `%s\' as thread-local object"" identifier = (string_literal ""Accessing `%s\' as thread-local object"" " string_content escape_sequence string_content ")) ;) (goto_statement "goto LAB_0003b33c;" goto statement_identifier ;) })) (if_statement "if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" if (parenthesized_expression "((*param_1 & 1) == 0)" ( (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }" { (labeled_statement "LAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);" statement_identifier : (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" else (compound_statement "{\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" { (if_statement "if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }" if (parenthesized_expression "(DAT_000897ec == iVar5)" ( (binary_expression "DAT_000897ec == iVar5" identifier == identifier) )) (compound_statement "{\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }" { (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_0003b32e;" goto statement_identifier ;) })) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 8);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar3 = "Accessing function `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing function `%s\' as thread-local object"" identifier = (string_literal ""Accessing function `%s\' as thread-local object"" " string_content escape_sequence string_content ")) ;) (labeled_statement "LAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);" statement_identifier : (expression_statement "uVar4 = dcgettext(0,pcVar3,5);" (assignment_expression "uVar4 = dcgettext(0,pcVar3,5)" identifier = (call_expression "dcgettext(0,pcVar3,5)" identifier (argument_list "(0,pcVar3,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "FUN_0002bd60(uVar4,uVar6);" (call_expression "FUN_0002bd60(uVar4,uVar6)" identifier (argument_list "(uVar4,uVar6)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid S_SET_THREAD_LOCAL(symbolS *s)\n\n{\n  bfd_section *pbVar1;\n  uint uVar2;\n  char *pcVar3;\n  segT paVar4;\n  symbolS *psVar5;\n  \n  paVar4 = (segT)s->bsym;\n  if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section == paVar4) {\n      s = (s->sy_value).X_op_symbol;\n      paVar4 = (segT)s->bsym;\n    }\n    else {\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }\n  }\n  pbVar1 = paVar4->prev;\n  uVar2 = *(uint *)((undefined *)paVar4->flags + 0x14);\n  if (((uVar2 & 0x1000) != 0) && (((uint)pbVar1 & 0x40000) != 0)) {\n    return;\n  }\n  paVar4->prev = (bfd_section *)((uint)pbVar1 | 0x40000);\n  if (((uint)pbVar1 & 8) == 0) {\n    if ((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;\n    }\n    else {\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b32e:\n    psVar5 = (symbolS *)paVar4->id;\n  }\n  else {\n    if (reg_section == paVar4) {\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }\n    psVar5 = (s->sy_value).X_add_symbol;\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  pcVar3 = (char *)dcgettext(0,pcVar3,5);\n  as_bad(pcVar3,psVar5);\n  return;\n}\n\n" comment (function_definition "void S_SET_THREAD_LOCAL(symbolS *s)\n\n{\n  bfd_section *pbVar1;\n  uint uVar2;\n  char *pcVar3;\n  segT paVar4;\n  symbolS *psVar5;\n  \n  paVar4 = (segT)s->bsym;\n  if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section == paVar4) {\n      s = (s->sy_value).X_op_symbol;\n      paVar4 = (segT)s->bsym;\n    }\n    else {\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }\n  }\n  pbVar1 = paVar4->prev;\n  uVar2 = *(uint *)((undefined *)paVar4->flags + 0x14);\n  if (((uVar2 & 0x1000) != 0) && (((uint)pbVar1 & 0x40000) != 0)) {\n    return;\n  }\n  paVar4->prev = (bfd_section *)((uint)pbVar1 | 0x40000);\n  if (((uint)pbVar1 & 8) == 0) {\n    if ((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;\n    }\n    else {\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b32e:\n    psVar5 = (symbolS *)paVar4->id;\n  }\n  else {\n    if (reg_section == paVar4) {\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }\n    psVar5 = (s->sy_value).X_add_symbol;\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  pcVar3 = (char *)dcgettext(0,pcVar3,5);\n  as_bad(pcVar3,psVar5);\n  return;\n}" primitive_type (function_declarator "S_SET_THREAD_LOCAL(symbolS *s)" identifier (parameter_list "(symbolS *s)" ( (parameter_declaration "symbolS *s" type_identifier (pointer_declarator "*s" * identifier)) ))) (compound_statement "{\n  bfd_section *pbVar1;\n  uint uVar2;\n  char *pcVar3;\n  segT paVar4;\n  symbolS *psVar5;\n  \n  paVar4 = (segT)s->bsym;\n  if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section == paVar4) {\n      s = (s->sy_value).X_op_symbol;\n      paVar4 = (segT)s->bsym;\n    }\n    else {\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }\n  }\n  pbVar1 = paVar4->prev;\n  uVar2 = *(uint *)((undefined *)paVar4->flags + 0x14);\n  if (((uVar2 & 0x1000) != 0) && (((uint)pbVar1 & 0x40000) != 0)) {\n    return;\n  }\n  paVar4->prev = (bfd_section *)((uint)pbVar1 | 0x40000);\n  if (((uint)pbVar1 & 8) == 0) {\n    if ((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;\n    }\n    else {\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b32e:\n    psVar5 = (symbolS *)paVar4->id;\n  }\n  else {\n    if (reg_section == paVar4) {\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }\n    psVar5 = (s->sy_value).X_add_symbol;\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  pcVar3 = (char *)dcgettext(0,pcVar3,5);\n  as_bad(pcVar3,psVar5);\n  return;\n}" { (declaration "bfd_section *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "segT paVar4;" type_identifier identifier ;) (declaration "symbolS *psVar5;" type_identifier (pointer_declarator "*psVar5" * identifier) ;) (expression_statement "paVar4 = (segT)s->bsym;" (assignment_expression "paVar4 = (segT)s->bsym" identifier = (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier))) ;) (if_statement "if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section == paVar4) {\n      s = (s->sy_value).X_op_symbol;\n      paVar4 = (segT)s->bsym;\n    }\n    else {\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }\n  }" if (parenthesized_expression "(((uint)s->sy_flags & 1) != 0)" ( (binary_expression "((uint)s->sy_flags & 1) != 0" (parenthesized_expression "((uint)s->sy_flags & 1)" ( (binary_expression "(uint)s->sy_flags & 1" (cast_expression "(uint)s->sy_flags" ( (type_descriptor "uint" type_identifier) ) (field_expression "s->sy_flags" identifier -> field_identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (reg_section == paVar4) {\n      s = (s->sy_value).X_op_symbol;\n      paVar4 = (segT)s->bsym;\n    }\n    else {\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }\n  }" { (if_statement "if (reg_section == paVar4) {\n      s = (s->sy_value).X_op_symbol;\n      paVar4 = (segT)s->bsym;\n    }\n    else {\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }" if (parenthesized_expression "(reg_section == paVar4)" ( (binary_expression "reg_section == paVar4" identifier == identifier) )) (compound_statement "{\n      s = (s->sy_value).X_op_symbol;\n      paVar4 = (segT)s->bsym;\n    }" { (expression_statement "s = (s->sy_value).X_op_symbol;" (assignment_expression "s = (s->sy_value).X_op_symbol" identifier = (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "paVar4 = (segT)s->bsym;" (assignment_expression "paVar4 = (segT)s->bsym" identifier = (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier))) ;) }) (else_clause "else {\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }" else (compound_statement "{\n      s = local_symbol_convert((local_symbol *)s);\n      paVar4 = (segT)s->bsym;\n    }" { (expression_statement "s = local_symbol_convert((local_symbol *)s);" (assignment_expression "s = local_symbol_convert((local_symbol *)s)" identifier = (call_expression "local_symbol_convert((local_symbol *)s)" identifier (argument_list "((local_symbol *)s)" ( (cast_expression "(local_symbol *)s" ( (type_descriptor "local_symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "paVar4 = (segT)s->bsym;" (assignment_expression "paVar4 = (segT)s->bsym" identifier = (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier))) ;) }))) })) (expression_statement "pbVar1 = paVar4->prev;" (assignment_expression "pbVar1 = paVar4->prev" identifier = (field_expression "paVar4->prev" identifier -> field_identifier)) ;) (expression_statement "uVar2 = *(uint *)((undefined *)paVar4->flags + 0x14);" (assignment_expression "uVar2 = *(uint *)((undefined *)paVar4->flags + 0x14)" identifier = (pointer_expression "*(uint *)((undefined *)paVar4->flags + 0x14)" * (cast_expression "(uint *)((undefined *)paVar4->flags + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined *)paVar4->flags + 0x14)" ( (binary_expression "(undefined *)paVar4->flags + 0x14" (cast_expression "(undefined *)paVar4->flags" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar4->flags" identifier -> field_identifier)) + number_literal) ))))) ;) (if_statement "if (((uVar2 & 0x1000) != 0) && (((uint)pbVar1 & 0x40000) != 0)) {\n    return;\n  }" if (parenthesized_expression "(((uVar2 & 0x1000) != 0) && (((uint)pbVar1 & 0x40000) != 0))" ( (binary_expression "((uVar2 & 0x1000) != 0) && (((uint)pbVar1 & 0x40000) != 0)" (parenthesized_expression "((uVar2 & 0x1000) != 0)" ( (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" ( (binary_expression "uVar2 & 0x1000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(((uint)pbVar1 & 0x40000) != 0)" ( (binary_expression "((uint)pbVar1 & 0x40000) != 0" (parenthesized_expression "((uint)pbVar1 & 0x40000)" ( (binary_expression "(uint)pbVar1 & 0x40000" (cast_expression "(uint)pbVar1" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "paVar4->prev = (bfd_section *)((uint)pbVar1 | 0x40000);" (assignment_expression "paVar4->prev = (bfd_section *)((uint)pbVar1 | 0x40000)" (field_expression "paVar4->prev" identifier -> field_identifier) = (cast_expression "(bfd_section *)((uint)pbVar1 | 0x40000)" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pbVar1 | 0x40000)" ( (binary_expression "(uint)pbVar1 | 0x40000" (cast_expression "(uint)pbVar1" ( (type_descriptor "uint" type_identifier) ) identifier) | number_literal) )))) ;) (if_statement "if (((uint)pbVar1 & 8) == 0) {\n    if ((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;\n    }\n    else {\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" if (parenthesized_expression "(((uint)pbVar1 & 8) == 0)" ( (binary_expression "((uint)pbVar1 & 8) == 0" (parenthesized_expression "((uint)pbVar1 & 8)" ( (binary_expression "(uint)pbVar1 & 8" (cast_expression "(uint)pbVar1" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;\n    }\n    else {\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" { (if_statement "if ((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }" if (parenthesized_expression "((undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0)" ( (binary_expression "(undefined *)paVar4->flags == PTR__bfd_std_section_0007ffb0 + 0xc0" (cast_expression "(undefined *)paVar4->flags" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar4->flags" identifier -> field_identifier)) == (binary_expression "PTR__bfd_std_section_0007ffb0 + 0xc0" identifier + number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((uVar2 & 0x400) != 0) {\n      return;\n    }" if (parenthesized_expression "((uVar2 & 0x400) != 0)" ( (binary_expression "(uVar2 & 0x400) != 0" (parenthesized_expression "(uVar2 & 0x400)" ( (binary_expression "uVar2 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;\n    }\n    else {\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }" if (parenthesized_expression "(((uint)s->sy_flags & 1) == 0)" ( (binary_expression "((uint)s->sy_flags & 1) == 0" (parenthesized_expression "((uint)s->sy_flags & 1)" ( (binary_expression "(uint)s->sy_flags & 1" (cast_expression "(uint)s->sy_flags" ( (type_descriptor "uint" type_identifier) ) (field_expression "s->sy_flags" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;\n    }" { (labeled_statement "LAB_0003b3b6:\n      psVar5 = (symbolS *)paVar4->id;" statement_identifier : (expression_statement "psVar5 = (symbolS *)paVar4->id;" (assignment_expression "psVar5 = (symbolS *)paVar4->id" identifier = (cast_expression "(symbolS *)paVar4->id" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar4->id" identifier -> field_identifier))) ;)) }) (else_clause "else {\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }" else (compound_statement "{\n      if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }\n      psVar5 = (s->sy_value).X_add_symbol;\n    }" { (if_statement "if (reg_section == paVar4) {\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }" if (parenthesized_expression "(reg_section == paVar4)" ( (binary_expression "reg_section == paVar4" identifier == identifier) )) (compound_statement "{\n        paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n        goto LAB_0003b3b6;\n      }" { (expression_statement "paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;" (assignment_expression "paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym" identifier = (field_expression "(segT)((s->sy_value).X_op_symbol)->bsym" (call_expression "(segT)((s->sy_value).X_op_symbol)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "((s->sy_value).X_op_symbol)" ( (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) ))) -> field_identifier)) ;) (goto_statement "goto LAB_0003b3b6;" goto statement_identifier ;) })) (expression_statement "psVar5 = (s->sy_value).X_add_symbol;" (assignment_expression "psVar5 = (s->sy_value).X_add_symbol" identifier = (field_expression "(s->sy_value).X_add_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "pcVar3 = "Accessing `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing `%s\' as thread-local object"" identifier = (string_literal ""Accessing `%s\' as thread-local object"" " string_content escape_sequence string_content ")) ;) (goto_statement "goto LAB_0003b33c;" goto statement_identifier ;) })) (if_statement "if (((uint)s->sy_flags & 1) == 0) {\nLAB_0003b32e:\n    psVar5 = (symbolS *)paVar4->id;\n  }\n  else {\n    if (reg_section == paVar4) {\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }\n    psVar5 = (s->sy_value).X_add_symbol;\n  }" if (parenthesized_expression "(((uint)s->sy_flags & 1) == 0)" ( (binary_expression "((uint)s->sy_flags & 1) == 0" (parenthesized_expression "((uint)s->sy_flags & 1)" ( (binary_expression "(uint)s->sy_flags & 1" (cast_expression "(uint)s->sy_flags" ( (type_descriptor "uint" type_identifier) ) (field_expression "s->sy_flags" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0003b32e:\n    psVar5 = (symbolS *)paVar4->id;\n  }" { (labeled_statement "LAB_0003b32e:\n    psVar5 = (symbolS *)paVar4->id;" statement_identifier : (expression_statement "psVar5 = (symbolS *)paVar4->id;" (assignment_expression "psVar5 = (symbolS *)paVar4->id" identifier = (cast_expression "(symbolS *)paVar4->id" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar4->id" identifier -> field_identifier))) ;)) }) (else_clause "else {\n    if (reg_section == paVar4) {\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }\n    psVar5 = (s->sy_value).X_add_symbol;\n  }" else (compound_statement "{\n    if (reg_section == paVar4) {\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }\n    psVar5 = (s->sy_value).X_add_symbol;\n  }" { (if_statement "if (reg_section == paVar4) {\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }" if (parenthesized_expression "(reg_section == paVar4)" ( (binary_expression "reg_section == paVar4" identifier == identifier) )) (compound_statement "{\n      paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      goto LAB_0003b32e;\n    }" { (expression_statement "paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym;" (assignment_expression "paVar4 = (segT)((s->sy_value).X_op_symbol)->bsym" identifier = (field_expression "(segT)((s->sy_value).X_op_symbol)->bsym" (call_expression "(segT)((s->sy_value).X_op_symbol)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "((s->sy_value).X_op_symbol)" ( (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) ))) -> field_identifier)) ;) (goto_statement "goto LAB_0003b32e;" goto statement_identifier ;) })) (expression_statement "psVar5 = (s->sy_value).X_add_symbol;" (assignment_expression "psVar5 = (s->sy_value).X_add_symbol" identifier = (field_expression "(s->sy_value).X_add_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "pcVar3 = "Accessing function `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing function `%s\' as thread-local object"" identifier = (string_literal ""Accessing function `%s\' as thread-local object"" " string_content escape_sequence string_content ")) ;) (labeled_statement "LAB_0003b33c:\n  pcVar3 = (char *)dcgettext(0,pcVar3,5);" statement_identifier : (expression_statement "pcVar3 = (char *)dcgettext(0,pcVar3,5);" (assignment_expression "pcVar3 = (char *)dcgettext(0,pcVar3,5)" identifier = (cast_expression "(char *)dcgettext(0,pcVar3,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,pcVar3,5)" identifier (argument_list "(0,pcVar3,5)" ( number_literal , identifier , number_literal ))))) ;)) (expression_statement "as_bad(pcVar3,psVar5);" (call_expression "as_bad(pcVar3,psVar5)" identifier (argument_list "(pcVar3,psVar5)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0003b2b0(byte *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}\n\n" (function_definition "void FUN_0003b2b0(byte *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}" primitive_type (function_declarator "FUN_0003b2b0(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }" { (if_statement "if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" if (parenthesized_expression "(DAT_000897ec == iVar5)" ( (binary_expression "DAT_000897ec == iVar5" identifier == identifier) )) (compound_statement "{\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }" { (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" identifier = (pointer_expression "*(byte **)(param_1 + 0xc)" * (cast_expression "(byte **)(param_1 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" else (compound_statement "{\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" { (expression_statement "param_1 = (byte *)FUN_00038d80();" (assignment_expression "param_1 = (byte *)FUN_00038d80()" identifier = (cast_expression "(byte *)FUN_00038d80()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00038d80()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }))) })) (expression_statement "uVar1 = *(uint *)(iVar5 + 0x10);" (assignment_expression "uVar1 = *(uint *)(iVar5 + 0x10)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x10)" * (cast_expression "(uint *)(iVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);" (assignment_expression "uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" identifier = (pointer_expression "*(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" * (cast_expression "(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined **)(iVar5 + 0x14) + 0x14)" ( (binary_expression "*(undefined **)(iVar5 + 0x14) + 0x14" (pointer_expression "*(undefined **)(iVar5 + 0x14)" * (cast_expression "(undefined **)(iVar5 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }" if (parenthesized_expression "(((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0))" ( (binary_expression "((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)" (parenthesized_expression "((uVar2 & 0x1000) != 0)" ( (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" ( (binary_expression "uVar2 & 0x1000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar1 & 0x40000) != 0)" ( (binary_expression "(uVar1 & 0x40000) != 0" (parenthesized_expression "(uVar1 & 0x40000)" ( (binary_expression "uVar1 & 0x40000" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "*(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;" (assignment_expression "*(uint *)(iVar5 + 0x10) = uVar1 | 0x40000" (pointer_expression "*(uint *)(iVar5 + 0x10)" * (cast_expression "(uint *)(iVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) = (binary_expression "uVar1 | 0x40000" identifier | number_literal)) ;) (if_statement "if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" if (parenthesized_expression "((uVar1 & 8) == 0)" ( (binary_expression "(uVar1 & 8) == 0" (parenthesized_expression "(uVar1 & 8)" ( (binary_expression "uVar1 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" { (if_statement "if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }" if (parenthesized_expression "(*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0)" ( (binary_expression "*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0" (pointer_expression "*(undefined **)(iVar5 + 0x14)" * (cast_expression "(undefined **)(iVar5 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) == (binary_expression "PTR__bfd_std_section_0007ffb0 + 0xc0" identifier + number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((uVar2 & 0x400) != 0) {\n      return;\n    }" if (parenthesized_expression "((uVar2 & 0x400) != 0)" ( (binary_expression "(uVar2 & 0x400) != 0" (parenthesized_expression "(uVar2 & 0x400)" ( (binary_expression "uVar2 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" if (parenthesized_expression "((*param_1 & 1) == 0)" ( (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }" { (labeled_statement "LAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);" statement_identifier : (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" else (compound_statement "{\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" { (if_statement "if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }" if (parenthesized_expression "(DAT_000897ec == iVar5)" ( (binary_expression "DAT_000897ec == iVar5" identifier == identifier) )) (compound_statement "{\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }" { (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_0003b3b6;" goto statement_identifier ;) })) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 8);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar3 = "Accessing `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing `%s\' as thread-local object"" identifier = (string_literal ""Accessing `%s\' as thread-local object"" " string_content escape_sequence string_content ")) ;) (goto_statement "goto LAB_0003b33c;" goto statement_identifier ;) })) (if_statement "if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" if (parenthesized_expression "((*param_1 & 1) == 0)" ( (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }" { (labeled_statement "LAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);" statement_identifier : (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" else (compound_statement "{\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" { (if_statement "if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }" if (parenthesized_expression "(DAT_000897ec == iVar5)" ( (binary_expression "DAT_000897ec == iVar5" identifier == identifier) )) (compound_statement "{\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }" { (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_0003b32e;" goto statement_identifier ;) })) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 8);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar3 = "Accessing function `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing function `%s\' as thread-local object"" identifier = (string_literal ""Accessing function `%s\' as thread-local object"" " string_content escape_sequence string_content ")) ;) (labeled_statement "LAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);" statement_identifier : (expression_statement "uVar4 = dcgettext(0,pcVar3,5);" (assignment_expression "uVar4 = dcgettext(0,pcVar3,5)" identifier = (call_expression "dcgettext(0,pcVar3,5)" identifier (argument_list "(0,pcVar3,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "FUN_0002bd60(uVar4,uVar6);" (call_expression "FUN_0002bd60(uVar4,uVar6)" identifier (argument_list "(uVar4,uVar6)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression IDENT + LIT)) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (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) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) ))))) ;) (goto_statement goto 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 = (string_literal " string_content escape_sequence string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (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) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) ))))) ;) (goto_statement goto 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 = (string_literal " string_content escape_sequence string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , LIT )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0003b2b0(byte *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0003b2b0(byte *param_1)" (identifier "FUN_0003b2b0") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  \n  iVar5 = *(int *)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }\n  uVar1 = *(uint *)(iVar5 + 0x10);\n  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);\n  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }\n  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;\n  if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }\n  if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }\n  pcVar3 = "Accessing function `%s\' as thread-local object";\nLAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);\n  FUN_0002bd60(uVar4,uVar6);\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }" (if "if") (parenthesized_expression "((*param_1 & 1) != 0)" (( "(") (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" (( "(") (binary_expression "*param_1 & 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }\n  }" ({ "{") (if_statement "if (DAT_000897ec == iVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" (if "if") (parenthesized_expression "(DAT_000897ec == iVar5)" (( "(") (binary_expression "DAT_000897ec == iVar5" (identifier "DAT_000897ec") (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n      param_1 = *(byte **)(param_1 + 0xc);\n      iVar5 = *(int *)(param_1 + 4);\n    }" ({ "{") (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" (identifier "param_1") (= "=") (pointer_expression "*(byte **)(param_1 + 0xc)" (* "*") (cast_expression "(byte **)(param_1 + 0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" (else "else") (compound_statement "{\n      param_1 = (byte *)FUN_00038d80();\n      iVar5 = *(int *)(param_1 + 4);\n    }" ({ "{") (expression_statement "param_1 = (byte *)FUN_00038d80();" (assignment_expression "param_1 = (byte *)FUN_00038d80()" (identifier "param_1") (= "=") (cast_expression "(byte *)FUN_00038d80()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00038d80()" (identifier "FUN_00038d80") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar1 = *(uint *)(iVar5 + 0x10);" (assignment_expression "uVar1 = *(uint *)(iVar5 + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x10)" (* "*") (cast_expression "(uint *)(iVar5 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);" (assignment_expression "uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" (* "*") (cast_expression "(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(undefined **)(iVar5 + 0x14) + 0x14)" (( "(") (binary_expression "*(undefined **)(iVar5 + 0x14) + 0x14" (pointer_expression "*(undefined **)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined **)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {\n    return;\n  }" (if "if") (parenthesized_expression "(((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0))" (( "(") (binary_expression "((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)" (parenthesized_expression "((uVar2 & 0x1000) != 0)" (( "(") (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" (( "(") (binary_expression "uVar2 & 0x1000" (identifier "uVar2") (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar1 & 0x40000) != 0)" (( "(") (binary_expression "(uVar1 & 0x40000) != 0" (parenthesized_expression "(uVar1 & 0x40000)" (( "(") (binary_expression "uVar1 & 0x40000" (identifier "uVar1") (& "&") (number_literal "0x40000")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;" (assignment_expression "*(uint *)(iVar5 + 0x10) = uVar1 | 0x40000" (pointer_expression "*(uint *)(iVar5 + 0x10)" (* "*") (cast_expression "(uint *)(iVar5 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "uVar1 | 0x40000" (identifier "uVar1") (| "|") (number_literal "0x40000"))) (; ";")) (if_statement "if ((uVar1 & 8) == 0) {\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" (if "if") (parenthesized_expression "((uVar1 & 8) == 0)" (( "(") (binary_expression "(uVar1 & 8) == 0" (parenthesized_expression "(uVar1 & 8)" (( "(") (binary_expression "uVar1 & 8" (identifier "uVar1") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }\n    if ((uVar2 & 0x400) != 0) {\n      return;\n    }\n    if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }\n    pcVar3 = "Accessing `%s\' as thread-local object";\n    goto LAB_0003b33c;\n  }" ({ "{") (if_statement "if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {\n      return;\n    }" (if "if") (parenthesized_expression "(*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0)" (( "(") (binary_expression "*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0" (pointer_expression "*(undefined **)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined **)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (binary_expression "PTR__bfd_std_section_0007ffb0 + 0xc0" (identifier "PTR__bfd_std_section_0007ffb0") (+ "+") (number_literal "0xc0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((uVar2 & 0x400) != 0) {\n      return;\n    }" (if "if") (parenthesized_expression "((uVar2 & 0x400) != 0)" (( "(") (binary_expression "(uVar2 & 0x400) != 0" (parenthesized_expression "(uVar2 & 0x400)" (( "(") (binary_expression "uVar2 & 0x400" (identifier "uVar2") (& "&") (number_literal "0x400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((*param_1 & 1) == 0) {\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }\n    else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" (if "if") (parenthesized_expression "((*param_1 & 1) == 0)" (( "(") (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" (( "(") (binary_expression "*param_1 & 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);\n    }" ({ "{") (labeled_statement "LAB_0003b3b6:\n      uVar6 = *(undefined4 *)(iVar5 + 4);" (statement_identifier "LAB_0003b3b6") (: ":") (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" (else "else") (compound_statement "{\n      if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }\n      uVar6 = *(undefined4 *)(param_1 + 8);\n    }" ({ "{") (if_statement "if (DAT_000897ec == iVar5) {\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }" (if "if") (parenthesized_expression "(DAT_000897ec == iVar5)" (( "(") (binary_expression "DAT_000897ec == iVar5" (identifier "DAT_000897ec") (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n        goto LAB_0003b3b6;\n      }" ({ "{") (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto LAB_0003b3b6;" (goto "goto") (statement_identifier "LAB_0003b3b6") (; ";")) (} "}"))) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 8);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 8)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar3 = "Accessing `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing `%s\' as thread-local object"" (identifier "pcVar3") (= "=") (string_literal ""Accessing `%s\' as thread-local object"" (" """) (string_content "Accessing `%s") (escape_sequence "\'") (string_content " as thread-local object") (" """))) (; ";")) (goto_statement "goto LAB_0003b33c;" (goto "goto") (statement_identifier "LAB_0003b33c") (; ";")) (} "}"))) (if_statement "if ((*param_1 & 1) == 0) {\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }\n  else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" (if "if") (parenthesized_expression "((*param_1 & 1) == 0)" (( "(") (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" (( "(") (binary_expression "*param_1 & 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);\n  }" ({ "{") (labeled_statement "LAB_0003b32e:\n    uVar6 = *(undefined4 *)(iVar5 + 4);" (statement_identifier "LAB_0003b32e") (: ":") (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" (else "else") (compound_statement "{\n    if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 8);\n  }" ({ "{") (if_statement "if (DAT_000897ec == iVar5) {\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }" (if "if") (parenthesized_expression "(DAT_000897ec == iVar5)" (( "(") (binary_expression "DAT_000897ec == iVar5" (identifier "DAT_000897ec") (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);\n      goto LAB_0003b32e;\n    }" ({ "{") (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto LAB_0003b32e;" (goto "goto") (statement_identifier "LAB_0003b32e") (; ";")) (} "}"))) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 8);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 8)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar3 = "Accessing function `%s\' as thread-local object";" (assignment_expression "pcVar3 = "Accessing function `%s\' as thread-local object"" (identifier "pcVar3") (= "=") (string_literal ""Accessing function `%s\' as thread-local object"" (" """) (string_content "Accessing function `%s") (escape_sequence "\'") (string_content " as thread-local object") (" """))) (; ";")) (labeled_statement "LAB_0003b33c:\n  uVar4 = dcgettext(0,pcVar3,5);" (statement_identifier "LAB_0003b33c") (: ":") (expression_statement "uVar4 = dcgettext(0,pcVar3,5);" (assignment_expression "uVar4 = dcgettext(0,pcVar3,5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,pcVar3,5)" (identifier "dcgettext") (argument_list "(0,pcVar3,5)" (( "(") (number_literal "0") (, ",") (identifier "pcVar3") (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "FUN_0002bd60(uVar4,uVar6);" (call_expression "FUN_0002bd60(uVar4,uVar6)" (identifier "FUN_0002bd60") (argument_list "(uVar4,uVar6)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar6") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(type_1 *s)

{
  type_2 *pbVar1;
  type_3 var_4;
  char *pcVar3;
  type_4 var_2;
  type_1 *psVar5;
  
  var_2 = (type_4)s->bsym;
  if (((type_3)s->sy_flags & 1) != 0) {
    if (var_1 == var_2) {
      s = (s->sy_value).X_op_symbol;
      var_2 = (type_4)s->bsym;
    }
    else {
      s = var_3((type_5 *)s);
      var_2 = (type_4)s->bsym;
    }
  }
  pbVar1 = var_2->prev;
  var_4 = *(type_3 *)((type_6 *)var_2->flags + 0x14);
  if (((var_4 & 0x1000) != 0) && (((type_3)pbVar1 & 0x40000) != 0)) {
    return;
  }
  var_2->prev = (type_2 *)((type_3)pbVar1 | 0x40000);
  if (((type_3)pbVar1 & 8) == 0) {
    if ((type_6 *)var_2->flags == var_5 + 0xc0) {
      return;
    }
    if ((var_4 & 0x400) != 0) {
      return;
    }
    if (((type_3)s->sy_flags & 1) == 0) {
LAB_0003b3b6:
      psVar5 = (type_1 *)var_2->id;
    }
    else {
      if (var_1 == var_2) {
        var_2 = (type_4)((s->sy_value).X_op_symbol)->bsym;
        goto LAB_0003b3b6;
      }
      psVar5 = (s->sy_value).X_add_symbol;
    }
    pcVar3 = "Accessing `%s\' as thread-local object";
    goto LAB_0003b33c;
  }
  if (((type_3)s->sy_flags & 1) == 0) {
LAB_0003b32e:
    psVar5 = (type_1 *)var_2->id;
  }
  else {
    if (var_1 == var_2) {
      var_2 = (type_4)((s->sy_value).X_op_symbol)->bsym;
      goto LAB_0003b32e;
    }
    psVar5 = (s->sy_value).X_add_symbol;
  }
  pcVar3 = "Accessing function `%s\' as thread-local object";
LAB_0003b33c:
  pcVar3 = (char *)var_6(0,pcVar3,5);
  var_7(pcVar3,psVar5);
  return;
}


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

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

void MASKED(byte *param_1)

{
  uint uVar1;
  uint uVar2;
  char *pcVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 uVar6;
  
  iVar5 = *(int *)(param_1 + 4);
  if ((*param_1 & 1) != 0) {
    if (DAT_000897ec == iVar5) {
      param_1 = *(byte **)(param_1 + 0xc);
      iVar5 = *(int *)(param_1 + 4);
    }
    else {
      param_1 = (byte *)FUN_00038d80();
      iVar5 = *(int *)(param_1 + 4);
    }
  }
  uVar1 = *(uint *)(iVar5 + 0x10);
  uVar2 = *(uint *)(*(undefined **)(iVar5 + 0x14) + 0x14);
  if (((uVar2 & 0x1000) != 0) && ((uVar1 & 0x40000) != 0)) {
    return;
  }
  *(uint *)(iVar5 + 0x10) = uVar1 | 0x40000;
  if ((uVar1 & 8) == 0) {
    if (*(undefined **)(iVar5 + 0x14) == PTR__bfd_std_section_0007ffb0 + 0xc0) {
      return;
    }
    if ((uVar2 & 0x400) != 0) {
      return;
    }
    if ((*param_1 & 1) == 0) {
LAB_0003b3b6:
      uVar6 = *(undefined4 *)(iVar5 + 4);
    }
    else {
      if (DAT_000897ec == iVar5) {
        iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);
        goto LAB_0003b3b6;
      }
      uVar6 = *(undefined4 *)(param_1 + 8);
    }
    pcVar3 = "Accessing `%s\' as thread-local object";
    goto LAB_0003b33c;
  }
  if ((*param_1 & 1) == 0) {
LAB_0003b32e:
    uVar6 = *(undefined4 *)(iVar5 + 4);
  }
  else {
    if (DAT_000897ec == iVar5) {
      iVar5 = *(int *)(*(int *)(param_1 + 0xc) + 4);
      goto LAB_0003b32e;
    }
    uVar6 = *(undefined4 *)(param_1 + 8);
  }
  pcVar3 = "Accessing function `%s\' as thread-local object";
LAB_0003b33c:
  uVar4 = dcgettext(0,pcVar3,5);
  FUN_0002bd60(uVar4,uVar6);
  return;
}

