
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: bool needs_dynamic_reloc(Symbol * this, int flags) */

bool __thiscall gold::Symbol::needs_dynamic_reloc(Symbol *this,int flags)

{
  int iVar1;
  int iVar2;
  bool bVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  uint uVar7;
  int unaff_EDI;
  Parameters *in_stack_ffffffd4;
  Parameters *in_stack_ffffffd8;
  
  __x86_get_pc_thunk_di();
  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);
  if (*(byte *)(iVar1 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    Parameters::doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);
  }
  if (*(char *)(iVar1 + 0x11) != '\0') {
    return false;
  }
  bVar5 = this->field_0x2a & 7;
  if ((this->field_0x2a & 7) == 0) {
    uVar7 = (this->u2_).shndx;
    bVar6 = (byte)this->field_0x2b >> 5;
    bVar4 = bVar6 & 1;
    if ((uVar7 == 0) && ((bVar6 & 1) != 0)) {
LAB_000a7c47:
      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;
      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {
        return false;
      }
      if (bVar5 != 0) goto LAB_000a7c66;
      uVar7 = (this->u2_).shndx;
      bVar4 = (byte)this->field_0x2b >> 5 & 1;
    }
    if (uVar7 == 0xfff1 && bVar4 == 0) {
      return false;
    }
  }
  else {
    if (bVar5 == 4) goto LAB_000a7c47;
LAB_000a7c66:
    if (bVar5 == 3) {
      return false;
    }
  }
  if ((flags & 1U) != 0) {
    iVar2 = *(int *)(iVar1 + 8);
    if (iVar2 == 0) goto LAB_000a7d5b;
    if (*(char *)(iVar2 + 0x1a25) != '\0') {
      return (bool)*(char *)(iVar2 + 0x1a25);
    }
    if (*(char *)(iVar2 + 0x2931) != '\0') {
      return (bool)*(char *)(iVar2 + 0x2931);
    }
  }
  if (((flags & 8U) == 0) || (bVar4 = 0, this->plt_offset_ == 0xffffffff)) {
    if ((flags & 0x10U) == 0) {
      iVar2 = *(int *)(iVar1 + 8);
      if (iVar2 == 0) {
LAB_000a7d5b:
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);
      }
      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&
         (this->plt_offset_ != 0xffffffff)) {
        return false;
      }
    }
    if (bVar5 == 0) {
      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].
                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                        _M_impl._M_end_of_storage;
      bVar4 = bVar5 & 1;
      if (((bVar5 & 1) == 0) &&
         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))
      goto LAB_000a7cb0;
    }
    else {
      bVar4 = *(byte *)(iVar1 + 0x10);
      if (bVar5 != 4) {
LAB_000a7cb0:
        bVar3 = is_preemptible(this);
        return bVar3;
      }
    }
  }
  return (bool)bVar4;
}



uint FUN_000a7b80(int param_1,uint param_2)

{
  int iVar1;
  byte bVar2;
  uint uVar3;
  byte bVar4;
  byte bVar5;
  int iVar6;
  int unaff_EDI;
  
  FUN_000b484e();
  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);
  if (*(byte *)(iVar1 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00052720();
  }
  uVar3 = (uint)*(byte *)(iVar1 + 0x11);
  if (*(byte *)(iVar1 + 0x11) != 0) {
    return 0;
  }
  bVar4 = *(byte *)(param_1 + 0x2a) & 7;
  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {
    iVar6 = *(int *)(param_1 + 0xc);
    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;
    bVar2 = bVar5 & 1;
    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {
LAB_000a7c47:
      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;
      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {
        return 0;
      }
      if (bVar4 != 0) goto LAB_000a7c66;
      iVar6 = *(int *)(param_1 + 0xc);
      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;
    }
    if (iVar6 == 0xfff1 && bVar2 == 0) {
      return 0;
    }
  }
  else {
    if (bVar4 == 4) goto LAB_000a7c47;
LAB_000a7c66:
    if (bVar4 == 3) {
      return uVar3;
    }
  }
  if ((param_2 & 1) != 0) {
    iVar6 = *(int *)(iVar1 + 8);
    if (iVar6 == 0) goto LAB_000a7d5b;
    if (*(byte *)(iVar6 + 0x1a25) != 0) {
      return (uint)*(byte *)(iVar6 + 0x1a25);
    }
    if (*(byte *)(iVar6 + 0x2931) != 0) {
      return (uint)*(byte *)(iVar6 + 0x2931);
    }
  }
  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {
    if ((param_2 & 0x10) == 0) {
      iVar6 = *(int *)(iVar1 + 8);
      if (iVar6 == 0) {
LAB_000a7d5b:
                    /* WARNING: Subroutine does not return */
        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);
      }
      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&
         (*(int *)(param_1 + 0x18) != -1)) {
        return (uint)*(byte *)(iVar6 + 0x2931);
      }
    }
    if (bVar4 == 0) {
      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);
      uVar3 = bVar4 & 1;
      if (((bVar4 & 1) == 0) &&
         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4
         , bVar4 == 0)) goto LAB_000a7cb0;
    }
    else {
      uVar3 = (uint)*(byte *)(iVar1 + 0x10);
      if (bVar4 != 4) {
LAB_000a7cb0:
        uVar3 = FUN_000a7920();
        return uVar3;
      }
    }
  }
  return uVar3;
}


PUSH EBP
PUSH EDI
CALL 0x000b484e
ADD EDI,0x36c479
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV ECX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x34]
LEA EAX,[EDI + 0x4e8]
MOV EDX,dword ptr [EAX]
MOVZX EAX,byte ptr [EDX + 0x10]
MOV byte ptr [ESP + 0xb],AL
TEST AL,AL
JZ 0x000a7d56
MOVZX EAX,byte ptr [EDX + 0x11]
TEST AL,AL
JNZ 0x000a7cc0
MOVZX EBX,byte ptr [ECX + 0x2a]
AND EBX,0x7
MOV byte ptr [ESP + 0xa],BL
JNZ 0x000a7c40
MOVZX EBX,byte ptr [ECX + 0x2b]
MOV EBP,dword ptr [ECX + 0xc]
SHR BL,0x5
AND EBX,0x1
MOV byte ptr [ESP + 0xc],BL
TEST EBP,EBP
JNZ 0x000a7be4
TEST BL,BL
JNZ 0x000a7c47
CMP EBP,0xfff1
SETNZ BL
OR BL,byte ptr [ESP + 0xc]
JZ 0x000a7cc0
TEST ESI,0x1
JZ 0x000a7c78
MOV EBX,dword ptr [EDX + 0x8]
TEST EBX,EBX
JZ 0x000a7d5b
MOVZX EBP,byte ptr [EBX + 0x1a25]
MOV dword ptr [ESP + 0xc],EBX
MOV EBX,EBP
TEST BL,BL
JNZ 0x000a7ce0
MOV EBX,dword ptr [ESP + 0xc]
MOVZX EBX,byte ptr [EBX + 0x2931]
TEST BL,BL
JZ 0x000a7c78
MOV EAX,EBX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [ESP + 0xa],0x4
JNZ 0x000a7c66
MOV EBX,dword ptr [EDX + 0x8]
TEST EBX,EBX
JZ 0x000a7d5b
CMP byte ptr [EBX + 0x1a25],0x0
JZ 0x000a7cc0
CMP byte ptr [ESP + 0xa],0x0
JZ 0x000a7d40
CMP byte ptr [ESP + 0xa],0x3
JNZ 0x000a7bf7
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST ESI,0x8
JNZ 0x000a7cd0
AND ESI,0x10
JNZ 0x000a7c9d
MOV EAX,dword ptr [EDX + 0x8]
TEST EAX,EAX
JZ 0x000a7d5b
CMP byte ptr [EAX + 0x1a25],0x0
JZ 0x000a7d20
CMP byte ptr [ESP + 0xa],0x0
JZ 0x000a7cf0
CMP byte ptr [ESP + 0xa],0x4
MOVZX EAX,byte ptr [ESP + 0xb]
JZ 0x000a7c30
MOV dword ptr [ESP + 0x30],ECX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x000a7920
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP dword ptr [ECX + 0x18],-0x1
JNZ 0x000a7c30
JMP 0x000a7c80
MOV EAX,EBP
JMP 0x000a7c30
MOV EAX,dword ptr [ECX + 0x8]
MOVZX EAX,byte ptr [EAX + 0x2c]
AND EAX,0x1
JNZ 0x000a7c30
MOV EAX,dword ptr [ECX + 0xc]
TEST EAX,EAX
MOVZX EAX,byte ptr [ECX + 0x2b]
SETZ DL
SHR AL,0x5
AND AL,DL
JZ 0x000a7cb0
JMP 0x000a7c30
MOVZX EAX,byte ptr [EAX + 0x2931]
TEST AL,AL
JNZ 0x000a7c9d
CMP dword ptr [ECX + 0x18],-0x1
JNZ 0x000a7c30
JMP 0x000a7c9d
MOVZX EBX,byte ptr [ECX + 0x2b]
MOV EBP,dword ptr [ECX + 0xc]
SHR BL,0x5
AND EBX,0x1
MOV byte ptr [ESP + 0xc],BL
JMP 0x000a7be4
CALL 0x00052720
LEA EAX,[EDI + 0xffee23a8]
PUSH EDX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffece26d]
PUSH 0x5c
PUSH EAX
CALL 0x000da200
(translation_unit "uint FUN_000a7b80(int param_1,uint param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "uint FUN_000a7b80(int param_1,uint param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_000a7b80(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_000b484e();" (call_expression "FUN_000b484e()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);" (assignment_expression "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" identifier = (pointer_expression "*(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" * (cast_expression "(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" ( (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI + 100" (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00052720();\n  }" if (parenthesized_expression "(*(byte *)(iVar1 + 0x10) == 0)" ( (binary_expression "*(byte *)(iVar1 + 0x10) == 0" (pointer_expression "*(byte *)(iVar1 + 0x10)" * (cast_expression "(byte *)(iVar1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00052720();\n  }" { comment (expression_statement "FUN_00052720();" (call_expression "FUN_00052720()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar3 = (uint)*(byte *)(iVar1 + 0x11);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar1 + 0x11)" identifier = (binary_expression "(uint)*(byte *)(iVar1 + 0x11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar1 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x11)" ( (binary_expression "iVar1 + 0x11" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }" if (parenthesized_expression "(*(byte *)(iVar1 + 0x11) != 0)" ( (binary_expression "*(byte *)(iVar1 + 0x11) != 0" (pointer_expression "*(byte *)(iVar1 + 0x11)" * (cast_expression "(byte *)(iVar1 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x11)" ( (binary_expression "iVar1 + 0x11" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar4 = *(byte *)(param_1 + 0x2a) & 7;" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x2a) & 7" identifier = (binary_expression "*(byte *)(param_1 + 0x2a) & 7" (pointer_expression "*(byte *)(param_1 + 0x2a)" * (cast_expression "(byte *)(param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a)" ( (binary_expression "param_1 + 0x2a" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)(param_1 + 0x2a) & 7" (pointer_expression "*(byte *)(param_1 + 0x2a)" * (cast_expression "(byte *)(param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a)" ( (binary_expression "param_1 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "iVar6 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar6 = *(int *)(param_1 + 0xc)" identifier = (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) ))))) ;) (expression_statement "bVar5 = *(byte *)(param_1 + 0x2b) >> 5;" (assignment_expression "bVar5 = *(byte *)(param_1 + 0x2b) >> 5" identifier = (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" * (cast_expression "(byte *)(param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "bVar2 = bVar5 & 1;" (assignment_expression "bVar2 = bVar5 & 1" identifier = (binary_expression "bVar5 & 1" identifier & number_literal)) ;) (if_statement "if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }" if (parenthesized_expression "((iVar6 == 0) && ((bVar5 & 1) != 0))" ( (binary_expression "(iVar6 == 0) && ((bVar5 & 1) != 0)" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "((bVar5 & 1) != 0)" ( (binary_expression "(bVar5 & 1) != 0" (parenthesized_expression "(bVar5 & 1)" ( (binary_expression "bVar5 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }" { (labeled_statement "LAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" statement_identifier : (if_statement "if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" if (parenthesized_expression "(*(int *)(iVar1 + 8) == 0)" ( (binary_expression "*(int *)(iVar1 + 8) == 0" (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000a7d5b;" goto statement_identifier ;))) (if_statement "if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25)" * (cast_expression "(char *)(*(int *)(iVar1 + 8) + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 8) + 0x1a25)" ( (binary_expression "*(int *)(iVar1 + 8) + 0x1a25" (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (bVar4 != 0) goto LAB_000a7c66;" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a7c66;" goto statement_identifier ;)) (expression_statement "iVar6 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar6 = *(int *)(param_1 + 0xc)" identifier = (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) ))))) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1" identifier = (binary_expression "*(byte *)(param_1 + 0x2b) >> 5 & 1" (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" * (cast_expression "(byte *)(param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) })) (if_statement "if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar6 == 0xfff1 && bVar2 == 0)" ( (binary_expression "iVar6 == 0xfff1 && bVar2 == 0" (binary_expression "iVar6 == 0xfff1" identifier == number_literal) && (binary_expression "bVar2 == 0" identifier == number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" else (compound_statement "{\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" { (if_statement "if (bVar4 == 4) goto LAB_000a7c47;" if (parenthesized_expression "(bVar4 == 4)" ( (binary_expression "bVar4 == 4" identifier == number_literal) )) (goto_statement "goto LAB_000a7c47;" goto statement_identifier ;)) (labeled_statement "LAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }" statement_identifier : (if_statement "if (bVar4 == 3) {\n      return uVar3;\n    }" if (parenthesized_expression "(bVar4 == 3)" ( (binary_expression "bVar4 == 3" identifier == number_literal) )) (compound_statement "{\n      return uVar3;\n    }" { (return_statement "return uVar3;" return identifier ;) }))) }))) (if_statement "if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }" if (parenthesized_expression "((param_2 & 1) != 0)" ( (binary_expression "(param_2 & 1) != 0" (parenthesized_expression "(param_2 & 1)" ( (binary_expression "param_2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }" { (expression_statement "iVar6 = *(int *)(iVar1 + 8);" (assignment_expression "iVar6 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) goto LAB_000a7d5b;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a7d5b;" goto statement_identifier ;)) (if_statement "if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }" if (parenthesized_expression "(*(byte *)(iVar6 + 0x1a25) != 0)" ( (binary_expression "*(byte *)(iVar6 + 0x1a25) != 0" (pointer_expression "*(byte *)(iVar6 + 0x1a25)" * (cast_expression "(byte *)(iVar6 + 0x1a25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1a25)" ( (binary_expression "iVar6 + 0x1a25" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }" { (return_statement "return (uint)*(byte *)(iVar6 + 0x1a25);" return (binary_expression "(uint)*(byte *)(iVar6 + 0x1a25)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + 0x1a25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1a25)" ( (binary_expression "iVar6 + 0x1a25" identifier + number_literal) )))) ;) })) (if_statement "if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }" if (parenthesized_expression "(*(byte *)(iVar6 + 0x2931) != 0)" ( (binary_expression "*(byte *)(iVar6 + 0x2931) != 0" (pointer_expression "*(byte *)(iVar6 + 0x2931)" * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }" { (return_statement "return (uint)*(byte *)(iVar6 + 0x2931);" return (binary_expression "(uint)*(byte *)(iVar6 + 0x2931)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) ;) })) })) (if_statement "if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }" if (parenthesized_expression "(((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1))" ( (binary_expression "((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)" (parenthesized_expression "((param_2 & 8) == 0)" ( (binary_expression "(param_2 & 8) == 0" (parenthesized_expression "(param_2 & 8)" ( (binary_expression "param_2 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x18) == -1)" ( (binary_expression "*(int *)(param_1 + 0x18) == -1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }" { (if_statement "if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }" if (parenthesized_expression "((param_2 & 0x10) == 0)" ( (binary_expression "(param_2 & 0x10) == 0" (parenthesized_expression "(param_2 & 0x10)" ( (binary_expression "param_2 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }" { (expression_statement "iVar6 = *(int *)(iVar1 + 8);" (assignment_expression "iVar6 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }" { (labeled_statement "LAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);" statement_identifier : comment (expression_statement "FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);" (call_expression "FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1)" identifier (argument_list "(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1)" ( (binary_expression "&UNK_0023a6e6 + unaff_EDI" (pointer_expression "&UNK_0023a6e6" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x24e821" identifier + number_literal) , identifier ))) ;)) })) (if_statement "if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }" if (parenthesized_expression "(((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1))" ( (binary_expression "((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)" (parenthesized_expression "((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0))" ( (binary_expression "(*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)" (parenthesized_expression "(*(char *)(iVar6 + 0x1a25) == '\0')" ( (binary_expression "*(char *)(iVar6 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar6 + 0x1a25)" * (cast_expression "(char *)(iVar6 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1a25)" ( (binary_expression "iVar6 + 0x1a25" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(byte *)(iVar6 + 0x2931) == 0)" ( (binary_expression "*(byte *)(iVar6 + 0x2931) == 0" (pointer_expression "*(byte *)(iVar6 + 0x2931)" * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0x18) != -1)" ( (binary_expression "*(int *)(param_1 + 0x18) != -1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }" { (return_statement "return (uint)*(byte *)(iVar6 + 0x2931);" return (binary_expression "(uint)*(byte *)(iVar6 + 0x2931)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) ;) })) })) (if_statement "if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" if (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }" { (expression_statement "bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);" (assignment_expression "bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c)" identifier = (pointer_expression "*(byte *)(*(int *)(param_1 + 8) + 0x2c)" * (cast_expression "(byte *)(*(int *)(param_1 + 8) + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 8) + 0x2c" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar3 = bVar4 & 1;" (assignment_expression "uVar3 = bVar4 & 1" identifier = (binary_expression "bVar4 & 1" identifier & number_literal)) ;) (if_statement "if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;" if (parenthesized_expression "(((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0))" ( (binary_expression "((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)" (parenthesized_expression "((bVar4 & 1) == 0)" ( (binary_expression "(bVar4 & 1) == 0" (parenthesized_expression "(bVar4 & 1)" ( (binary_expression "bVar4 & 1" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)" ( (comma_expression "bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0" identifier = (binary_expression "*(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0" (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" * (cast_expression "(byte *)(param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) >> number_literal) & (binary_expression "*(int *)(param_1 + 0xc) == 0" (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))) , (comma_expression "uVar3 = (uint)bVar4\n         , bVar4 == 0" (assignment_expression "uVar3 = (uint)bVar4" identifier = (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) , (binary_expression "bVar4 == 0" identifier == number_literal))) ))) )) (goto_statement "goto LAB_000a7cb0;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" else (compound_statement "{\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" { (expression_statement "uVar3 = (uint)*(byte *)(iVar1 + 0x10);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar1 + 0x10)" identifier = (binary_expression "(uint)*(byte *)(iVar1 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }" if (parenthesized_expression "(bVar4 != 4)" ( (binary_expression "bVar4 != 4" identifier != number_literal) )) (compound_statement "{\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }" { (labeled_statement "LAB_000a7cb0:\n        uVar3 = FUN_000a7920();" statement_identifier : (expression_statement "uVar3 = FUN_000a7920();" (assignment_expression "uVar3 = FUN_000a7920()" identifier = (call_expression "FUN_000a7920()" identifier (argument_list "()" ( )))) ;)) (return_statement "return uVar3;" return identifier ;) })) }))) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: bool needs_dynamic_reloc(Symbol * this, int flags) */\n\nbool __thiscall gold::Symbol::needs_dynamic_reloc(Symbol *this,int flags)\n\n{\n  int iVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte bVar6;\n  uint uVar7;\n  int unaff_EDI;\n  Parameters *in_stack_ffffffd4;\n  Parameters *in_stack_ffffffd8;\n  \n  __x86_get_pc_thunk_di();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    Parameters::doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);\n  }\n  if (*(char *)(iVar1 + 0x11) != '\0') {\n    return false;\n  }\n  bVar5 = this->field_0x2a & 7;\n  if ((this->field_0x2a & 7) == 0) {\n    uVar7 = (this->u2_).shndx;\n    bVar6 = (byte)this->field_0x2b >> 5;\n    bVar4 = bVar6 & 1;\n    if ((uVar7 == 0) && ((bVar6 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }\n      if (bVar5 != 0) goto LAB_000a7c66;\n      uVar7 = (this->u2_).shndx;\n      bVar4 = (byte)this->field_0x2b >> 5 & 1;\n    }\n    if (uVar7 == 0xfff1 && bVar4 == 0) {\n      return false;\n    }\n  }\n  else {\n    if (bVar5 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar5 == 3) {\n      return false;\n    }\n  }\n  if ((flags & 1U) != 0) {\n    iVar2 = *(int *)(iVar1 + 8);\n    if (iVar2 == 0) goto LAB_000a7d5b;\n    if (*(char *)(iVar2 + 0x1a25) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x1a25);\n    }\n    if (*(char *)(iVar2 + 0x2931) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x2931);\n    }\n  }\n  if (((flags & 8U) == 0) || (bVar4 = 0, this->plt_offset_ == 0xffffffff)) {\n    if ((flags & 0x10U) == 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }\n      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }\n    }\n    if (bVar5 == 0) {\n      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      bVar4 = bVar5 & 1;\n      if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;\n    }\n    else {\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }\n  }\n  return (bool)bVar4;\n}\n\n" comment comment comment (function_definition "bool __thiscall gold::Symbol::needs_dynamic_reloc(Symbol *this,int flags)\n\n{\n  int iVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte bVar6;\n  uint uVar7;\n  int unaff_EDI;\n  Parameters *in_stack_ffffffd4;\n  Parameters *in_stack_ffffffd8;\n  \n  __x86_get_pc_thunk_di();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    Parameters::doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);\n  }\n  if (*(char *)(iVar1 + 0x11) != '\0') {\n    return false;\n  }\n  bVar5 = this->field_0x2a & 7;\n  if ((this->field_0x2a & 7) == 0) {\n    uVar7 = (this->u2_).shndx;\n    bVar6 = (byte)this->field_0x2b >> 5;\n    bVar4 = bVar6 & 1;\n    if ((uVar7 == 0) && ((bVar6 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }\n      if (bVar5 != 0) goto LAB_000a7c66;\n      uVar7 = (this->u2_).shndx;\n      bVar4 = (byte)this->field_0x2b >> 5 & 1;\n    }\n    if (uVar7 == 0xfff1 && bVar4 == 0) {\n      return false;\n    }\n  }\n  else {\n    if (bVar5 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar5 == 3) {\n      return false;\n    }\n  }\n  if ((flags & 1U) != 0) {\n    iVar2 = *(int *)(iVar1 + 8);\n    if (iVar2 == 0) goto LAB_000a7d5b;\n    if (*(char *)(iVar2 + 0x1a25) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x1a25);\n    }\n    if (*(char *)(iVar2 + 0x2931) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x2931);\n    }\n  }\n  if (((flags & 8U) == 0) || (bVar4 = 0, this->plt_offset_ == 0xffffffff)) {\n    if ((flags & 0x10U) == 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }\n      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }\n    }\n    if (bVar5 == 0) {\n      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      bVar4 = bVar5 & 1;\n      if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;\n    }\n    else {\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }\n  }\n  return (bool)bVar4;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol::" identifier : : identifier : :) (function_declarator "needs_dynamic_reloc(Symbol *this,int flags)" identifier (parameter_list "(Symbol *this,int flags)" ( (parameter_declaration "Symbol *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "int flags" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  byte bVar5;\n  byte bVar6;\n  uint uVar7;\n  int unaff_EDI;\n  Parameters *in_stack_ffffffd4;\n  Parameters *in_stack_ffffffd8;\n  \n  __x86_get_pc_thunk_di();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    Parameters::doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);\n  }\n  if (*(char *)(iVar1 + 0x11) != '\0') {\n    return false;\n  }\n  bVar5 = this->field_0x2a & 7;\n  if ((this->field_0x2a & 7) == 0) {\n    uVar7 = (this->u2_).shndx;\n    bVar6 = (byte)this->field_0x2b >> 5;\n    bVar4 = bVar6 & 1;\n    if ((uVar7 == 0) && ((bVar6 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }\n      if (bVar5 != 0) goto LAB_000a7c66;\n      uVar7 = (this->u2_).shndx;\n      bVar4 = (byte)this->field_0x2b >> 5 & 1;\n    }\n    if (uVar7 == 0xfff1 && bVar4 == 0) {\n      return false;\n    }\n  }\n  else {\n    if (bVar5 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar5 == 3) {\n      return false;\n    }\n  }\n  if ((flags & 1U) != 0) {\n    iVar2 = *(int *)(iVar1 + 8);\n    if (iVar2 == 0) goto LAB_000a7d5b;\n    if (*(char *)(iVar2 + 0x1a25) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x1a25);\n    }\n    if (*(char *)(iVar2 + 0x2931) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x2931);\n    }\n  }\n  if (((flags & 8U) == 0) || (bVar4 = 0, this->plt_offset_ == 0xffffffff)) {\n    if ((flags & 0x10U) == 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }\n      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }\n    }\n    if (bVar5 == 0) {\n      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      bVar4 = bVar5 & 1;\n      if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;\n    }\n    else {\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }\n  }\n  return (bool)bVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "Parameters *in_stack_ffffffd4;" type_identifier (pointer_declarator "*in_stack_ffffffd4" * identifier) ;) (declaration "Parameters *in_stack_ffffffd8;" type_identifier (pointer_declarator "*in_stack_ffffffd8" * identifier) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);" (assignment_expression "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" identifier = (pointer_expression "*(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" * (cast_expression "(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" ( (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI + 100" (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (*(byte *)(iVar1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    Parameters::doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);\n  }" if (parenthesized_expression "(*(byte *)(iVar1 + 0x10) == 0)" ( (binary_expression "*(byte *)(iVar1 + 0x10) == 0" (pointer_expression "*(byte *)(iVar1 + 0x10)" * (cast_expression "(byte *)(iVar1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    Parameters::doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);\n  }" { comment (labeled_statement "Parameters::doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);" statement_identifier : (ERROR ":" :) (expression_statement "doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8);" (call_expression "doing_static_link(in_stack_ffffffd4,in_stack_ffffffd8)" identifier (argument_list "(in_stack_ffffffd4,in_stack_ffffffd8)" ( identifier , identifier ))) ;)) })) (if_statement "if (*(char *)(iVar1 + 0x11) != '\0') {\n    return false;\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar1 + 0x11)" * (cast_expression "(char *)(iVar1 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x11)" ( (binary_expression "iVar1 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar5 = this->field_0x2a & 7;" (assignment_expression "bVar5 = this->field_0x2a & 7" identifier = (binary_expression "this->field_0x2a & 7" (field_expression "this->field_0x2a" identifier -> field_identifier) & number_literal)) ;) (if_statement "if ((this->field_0x2a & 7) == 0) {\n    uVar7 = (this->u2_).shndx;\n    bVar6 = (byte)this->field_0x2b >> 5;\n    bVar4 = bVar6 & 1;\n    if ((uVar7 == 0) && ((bVar6 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }\n      if (bVar5 != 0) goto LAB_000a7c66;\n      uVar7 = (this->u2_).shndx;\n      bVar4 = (byte)this->field_0x2b >> 5 & 1;\n    }\n    if (uVar7 == 0xfff1 && bVar4 == 0) {\n      return false;\n    }\n  }\n  else {\n    if (bVar5 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar5 == 3) {\n      return false;\n    }\n  }" if (parenthesized_expression "((this->field_0x2a & 7) == 0)" ( (binary_expression "(this->field_0x2a & 7) == 0" (parenthesized_expression "(this->field_0x2a & 7)" ( (binary_expression "this->field_0x2a & 7" (field_expression "this->field_0x2a" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar7 = (this->u2_).shndx;\n    bVar6 = (byte)this->field_0x2b >> 5;\n    bVar4 = bVar6 & 1;\n    if ((uVar7 == 0) && ((bVar6 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }\n      if (bVar5 != 0) goto LAB_000a7c66;\n      uVar7 = (this->u2_).shndx;\n      bVar4 = (byte)this->field_0x2b >> 5 & 1;\n    }\n    if (uVar7 == 0xfff1 && bVar4 == 0) {\n      return false;\n    }\n  }" { (expression_statement "uVar7 = (this->u2_).shndx;" (assignment_expression "uVar7 = (this->u2_).shndx" identifier = (field_expression "(this->u2_).shndx" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "bVar6 = (byte)this->field_0x2b >> 5;" (assignment_expression "bVar6 = (byte)this->field_0x2b >> 5" identifier = (binary_expression "(byte)this->field_0x2b >> 5" (cast_expression "(byte)this->field_0x2b" ( (type_descriptor "byte" type_identifier) ) (field_expression "this->field_0x2b" identifier -> field_identifier)) >> number_literal)) ;) (expression_statement "bVar4 = bVar6 & 1;" (assignment_expression "bVar4 = bVar6 & 1" identifier = (binary_expression "bVar6 & 1" identifier & number_literal)) ;) (if_statement "if ((uVar7 == 0) && ((bVar6 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }\n      if (bVar5 != 0) goto LAB_000a7c66;\n      uVar7 = (this->u2_).shndx;\n      bVar4 = (byte)this->field_0x2b >> 5 & 1;\n    }" if (parenthesized_expression "((uVar7 == 0) && ((bVar6 & 1) != 0))" ( (binary_expression "(uVar7 == 0) && ((bVar6 & 1) != 0)" (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) && (parenthesized_expression "((bVar6 & 1) != 0)" ( (binary_expression "(bVar6 & 1) != 0" (parenthesized_expression "(bVar6 & 1)" ( (binary_expression "bVar6 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }\n      if (bVar5 != 0) goto LAB_000a7c66;\n      uVar7 = (this->u2_).shndx;\n      bVar4 = (byte)this->field_0x2b >> 5 & 1;\n    }" { (labeled_statement "LAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" statement_identifier : (if_statement "if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" if (parenthesized_expression "(*(int *)(iVar1 + 8) == 0)" ( (binary_expression "*(int *)(iVar1 + 8) == 0" (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000a7d5b;" goto statement_identifier ;))) (if_statement "if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return false;\n      }" if (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25)" * (cast_expression "(char *)(*(int *)(iVar1 + 8) + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 8) + 0x1a25)" ( (binary_expression "*(int *)(iVar1 + 8) + 0x1a25" (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (bVar5 != 0) goto LAB_000a7c66;" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a7c66;" goto statement_identifier ;)) (expression_statement "uVar7 = (this->u2_).shndx;" (assignment_expression "uVar7 = (this->u2_).shndx" identifier = (field_expression "(this->u2_).shndx" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "bVar4 = (byte)this->field_0x2b >> 5 & 1;" (assignment_expression "bVar4 = (byte)this->field_0x2b >> 5 & 1" identifier = (binary_expression "(byte)this->field_0x2b >> 5 & 1" (binary_expression "(byte)this->field_0x2b >> 5" (cast_expression "(byte)this->field_0x2b" ( (type_descriptor "byte" type_identifier) ) (field_expression "this->field_0x2b" identifier -> field_identifier)) >> number_literal) & number_literal)) ;) })) (if_statement "if (uVar7 == 0xfff1 && bVar4 == 0) {\n      return false;\n    }" if (parenthesized_expression "(uVar7 == 0xfff1 && bVar4 == 0)" ( (binary_expression "uVar7 == 0xfff1 && bVar4 == 0" (binary_expression "uVar7 == 0xfff1" identifier == number_literal) && (binary_expression "bVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }) (else_clause "else {\n    if (bVar5 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar5 == 3) {\n      return false;\n    }\n  }" else (compound_statement "{\n    if (bVar5 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar5 == 3) {\n      return false;\n    }\n  }" { (if_statement "if (bVar5 == 4) goto LAB_000a7c47;" if (parenthesized_expression "(bVar5 == 4)" ( (binary_expression "bVar5 == 4" identifier == number_literal) )) (goto_statement "goto LAB_000a7c47;" goto statement_identifier ;)) (labeled_statement "LAB_000a7c66:\n    if (bVar5 == 3) {\n      return false;\n    }" statement_identifier : (if_statement "if (bVar5 == 3) {\n      return false;\n    }" if (parenthesized_expression "(bVar5 == 3)" ( (binary_expression "bVar5 == 3" identifier == number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) }))) }))) (if_statement "if ((flags & 1U) != 0) {\n    iVar2 = *(int *)(iVar1 + 8);\n    if (iVar2 == 0) goto LAB_000a7d5b;\n    if (*(char *)(iVar2 + 0x1a25) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x1a25);\n    }\n    if (*(char *)(iVar2 + 0x2931) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x2931);\n    }\n  }" if (parenthesized_expression "((flags & 1U) != 0)" ( (binary_expression "(flags & 1U) != 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar2 = *(int *)(iVar1 + 8);\n    if (iVar2 == 0) goto LAB_000a7d5b;\n    if (*(char *)(iVar2 + 0x1a25) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x1a25);\n    }\n    if (*(char *)(iVar2 + 0x2931) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x2931);\n    }\n  }" { (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) goto LAB_000a7d5b;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a7d5b;" goto statement_identifier ;)) (if_statement "if (*(char *)(iVar2 + 0x1a25) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x1a25);\n    }" if (parenthesized_expression "(*(char *)(iVar2 + 0x1a25) != '\0')" ( (binary_expression "*(char *)(iVar2 + 0x1a25) != '\0'" (pointer_expression "*(char *)(iVar2 + 0x1a25)" * (cast_expression "(char *)(iVar2 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1a25)" ( (binary_expression "iVar2 + 0x1a25" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (bool)*(char *)(iVar2 + 0x1a25);\n    }" { (return_statement "return (bool)*(char *)(iVar2 + 0x1a25);" return (cast_expression "(bool)*(char *)(iVar2 + 0x1a25)" ( (type_descriptor "bool" primitive_type) ) (pointer_expression "*(char *)(iVar2 + 0x1a25)" * (cast_expression "(char *)(iVar2 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1a25)" ( (binary_expression "iVar2 + 0x1a25" identifier + number_literal) ))))) ;) })) (if_statement "if (*(char *)(iVar2 + 0x2931) != '\0') {\n      return (bool)*(char *)(iVar2 + 0x2931);\n    }" if (parenthesized_expression "(*(char *)(iVar2 + 0x2931) != '\0')" ( (binary_expression "*(char *)(iVar2 + 0x2931) != '\0'" (pointer_expression "*(char *)(iVar2 + 0x2931)" * (cast_expression "(char *)(iVar2 + 0x2931)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2931)" ( (binary_expression "iVar2 + 0x2931" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (bool)*(char *)(iVar2 + 0x2931);\n    }" { (return_statement "return (bool)*(char *)(iVar2 + 0x2931);" return (cast_expression "(bool)*(char *)(iVar2 + 0x2931)" ( (type_descriptor "bool" primitive_type) ) (pointer_expression "*(char *)(iVar2 + 0x2931)" * (cast_expression "(char *)(iVar2 + 0x2931)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2931)" ( (binary_expression "iVar2 + 0x2931" identifier + number_literal) ))))) ;) })) })) (if_statement "if (((flags & 8U) == 0) || (bVar4 = 0, this->plt_offset_ == 0xffffffff)) {\n    if ((flags & 0x10U) == 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }\n      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }\n    }\n    if (bVar5 == 0) {\n      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      bVar4 = bVar5 & 1;\n      if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;\n    }\n    else {\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }\n  }" if (parenthesized_expression "(((flags & 8U) == 0) || (bVar4 = 0, this->plt_offset_ == 0xffffffff))" ( (binary_expression "((flags & 8U) == 0) || (bVar4 = 0, this->plt_offset_ == 0xffffffff)" (parenthesized_expression "((flags & 8U) == 0)" ( (binary_expression "(flags & 8U) == 0" (parenthesized_expression "(flags & 8U)" ( (binary_expression "flags & 8U" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar4 = 0, this->plt_offset_ == 0xffffffff)" ( (comma_expression "bVar4 = 0, this->plt_offset_ == 0xffffffff" (assignment_expression "bVar4 = 0" identifier = number_literal) , (binary_expression "this->plt_offset_ == 0xffffffff" (field_expression "this->plt_offset_" identifier -> field_identifier) == number_literal)) ))) )) (compound_statement "{\n    if ((flags & 0x10U) == 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }\n      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }\n    }\n    if (bVar5 == 0) {\n      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      bVar4 = bVar5 & 1;\n      if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;\n    }\n    else {\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }\n  }" { (if_statement "if ((flags & 0x10U) == 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }\n      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }\n    }" if (parenthesized_expression "((flags & 0x10U) == 0)" ( (binary_expression "(flags & 0x10U) == 0" (parenthesized_expression "(flags & 0x10U)" ( (binary_expression "flags & 0x10U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }\n      if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }\n    }" { (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);\n      }" { (labeled_statement "LAB_000a7d5b:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);" statement_identifier : comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI);" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI)" identifier (argument_list "((char *)(unaff_EDI + 0x23a6e6),0x5c,&UNK_0024e821 + unaff_EDI)" ( (cast_expression "(char *)(unaff_EDI + 0x23a6e6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23a6e6)" ( (binary_expression "unaff_EDI + 0x23a6e6" identifier + number_literal) ))) , number_literal , (binary_expression "&UNK_0024e821 + unaff_EDI" (pointer_expression "&UNK_0024e821" & identifier) + identifier) ))) ;)) })) (if_statement "if (((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)) {\n        return false;\n      }" if (parenthesized_expression "(((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff))" ( (binary_expression "((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')) &&\n         (this->plt_offset_ != 0xffffffff)" (parenthesized_expression "((*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0'))" ( (binary_expression "(*(char *)(iVar2 + 0x1a25) == '\0') && (*(char *)(iVar2 + 0x2931) == '\0')" (parenthesized_expression "(*(char *)(iVar2 + 0x1a25) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x1a25)" * (cast_expression "(char *)(iVar2 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1a25)" ( (binary_expression "iVar2 + 0x1a25" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar2 + 0x2931) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0x2931) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x2931)" * (cast_expression "(char *)(iVar2 + 0x2931)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2931)" ( (binary_expression "iVar2 + 0x2931" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(this->plt_offset_ != 0xffffffff)" ( (binary_expression "this->plt_offset_ != 0xffffffff" (field_expression "this->plt_offset_" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) })) (if_statement "if (bVar5 == 0) {\n      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      bVar4 = bVar5 & 1;\n      if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;\n    }\n    else {\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;\n      bVar4 = bVar5 & 1;\n      if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;\n    }" { (expression_statement "bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage;" (field_expression "bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl._M_end_of_storage" (field_expression "bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                        _M_impl" (binary_expression "bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold::Output_data*,_std" (assignment_expression "bVar5 = *(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold" identifier = (binary_expression "*(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base<gold" (pointer_expression "*(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base" * (cast_expression "(byte *)&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base" & (field_expression "((this->u1_).output_segment)->output_lists_[3].\n                        super__Vector_base" (subscript_expression "((this->u1_).output_segment)->output_lists_[3]" (field_expression "((this->u1_).output_segment)->output_lists_" (parenthesized_expression "((this->u1_).output_segment)" ( (field_expression "(this->u1_).output_segment" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ number_literal ]) . field_identifier)))) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "bVar4 = bVar5 & 1;" (assignment_expression "bVar4 = bVar5 & 1" identifier = (binary_expression "bVar5 & 1" identifier & number_literal)) ;) (if_statement "if (((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))\n      goto LAB_000a7cb0;" if (parenthesized_expression "(((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0))" ( (binary_expression "((bVar5 & 1) == 0) &&\n         (bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0)" (parenthesized_expression "((bVar5 & 1) == 0)" ( (binary_expression "(bVar5 & 1) == 0" (parenthesized_expression "(bVar5 & 1)" ( (binary_expression "bVar5 & 1" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0)" ( (comma_expression "bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0, bVar4 == 0" (assignment_expression "bVar4 = (byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0" identifier = (binary_expression "(byte)this->field_0x2b >> 5 & (this->u2_).shndx == 0" (binary_expression "(byte)this->field_0x2b >> 5" (cast_expression "(byte)this->field_0x2b" ( (type_descriptor "byte" type_identifier) ) (field_expression "this->field_0x2b" identifier -> field_identifier)) >> number_literal) & (binary_expression "(this->u2_).shndx == 0" (field_expression "(this->u2_).shndx" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier) == number_literal))) , (binary_expression "bVar4 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a7cb0;" goto statement_identifier ;)) }) (else_clause "else {\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }" else (compound_statement "{\n      bVar4 = *(byte *)(iVar1 + 0x10);\n      if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }\n    }" { (expression_statement "bVar4 = *(byte *)(iVar1 + 0x10);" (assignment_expression "bVar4 = *(byte *)(iVar1 + 0x10)" identifier = (pointer_expression "*(byte *)(iVar1 + 0x10)" * (cast_expression "(byte *)(iVar1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (bVar5 != 4) {\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }" if (parenthesized_expression "(bVar5 != 4)" ( (binary_expression "bVar5 != 4" identifier != number_literal) )) (compound_statement "{\nLAB_000a7cb0:\n        bVar3 = is_preemptible(this);\n        return bVar3;\n      }" { (labeled_statement "LAB_000a7cb0:\n        bVar3 = is_preemptible(this);" statement_identifier : (expression_statement "bVar3 = is_preemptible(this);" (assignment_expression "bVar3 = is_preemptible(this)" identifier = (call_expression "is_preemptible(this)" identifier (argument_list "(this)" ( identifier )))) ;)) (return_statement "return bVar3;" return identifier ;) })) }))) })) (return_statement "return (bool)bVar4;" return (cast_expression "(bool)bVar4" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })))
(translation_unit "uint FUN_000a7b80(int param_1,uint param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    \n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "uint FUN_000a7b80(int param_1,uint param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    \n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_000a7b80(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    \n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_000b484e();" (call_expression "FUN_000b484e()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);" (assignment_expression "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" identifier = (pointer_expression "*(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" * (cast_expression "(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" ( (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI + 100" (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (*(byte *)(iVar1 + 0x10) == 0) {\n                    \n    FUN_00052720();\n  }" if (parenthesized_expression "(*(byte *)(iVar1 + 0x10) == 0)" ( (binary_expression "*(byte *)(iVar1 + 0x10) == 0" (pointer_expression "*(byte *)(iVar1 + 0x10)" * (cast_expression "(byte *)(iVar1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_00052720();\n  }" { (expression_statement "FUN_00052720();" (call_expression "FUN_00052720()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar3 = (uint)*(byte *)(iVar1 + 0x11);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar1 + 0x11)" identifier = (binary_expression "(uint)*(byte *)(iVar1 + 0x11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar1 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x11)" ( (binary_expression "iVar1 + 0x11" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }" if (parenthesized_expression "(*(byte *)(iVar1 + 0x11) != 0)" ( (binary_expression "*(byte *)(iVar1 + 0x11) != 0" (pointer_expression "*(byte *)(iVar1 + 0x11)" * (cast_expression "(byte *)(iVar1 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x11)" ( (binary_expression "iVar1 + 0x11" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar4 = *(byte *)(param_1 + 0x2a) & 7;" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x2a) & 7" identifier = (binary_expression "*(byte *)(param_1 + 0x2a) & 7" (pointer_expression "*(byte *)(param_1 + 0x2a)" * (cast_expression "(byte *)(param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a)" ( (binary_expression "param_1 + 0x2a" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x2a) & 7)" ( (binary_expression "*(byte *)(param_1 + 0x2a) & 7" (pointer_expression "*(byte *)(param_1 + 0x2a)" * (cast_expression "(byte *)(param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a)" ( (binary_expression "param_1 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "iVar6 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar6 = *(int *)(param_1 + 0xc)" identifier = (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) ))))) ;) (expression_statement "bVar5 = *(byte *)(param_1 + 0x2b) >> 5;" (assignment_expression "bVar5 = *(byte *)(param_1 + 0x2b) >> 5" identifier = (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" * (cast_expression "(byte *)(param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "bVar2 = bVar5 & 1;" (assignment_expression "bVar2 = bVar5 & 1" identifier = (binary_expression "bVar5 & 1" identifier & number_literal)) ;) (if_statement "if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }" if (parenthesized_expression "((iVar6 == 0) && ((bVar5 & 1) != 0))" ( (binary_expression "(iVar6 == 0) && ((bVar5 & 1) != 0)" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "((bVar5 & 1) != 0)" ( (binary_expression "(bVar5 & 1) != 0" (parenthesized_expression "(bVar5 & 1)" ( (binary_expression "bVar5 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }" { (labeled_statement "LAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" statement_identifier : (if_statement "if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" if (parenthesized_expression "(*(int *)(iVar1 + 8) == 0)" ( (binary_expression "*(int *)(iVar1 + 8) == 0" (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000a7d5b;" goto statement_identifier ;))) (if_statement "if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25)" * (cast_expression "(char *)(*(int *)(iVar1 + 8) + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 8) + 0x1a25)" ( (binary_expression "*(int *)(iVar1 + 8) + 0x1a25" (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (bVar4 != 0) goto LAB_000a7c66;" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a7c66;" goto statement_identifier ;)) (expression_statement "iVar6 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar6 = *(int *)(param_1 + 0xc)" identifier = (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) ))))) ;) (expression_statement "bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1" identifier = (binary_expression "*(byte *)(param_1 + 0x2b) >> 5 & 1" (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" * (cast_expression "(byte *)(param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) })) (if_statement "if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar6 == 0xfff1 && bVar2 == 0)" ( (binary_expression "iVar6 == 0xfff1 && bVar2 == 0" (binary_expression "iVar6 == 0xfff1" identifier == number_literal) && (binary_expression "bVar2 == 0" identifier == number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" else (compound_statement "{\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" { (if_statement "if (bVar4 == 4) goto LAB_000a7c47;" if (parenthesized_expression "(bVar4 == 4)" ( (binary_expression "bVar4 == 4" identifier == number_literal) )) (goto_statement "goto LAB_000a7c47;" goto statement_identifier ;)) (labeled_statement "LAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }" statement_identifier : (if_statement "if (bVar4 == 3) {\n      return uVar3;\n    }" if (parenthesized_expression "(bVar4 == 3)" ( (binary_expression "bVar4 == 3" identifier == number_literal) )) (compound_statement "{\n      return uVar3;\n    }" { (return_statement "return uVar3;" return identifier ;) }))) }))) (if_statement "if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }" if (parenthesized_expression "((param_2 & 1) != 0)" ( (binary_expression "(param_2 & 1) != 0" (parenthesized_expression "(param_2 & 1)" ( (binary_expression "param_2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }" { (expression_statement "iVar6 = *(int *)(iVar1 + 8);" (assignment_expression "iVar6 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) goto LAB_000a7d5b;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a7d5b;" goto statement_identifier ;)) (if_statement "if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }" if (parenthesized_expression "(*(byte *)(iVar6 + 0x1a25) != 0)" ( (binary_expression "*(byte *)(iVar6 + 0x1a25) != 0" (pointer_expression "*(byte *)(iVar6 + 0x1a25)" * (cast_expression "(byte *)(iVar6 + 0x1a25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1a25)" ( (binary_expression "iVar6 + 0x1a25" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }" { (return_statement "return (uint)*(byte *)(iVar6 + 0x1a25);" return (binary_expression "(uint)*(byte *)(iVar6 + 0x1a25)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + 0x1a25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1a25)" ( (binary_expression "iVar6 + 0x1a25" identifier + number_literal) )))) ;) })) (if_statement "if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }" if (parenthesized_expression "(*(byte *)(iVar6 + 0x2931) != 0)" ( (binary_expression "*(byte *)(iVar6 + 0x2931) != 0" (pointer_expression "*(byte *)(iVar6 + 0x2931)" * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }" { (return_statement "return (uint)*(byte *)(iVar6 + 0x2931);" return (binary_expression "(uint)*(byte *)(iVar6 + 0x2931)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) ;) })) })) (if_statement "if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }" if (parenthesized_expression "(((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1))" ( (binary_expression "((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)" (parenthesized_expression "((param_2 & 8) == 0)" ( (binary_expression "(param_2 & 8) == 0" (parenthesized_expression "(param_2 & 8)" ( (binary_expression "param_2 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x18) == -1)" ( (binary_expression "*(int *)(param_1 + 0x18) == -1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }" { (if_statement "if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }" if (parenthesized_expression "((param_2 & 0x10) == 0)" ( (binary_expression "(param_2 & 0x10) == 0" (parenthesized_expression "(param_2 & 0x10)" ( (binary_expression "param_2 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }" { (expression_statement "iVar6 = *(int *)(iVar1 + 8);" (assignment_expression "iVar6 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }" { (labeled_statement "LAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);" statement_identifier : (expression_statement "FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);" (call_expression "FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1)" identifier (argument_list "(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1)" ( (binary_expression "&UNK_0023a6e6 + unaff_EDI" (pointer_expression "&UNK_0023a6e6" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x24e821" identifier + number_literal) , identifier ))) ;)) })) (if_statement "if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }" if (parenthesized_expression "(((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1))" ( (binary_expression "((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)" (parenthesized_expression "((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0))" ( (binary_expression "(*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)" (parenthesized_expression "(*(char *)(iVar6 + 0x1a25) == '\0')" ( (binary_expression "*(char *)(iVar6 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar6 + 0x1a25)" * (cast_expression "(char *)(iVar6 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1a25)" ( (binary_expression "iVar6 + 0x1a25" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(byte *)(iVar6 + 0x2931) == 0)" ( (binary_expression "*(byte *)(iVar6 + 0x2931) == 0" (pointer_expression "*(byte *)(iVar6 + 0x2931)" * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0x18) != -1)" ( (binary_expression "*(int *)(param_1 + 0x18) != -1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }" { (return_statement "return (uint)*(byte *)(iVar6 + 0x2931);" return (binary_expression "(uint)*(byte *)(iVar6 + 0x2931)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + 0x2931)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2931)" ( (binary_expression "iVar6 + 0x2931" identifier + number_literal) )))) ;) })) })) (if_statement "if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" if (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }" { (expression_statement "bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);" (assignment_expression "bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c)" identifier = (pointer_expression "*(byte *)(*(int *)(param_1 + 8) + 0x2c)" * (cast_expression "(byte *)(*(int *)(param_1 + 8) + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 8) + 0x2c" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar3 = bVar4 & 1;" (assignment_expression "uVar3 = bVar4 & 1" identifier = (binary_expression "bVar4 & 1" identifier & number_literal)) ;) (if_statement "if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;" if (parenthesized_expression "(((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0))" ( (binary_expression "((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)" (parenthesized_expression "((bVar4 & 1) == 0)" ( (binary_expression "(bVar4 & 1) == 0" (parenthesized_expression "(bVar4 & 1)" ( (binary_expression "bVar4 & 1" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)" ( (comma_expression "bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0" identifier = (binary_expression "*(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0" (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" * (cast_expression "(byte *)(param_1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) >> number_literal) & (binary_expression "*(int *)(param_1 + 0xc) == 0" (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))) , (comma_expression "uVar3 = (uint)bVar4\n         , bVar4 == 0" (assignment_expression "uVar3 = (uint)bVar4" identifier = (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) , (binary_expression "bVar4 == 0" identifier == number_literal))) ))) )) (goto_statement "goto LAB_000a7cb0;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" else (compound_statement "{\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" { (expression_statement "uVar3 = (uint)*(byte *)(iVar1 + 0x10);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar1 + 0x10)" identifier = (binary_expression "(uint)*(byte *)(iVar1 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }" if (parenthesized_expression "(bVar4 != 4)" ( (binary_expression "bVar4 != 4" identifier != number_literal) )) (compound_statement "{\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }" { (labeled_statement "LAB_000a7cb0:\n        uVar3 = FUN_000a7920();" statement_identifier : (expression_statement "uVar3 = FUN_000a7920();" (assignment_expression "uVar3 = FUN_000a7920()" identifier = (call_expression "FUN_000a7920()" identifier (argument_list "()" ( )))) ;)) (return_statement "return uVar3;" return identifier ;) })) }))) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (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 ;))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return (binary_expression (parenthesized_expression ( IDENT )) * (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (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 IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (return_statement return (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) & (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT))) , (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression IDENT == LIT))) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (return_statement return IDENT ;) })) }))) })) (return_statement return IDENT ;) })))
(function_definition "uint FUN_000a7b80(int param_1,uint param_2)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    \n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}" (type_identifier "uint") (function_declarator "FUN_000a7b80(int param_1,uint param_2)" (identifier "FUN_000a7b80") (parameter_list "(int param_1,uint param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  byte bVar4;\n  byte bVar5;\n  int iVar6;\n  int unaff_EDI;\n  \n  FUN_000b484e();\n  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);\n  if (*(byte *)(iVar1 + 0x10) == 0) {\n                    \n    FUN_00052720();\n  }\n  uVar3 = (uint)*(byte *)(iVar1 + 0x11);\n  if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }\n  bVar4 = *(byte *)(param_1 + 0x2a) & 7;\n  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }\n  if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }\n  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }\n  return uVar3;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "FUN_000b484e();" (call_expression "FUN_000b484e()" (identifier "FUN_000b484e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);" (assignment_expression "iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" (* "*") (cast_expression "(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(BYTE_ARRAY_0036c8fd + unaff_EDI + 100)" (( "(") (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI + 100" (binary_expression "BYTE_ARRAY_0036c8fd + unaff_EDI" (identifier "BYTE_ARRAY_0036c8fd") (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "100")) () ")"))))) (; ";")) (if_statement "if (*(byte *)(iVar1 + 0x10) == 0) {\n                    \n    FUN_00052720();\n  }" (if "if") (parenthesized_expression "(*(byte *)(iVar1 + 0x10) == 0)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x10) == 0" (pointer_expression "*(byte *)(iVar1 + 0x10)" (* "*") (cast_expression "(byte *)(iVar1 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00052720();\n  }" ({ "{") (expression_statement "FUN_00052720();" (call_expression "FUN_00052720()" (identifier "FUN_00052720") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = (uint)*(byte *)(iVar1 + 0x11);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar1 + 0x11)" (identifier "uVar3") (= "=") (binary_expression "(uint)*(byte *)(iVar1 + 0x11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar1 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x11)" (( "(") (binary_expression "iVar1 + 0x11" (identifier "iVar1") (+ "+") (number_literal "0x11")) () ")"))))) (; ";")) (if_statement "if (*(byte *)(iVar1 + 0x11) != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(*(byte *)(iVar1 + 0x11) != 0)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x11) != 0" (pointer_expression "*(byte *)(iVar1 + 0x11)" (* "*") (cast_expression "(byte *)(iVar1 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x11)" (( "(") (binary_expression "iVar1 + 0x11" (identifier "iVar1") (+ "+") (number_literal "0x11")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar4 = *(byte *)(param_1 + 0x2a) & 7;" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x2a) & 7" (identifier "bVar4") (= "=") (binary_expression "*(byte *)(param_1 + 0x2a) & 7" (pointer_expression "*(byte *)(param_1 + 0x2a)" (* "*") (cast_expression "(byte *)(param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a)" (( "(") (binary_expression "param_1 + 0x2a" (identifier "param_1") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7"))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)(param_1 + 0x2a) & 7" (pointer_expression "*(byte *)(param_1 + 0x2a)" (* "*") (cast_expression "(byte *)(param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a)" (( "(") (binary_expression "param_1 + 0x2a" (identifier "param_1") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar6 = *(int *)(param_1 + 0xc);\n    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;\n    bVar2 = bVar5 & 1;\n    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }\n    if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "iVar6 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar6 = *(int *)(param_1 + 0xc)" (identifier "iVar6") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "bVar5 = *(byte *)(param_1 + 0x2b) >> 5;" (assignment_expression "bVar5 = *(byte *)(param_1 + 0x2b) >> 5" (identifier "bVar5") (= "=") (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" (* "*") (cast_expression "(byte *)(param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2b)" (( "(") (binary_expression "param_1 + 0x2b" (identifier "param_1") (+ "+") (number_literal "0x2b")) () ")")))) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "bVar2 = bVar5 & 1;" (assignment_expression "bVar2 = bVar5 & 1" (identifier "bVar2") (= "=") (binary_expression "bVar5 & 1" (identifier "bVar5") (& "&") (number_literal "1"))) (; ";")) (if_statement "if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }" (if "if") (parenthesized_expression "((iVar6 == 0) && ((bVar5 & 1) != 0))" (( "(") (binary_expression "(iVar6 == 0) && ((bVar5 & 1) != 0)" (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((bVar5 & 1) != 0)" (( "(") (binary_expression "(bVar5 & 1) != 0" (parenthesized_expression "(bVar5 & 1)" (( "(") (binary_expression "bVar5 & 1" (identifier "bVar5") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;\n      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }\n      if (bVar4 != 0) goto LAB_000a7c66;\n      iVar6 = *(int *)(param_1 + 0xc);\n      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;\n    }" ({ "{") (labeled_statement "LAB_000a7c47:\n      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" (statement_identifier "LAB_000a7c47") (: ":") (if_statement "if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 8) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 8) == 0" (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a7d5b;" (goto "goto") (statement_identifier "LAB_000a7d5b") (; ";")))) (if_statement "if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar1 + 8) + 0x1a25)" (* "*") (cast_expression "(char *)(*(int *)(iVar1 + 8) + 0x1a25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 8) + 0x1a25)" (( "(") (binary_expression "*(int *)(iVar1 + 8) + 0x1a25" (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x1a25")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (bVar4 != 0) goto LAB_000a7c66;" (if "if") (parenthesized_expression "(bVar4 != 0)" (( "(") (binary_expression "bVar4 != 0" (identifier "bVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a7c66;" (goto "goto") (statement_identifier "LAB_000a7c66") (; ";"))) (expression_statement "iVar6 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar6 = *(int *)(param_1 + 0xc)" (identifier "iVar6") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;" (assignment_expression "bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1" (identifier "bVar2") (= "=") (binary_expression "*(byte *)(param_1 + 0x2b) >> 5 & 1" (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" (* "*") (cast_expression "(byte *)(param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2b)" (( "(") (binary_expression "param_1 + 0x2b" (identifier "param_1") (+ "+") (number_literal "0x2b")) () ")")))) (>> ">>") (number_literal "5")) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (iVar6 == 0xfff1 && bVar2 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar6 == 0xfff1 && bVar2 == 0)" (( "(") (binary_expression "iVar6 == 0xfff1 && bVar2 == 0" (binary_expression "iVar6 == 0xfff1" (identifier "iVar6") (== "==") (number_literal "0xfff1")) (&& "&&") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" (else "else") (compound_statement "{\n    if (bVar4 == 4) goto LAB_000a7c47;\nLAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }\n  }" ({ "{") (if_statement "if (bVar4 == 4) goto LAB_000a7c47;" (if "if") (parenthesized_expression "(bVar4 == 4)" (( "(") (binary_expression "bVar4 == 4" (identifier "bVar4") (== "==") (number_literal "4")) () ")")) (goto_statement "goto LAB_000a7c47;" (goto "goto") (statement_identifier "LAB_000a7c47") (; ";"))) (labeled_statement "LAB_000a7c66:\n    if (bVar4 == 3) {\n      return uVar3;\n    }" (statement_identifier "LAB_000a7c66") (: ":") (if_statement "if (bVar4 == 3) {\n      return uVar3;\n    }" (if "if") (parenthesized_expression "(bVar4 == 3)" (( "(") (binary_expression "bVar4 == 3" (identifier "bVar4") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n      return uVar3;\n    }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))) (} "}")))) (if_statement "if ((param_2 & 1) != 0) {\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }" (if "if") (parenthesized_expression "((param_2 & 1) != 0)" (( "(") (binary_expression "(param_2 & 1) != 0" (parenthesized_expression "(param_2 & 1)" (( "(") (binary_expression "param_2 & 1" (identifier "param_2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar6 = *(int *)(iVar1 + 8);\n    if (iVar6 == 0) goto LAB_000a7d5b;\n    if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }\n    if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }\n  }" ({ "{") (expression_statement "iVar6 = *(int *)(iVar1 + 8);" (assignment_expression "iVar6 = *(int *)(iVar1 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar6 == 0) goto LAB_000a7d5b;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a7d5b;" (goto "goto") (statement_identifier "LAB_000a7d5b") (; ";"))) (if_statement "if (*(byte *)(iVar6 + 0x1a25) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }" (if "if") (parenthesized_expression "(*(byte *)(iVar6 + 0x1a25) != 0)" (( "(") (binary_expression "*(byte *)(iVar6 + 0x1a25) != 0" (pointer_expression "*(byte *)(iVar6 + 0x1a25)" (* "*") (cast_expression "(byte *)(iVar6 + 0x1a25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1a25)" (( "(") (binary_expression "iVar6 + 0x1a25" (identifier "iVar6") (+ "+") (number_literal "0x1a25")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return (uint)*(byte *)(iVar6 + 0x1a25);\n    }" ({ "{") (return_statement "return (uint)*(byte *)(iVar6 + 0x1a25);" (return "return") (binary_expression "(uint)*(byte *)(iVar6 + 0x1a25)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar6 + 0x1a25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1a25)" (( "(") (binary_expression "iVar6 + 0x1a25" (identifier "iVar6") (+ "+") (number_literal "0x1a25")) () ")")))) (; ";")) (} "}"))) (if_statement "if (*(byte *)(iVar6 + 0x2931) != 0) {\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }" (if "if") (parenthesized_expression "(*(byte *)(iVar6 + 0x2931) != 0)" (( "(") (binary_expression "*(byte *)(iVar6 + 0x2931) != 0" (pointer_expression "*(byte *)(iVar6 + 0x2931)" (* "*") (cast_expression "(byte *)(iVar6 + 0x2931)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2931)" (( "(") (binary_expression "iVar6 + 0x2931" (identifier "iVar6") (+ "+") (number_literal "0x2931")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return (uint)*(byte *)(iVar6 + 0x2931);\n    }" ({ "{") (return_statement "return (uint)*(byte *)(iVar6 + 0x2931);" (return "return") (binary_expression "(uint)*(byte *)(iVar6 + 0x2931)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar6 + 0x2931)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2931)" (( "(") (binary_expression "iVar6 + 0x2931" (identifier "iVar6") (+ "+") (number_literal "0x2931")) () ")")))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1))" (( "(") (binary_expression "((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)" (parenthesized_expression "((param_2 & 8) == 0)" (( "(") (binary_expression "(param_2 & 8) == 0" (parenthesized_expression "(param_2 & 8)" (( "(") (binary_expression "param_2 & 8" (identifier "param_2") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 0x18) == -1)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) == -1" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n    if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }\n    if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }\n  }" ({ "{") (if_statement "if ((param_2 & 0x10) == 0) {\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }" (if "if") (parenthesized_expression "((param_2 & 0x10) == 0)" (( "(") (binary_expression "(param_2 & 0x10) == 0" (parenthesized_expression "(param_2 & 0x10)" (( "(") (binary_expression "param_2 & 0x10" (identifier "param_2") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = *(int *)(iVar1 + 8);\n      if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }\n      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }\n    }" ({ "{") (expression_statement "iVar6 = *(int *)(iVar1 + 8);" (assignment_expression "iVar6 = *(int *)(iVar1 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar6 == 0) {\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);\n      }" ({ "{") (labeled_statement "LAB_000a7d5b:\n                    \n        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);" (statement_identifier "LAB_000a7d5b") (: ":") (expression_statement "FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);" (call_expression "FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1)" (identifier "FUN_000da200") (argument_list "(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1)" (( "(") (binary_expression "&UNK_0023a6e6 + unaff_EDI" (pointer_expression "&UNK_0023a6e6" (& "&") (identifier "UNK_0023a6e6")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "0x5c") (, ",") (binary_expression "unaff_EDI + 0x24e821" (identifier "unaff_EDI") (+ "+") (number_literal "0x24e821")) (, ",") (identifier "iVar1") () ")"))) (; ";"))) (} "}"))) (if_statement "if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)) {\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }" (if "if") (parenthesized_expression "(((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1))" (( "(") (binary_expression "((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&\n         (*(int *)(param_1 + 0x18) != -1)" (parenthesized_expression "((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0))" (( "(") (binary_expression "(*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)" (parenthesized_expression "(*(char *)(iVar6 + 0x1a25) == '\0')" (( "(") (binary_expression "*(char *)(iVar6 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar6 + 0x1a25)" (* "*") (cast_expression "(char *)(iVar6 + 0x1a25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1a25)" (( "(") (binary_expression "iVar6 + 0x1a25" (identifier "iVar6") (+ "+") (number_literal "0x1a25")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)(iVar6 + 0x2931) == 0)" (( "(") (binary_expression "*(byte *)(iVar6 + 0x2931) == 0" (pointer_expression "*(byte *)(iVar6 + 0x2931)" (* "*") (cast_expression "(byte *)(iVar6 + 0x2931)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2931)" (( "(") (binary_expression "iVar6 + 0x2931" (identifier "iVar6") (+ "+") (number_literal "0x2931")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0x18) != -1)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) != -1" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n        return (uint)*(byte *)(iVar6 + 0x2931);\n      }" ({ "{") (return_statement "return (uint)*(byte *)(iVar6 + 0x2931);" (return "return") (binary_expression "(uint)*(byte *)(iVar6 + 0x2931)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar6 + 0x2931)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2931)" (( "(") (binary_expression "iVar6 + 0x2931" (identifier "iVar6") (+ "+") (number_literal "0x2931")) () ")")))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (bVar4 == 0) {\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }\n    else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" (if "if") (parenthesized_expression "(bVar4 == 0)" (( "(") (binary_expression "bVar4 == 0" (identifier "bVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);\n      uVar3 = bVar4 & 1;\n      if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;\n    }" ({ "{") (expression_statement "bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);" (assignment_expression "bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(*(int *)(param_1 + 8) + 0x2c)" (* "*") (cast_expression "(byte *)(*(int *)(param_1 + 8) + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 0x2c)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 0x2c" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "uVar3 = bVar4 & 1;" (assignment_expression "uVar3 = bVar4 & 1" (identifier "uVar3") (= "=") (binary_expression "bVar4 & 1" (identifier "bVar4") (& "&") (number_literal "1"))) (; ";")) (if_statement "if (((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)) goto LAB_000a7cb0;" (if "if") (parenthesized_expression "(((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0))" (( "(") (binary_expression "((bVar4 & 1) == 0) &&\n         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)" (parenthesized_expression "((bVar4 & 1) == 0)" (( "(") (binary_expression "(bVar4 & 1) == 0" (parenthesized_expression "(bVar4 & 1)" (( "(") (binary_expression "bVar4 & 1" (identifier "bVar4") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0)" (( "(") (comma_expression "bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4\n         , bVar4 == 0" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0" (identifier "bVar4") (= "=") (binary_expression "*(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0" (binary_expression "*(byte *)(param_1 + 0x2b) >> 5" (pointer_expression "*(byte *)(param_1 + 0x2b)" (* "*") (cast_expression "(byte *)(param_1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2b)" (( "(") (binary_expression "param_1 + 0x2b" (identifier "param_1") (+ "+") (number_literal "0x2b")) () ")")))) (>> ">>") (number_literal "5")) (& "&") (binary_expression "*(int *)(param_1 + 0xc) == 0" (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 "0")))) (, ",") (comma_expression "uVar3 = (uint)bVar4\n         , bVar4 == 0" (assignment_expression "uVar3 = (uint)bVar4" (identifier "uVar3") (= "=") (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4"))) (, ",") (binary_expression "bVar4 == 0" (identifier "bVar4") (== "==") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_000a7cb0;" (goto "goto") (statement_identifier "LAB_000a7cb0") (; ";"))) (} "}")) (else_clause "else {\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" (else "else") (compound_statement "{\n      uVar3 = (uint)*(byte *)(iVar1 + 0x10);\n      if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }\n    }" ({ "{") (expression_statement "uVar3 = (uint)*(byte *)(iVar1 + 0x10);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar1 + 0x10)" (identifier "uVar3") (= "=") (binary_expression "(uint)*(byte *)(iVar1 + 0x10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar1 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (bVar4 != 4) {\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }" (if "if") (parenthesized_expression "(bVar4 != 4)" (( "(") (binary_expression "bVar4 != 4" (identifier "bVar4") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\nLAB_000a7cb0:\n        uVar3 = FUN_000a7920();\n        return uVar3;\n      }" ({ "{") (labeled_statement "LAB_000a7cb0:\n        uVar3 = FUN_000a7920();" (statement_identifier "LAB_000a7cb0") (: ":") (expression_statement "uVar3 = FUN_000a7920();" (assignment_expression "uVar3 = FUN_000a7920()" (identifier "uVar3") (= "=") (call_expression "FUN_000a7920()" (identifier "FUN_000a7920") (argument_list "()" (( "(") () ")")))) (; ";"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (} "}")))) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: bool needs_dynamic_reloc(Symbol * this, int flags) */

bool __thiscall var_13::type_1::function_1(type_1 *this,int var_10)

{
  int var_4;
  int var_11;
  bool bVar3;
  type_2 var_9;
  type_2 var_8;
  type_2 var_6;
  type_3 var_7;
  int var_3;
  type_4 *in_stack_ffffffd4;
  type_4 *in_stack_ffffffd8;
  
  var_1();
  var_4 = *(int *)(var_2 + var_3 + 100);
  if (*(type_2 *)(var_4 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    Parameters::var_5(in_stack_ffffffd4,in_stack_ffffffd8);
  }
  if (*(char *)(var_4 + 0x11) != '\0') {
    return false;
  }
  var_8 = this->field_0x2a & 7;
  if ((this->field_0x2a & 7) == 0) {
    var_7 = (this->u2_).shndx;
    var_6 = (type_2)this->field_0x2b >> 5;
    var_9 = var_6 & 1;
    if ((var_7 == 0) && ((var_6 & 1) != 0)) {
LAB_000a7c47:
      if (*(int *)(var_4 + 8) == 0) goto LAB_000a7d5b;
      if (*(char *)(*(int *)(var_4 + 8) + 0x1a25) == '\0') {
        return false;
      }
      if (var_8 != 0) goto LAB_000a7c66;
      var_7 = (this->u2_).shndx;
      var_9 = (type_2)this->field_0x2b >> 5 & 1;
    }
    if (var_7 == 0xfff1 && var_9 == 0) {
      return false;
    }
  }
  else {
    if (var_8 == 4) goto LAB_000a7c47;
LAB_000a7c66:
    if (var_8 == 3) {
      return false;
    }
  }
  if ((var_10 & 1U) != 0) {
    var_11 = *(int *)(var_4 + 8);
    if (var_11 == 0) goto LAB_000a7d5b;
    if (*(char *)(var_11 + 0x1a25) != '\0') {
      return (bool)*(char *)(var_11 + 0x1a25);
    }
    if (*(char *)(var_11 + 0x2931) != '\0') {
      return (bool)*(char *)(var_11 + 0x2931);
    }
  }
  if (((var_10 & 8U) == 0) || (var_9 = 0, this->plt_offset_ == 0xffffffff)) {
    if ((var_10 & 0x10U) == 0) {
      var_11 = *(int *)(var_4 + 8);
      if (var_11 == 0) {
LAB_000a7d5b:
                    /* WARNING: Subroutine does not return */
        var_12((char *)(var_3 + 0x23a6e6),0x5c,&UNK_0024e821 + var_3);
      }
      if (((*(char *)(var_11 + 0x1a25) == '\0') && (*(char *)(var_11 + 0x2931) == '\0')) &&
         (this->plt_offset_ != 0xffffffff)) {
        return false;
      }
    }
    if (var_8 == 0) {
      var_8 = *(type_2 *)&((this->u1_).output_segment)->output_lists_[3].
                        super__Vector_base<var_13::Output_data*,var_14::allocator<var_13::Output_data*>var_15>.
                        _M_impl._M_end_of_storage;
      var_9 = var_8 & 1;
      if (((var_8 & 1) == 0) &&
         (var_9 = (type_2)this->field_0x2b >> 5 & (this->u2_).shndx == 0, var_9 == 0))
      goto LAB_000a7cb0;
    }
    else {
      var_9 = *(type_2 *)(var_4 + 0x10);
      if (var_8 != 4) {
LAB_000a7cb0:
        bVar3 = var_16(this);
        return bVar3;
      }
    }
  }
  return (bool)var_9;
}


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

uint MASKED(int param_1,uint param_2)

{
  int iVar1;
  byte bVar2;
  uint uVar3;
  byte bVar4;
  byte bVar5;
  int iVar6;
  int unaff_EDI;
  
  FUN_000b484e();
  iVar1 = *(int *)(BYTE_ARRAY_0036c8fd + unaff_EDI + 100);
  if (*(byte *)(iVar1 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00052720();
  }
  uVar3 = (uint)*(byte *)(iVar1 + 0x11);
  if (*(byte *)(iVar1 + 0x11) != 0) {
    return 0;
  }
  bVar4 = *(byte *)(param_1 + 0x2a) & 7;
  if ((*(byte *)(param_1 + 0x2a) & 7) == 0) {
    iVar6 = *(int *)(param_1 + 0xc);
    bVar5 = *(byte *)(param_1 + 0x2b) >> 5;
    bVar2 = bVar5 & 1;
    if ((iVar6 == 0) && ((bVar5 & 1) != 0)) {
LAB_000a7c47:
      if (*(int *)(iVar1 + 8) == 0) goto LAB_000a7d5b;
      if (*(char *)(*(int *)(iVar1 + 8) + 0x1a25) == '\0') {
        return 0;
      }
      if (bVar4 != 0) goto LAB_000a7c66;
      iVar6 = *(int *)(param_1 + 0xc);
      bVar2 = *(byte *)(param_1 + 0x2b) >> 5 & 1;
    }
    if (iVar6 == 0xfff1 && bVar2 == 0) {
      return 0;
    }
  }
  else {
    if (bVar4 == 4) goto LAB_000a7c47;
LAB_000a7c66:
    if (bVar4 == 3) {
      return uVar3;
    }
  }
  if ((param_2 & 1) != 0) {
    iVar6 = *(int *)(iVar1 + 8);
    if (iVar6 == 0) goto LAB_000a7d5b;
    if (*(byte *)(iVar6 + 0x1a25) != 0) {
      return (uint)*(byte *)(iVar6 + 0x1a25);
    }
    if (*(byte *)(iVar6 + 0x2931) != 0) {
      return (uint)*(byte *)(iVar6 + 0x2931);
    }
  }
  if (((param_2 & 8) == 0) || (*(int *)(param_1 + 0x18) == -1)) {
    if ((param_2 & 0x10) == 0) {
      iVar6 = *(int *)(iVar1 + 8);
      if (iVar6 == 0) {
LAB_000a7d5b:
                    /* WARNING: Subroutine does not return */
        FUN_000da200(&UNK_0023a6e6 + unaff_EDI,0x5c,unaff_EDI + 0x24e821,iVar1);
      }
      if (((*(char *)(iVar6 + 0x1a25) == '\0') && (*(byte *)(iVar6 + 0x2931) == 0)) &&
         (*(int *)(param_1 + 0x18) != -1)) {
        return (uint)*(byte *)(iVar6 + 0x2931);
      }
    }
    if (bVar4 == 0) {
      bVar4 = *(byte *)(*(int *)(param_1 + 8) + 0x2c);
      uVar3 = bVar4 & 1;
      if (((bVar4 & 1) == 0) &&
         (bVar4 = *(byte *)(param_1 + 0x2b) >> 5 & *(int *)(param_1 + 0xc) == 0, uVar3 = (uint)bVar4
         , bVar4 == 0)) goto LAB_000a7cb0;
    }
    else {
      uVar3 = (uint)*(byte *)(iVar1 + 0x10);
      if (bVar4 != 4) {
LAB_000a7cb0:
        uVar3 = FUN_000a7920();
        return uVar3;
      }
    }
  }
  return uVar3;
}

