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

int tc_s390_fix_adjustable(fixS *fixP)

{
  bfd_reloc_code_real_type bVar1;
  segT paVar2;
  uint uVar3;
  
  if ((undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1) != (undefined1  [68])0x0)
  {
    paVar2 = S_GET_SEGMENT(fixP->fx_addsy);
    if ((paVar2->flags & 0x800000) != 0) {
      return 0;
    }
  }
  bVar1 = fixP->fx_r_type;
  uVar3 = 0;
  if (bVar1 - BFD_RELOC_390_GOT12 < 0x10) {
    uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1;
  }
  return (((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||
            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||
          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3) ^ 1;
}



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

uint FUN_00043310(byte *param_1)

{
  int iVar1;
  uint uVar2;
  
  if ((*param_1 & 1) != 0) {
    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));
    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {
      return 0;
    }
  }
  iVar1 = *(int *)(param_1 + 0x30);
  uVar2 = 0;
  if (iVar1 - 0x552U < 0x10) {
    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;
  }
  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||
          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;
}


PUSH ESI
PUSH EBX
CALL 0x00015020
ADD EBX,0x24ce9
SUB ESP,0x4
MOV ESI,dword ptr [ESP + 0x10]
TEST byte ptr [ESI],0x1
JNZ 0x000433a0
MOV EDX,dword ptr [ESI + 0x30]
LEA EAX,[EDX + -0x12]
LEA ECX,[EDX + 0xfffffaae]
CMP EAX,0x1
SETBE AL
XOR EBX,EBX
MOV ESI,EAX
CMP ECX,0xf
JBE 0x00043388
LEA EAX,[EDX + 0xfffffa7c]
CMP EAX,0x2
SETBE AL
OR EAX,ESI
CMP EDX,0xf
SETZ CL
OR EAX,ECX
LEA ECX,[EDX + 0xfffffa9d]
CMP ECX,0x1f
SETBE CL
SUB EDX,0x5a3
OR EAX,ECX
CMP EDX,0x1
SETBE DL
ADD ESP,0x4
OR EAX,EDX
OR EAX,EBX
POP EBX
POP ESI
XOR EAX,0x1
MOVZX EAX,AL
RET
MOV EAX,0xaa83
SHR EAX,CL
MOV EBX,EAX
AND EBX,0x1
JMP 0x00043344
SUB ESP,0xc
PUSH dword ptr [ESI + 0xc]
CALL 0x000374b0
ADD ESP,0x10
MOV EDX,EAX
XOR EAX,EAX
TEST byte ptr [EDX + 0x16],0x80
JZ 0x00043329
ADD ESP,0x4
POP EBX
POP ESI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint FUN_00043310(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}\n\n" comment (function_definition "uint FUN_00043310(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}" type_identifier (function_declarator "FUN_00043310(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (if_statement "if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_000374b0(*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x16) & 0x80) != 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x16) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x16) & 0x80)" ( (binary_expression "*(byte *)(iVar1 + 0x16) & 0x80" (pointer_expression "*(byte *)(iVar1 + 0x16)" * (cast_expression "(byte *)(iVar1 + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x16)" ( (binary_expression "iVar1 + 0x16" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x30);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x30)" identifier = (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }" if (parenthesized_expression "(iVar1 - 0x552U < 0x10)" ( (binary_expression "iVar1 - 0x552U < 0x10" (binary_expression "iVar1 - 0x552U" identifier - number_literal) < number_literal) )) (compound_statement "{\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }" { (expression_statement "uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;" (assignment_expression "uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1" identifier = (binary_expression "0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1" (binary_expression "0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f)" number_literal >> (parenthesized_expression "((byte)(iVar1 - 0x552U) & 0x1f)" ( (binary_expression "(byte)(iVar1 - 0x552U) & 0x1f" (call_expression "(byte)(iVar1 - 0x552U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar1 - 0x552U)" ( (binary_expression "iVar1 - 0x552U" identifier - number_literal) ))) & number_literal) ))) & number_literal)) ;) })) (return_statement "return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;" return (binary_expression "(((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1" (parenthesized_expression "(((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2)" ( (binary_expression "((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2" (parenthesized_expression "((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2)" ( (binary_expression "(((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2" (parenthesized_expression "(((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20)" ( (binary_expression "((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20" (parenthesized_expression "((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf)" ( (binary_expression "(iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf" (parenthesized_expression "(iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2)" ( (binary_expression "iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2" (binary_expression "iVar1 - 0x584U < 3" (binary_expression "iVar1 - 0x584U" identifier - number_literal) < number_literal) || (binary_expression "iVar1 - 0x12U < 2" (binary_expression "iVar1 - 0x12U" identifier - number_literal) < number_literal)) )) || (binary_expression "iVar1 == 0xf" identifier == number_literal)) )) || (binary_expression "iVar1 - 0x563U < 0x20" (binary_expression "iVar1 - 0x563U" identifier - number_literal) < number_literal)) )) || (binary_expression "iVar1 - 0x5a3U < 2" (binary_expression "iVar1 - 0x5a3U" identifier - number_literal) < number_literal)) )) | identifier) )) ^ number_literal) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nint tc_s390_fix_adjustable(fixS *fixP)\n\n{\n  bfd_reloc_code_real_type bVar1;\n  segT paVar2;\n  uint uVar3;\n  \n  if ((undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1) != (undefined1  [68])0x0)\n  {\n    paVar2 = S_GET_SEGMENT(fixP->fx_addsy);\n    if ((paVar2->flags & 0x800000) != 0) {\n      return 0;\n    }\n  }\n  bVar1 = fixP->fx_r_type;\n  uVar3 = 0;\n  if (bVar1 - BFD_RELOC_390_GOT12 < 0x10) {\n    uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1;\n  }\n  return (((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3) ^ 1;\n}\n\n" comment comment (function_definition "int tc_s390_fix_adjustable(fixS *fixP)\n\n{\n  bfd_reloc_code_real_type bVar1;\n  segT paVar2;\n  uint uVar3;\n  \n  if ((undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1) != (undefined1  [68])0x0)\n  {\n    paVar2 = S_GET_SEGMENT(fixP->fx_addsy);\n    if ((paVar2->flags & 0x800000) != 0) {\n      return 0;\n    }\n  }\n  bVar1 = fixP->fx_r_type;\n  uVar3 = 0;\n  if (bVar1 - BFD_RELOC_390_GOT12 < 0x10) {\n    uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1;\n  }\n  return (((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3) ^ 1;\n}" primitive_type (function_declarator "tc_s390_fix_adjustable(fixS *fixP)" identifier (parameter_list "(fixS *fixP)" ( (parameter_declaration "fixS *fixP" type_identifier (pointer_declarator "*fixP" * identifier)) ))) (compound_statement "{\n  bfd_reloc_code_real_type bVar1;\n  segT paVar2;\n  uint uVar3;\n  \n  if ((undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1) != (undefined1  [68])0x0)\n  {\n    paVar2 = S_GET_SEGMENT(fixP->fx_addsy);\n    if ((paVar2->flags & 0x800000) != 0) {\n      return 0;\n    }\n  }\n  bVar1 = fixP->fx_r_type;\n  uVar3 = 0;\n  if (bVar1 - BFD_RELOC_390_GOT12 < 0x10) {\n    uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1;\n  }\n  return (((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3) ^ 1;\n}" { (declaration "bfd_reloc_code_real_type bVar1;" type_identifier identifier ;) (declaration "segT paVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (if_statement "if ((undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1) != (undefined1  [68])0x0)\n  {\n    paVar2 = S_GET_SEGMENT(fixP->fx_addsy);\n    if ((paVar2->flags & 0x800000) != 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "((undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1) != (undefined1  [68])0x0)" ( (binary_expression "(undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1) != (undefined1  [68])0x0" (call_expression "(undefined1  [68])((undefined1  [68])*fixP & (undefined1  [68])0x1)" (parenthesized_expression "(undefined1  [68])" ( (subscript_expression "undefined1  [68]" identifier [ number_literal ]) )) (argument_list "((undefined1  [68])*fixP & (undefined1  [68])0x1)" ( (binary_expression "(undefined1  [68])*fixP & (undefined1  [68])0x1" (binary_expression "(undefined1  [68])*fixP" (parenthesized_expression "(undefined1  [68])" ( (subscript_expression "undefined1  [68]" identifier [ number_literal ]) )) * identifier) & (cast_expression "(undefined1  [68])0x1" ( (type_descriptor "undefined1  [68]" type_identifier (abstract_array_declarator "[68]" [ number_literal ])) ) number_literal)) ))) != (cast_expression "(undefined1  [68])0x0" ( (type_descriptor "undefined1  [68]" type_identifier (abstract_array_declarator "[68]" [ number_literal ])) ) number_literal)) )) (compound_statement "{\n    paVar2 = S_GET_SEGMENT(fixP->fx_addsy);\n    if ((paVar2->flags & 0x800000) != 0) {\n      return 0;\n    }\n  }" { (expression_statement "paVar2 = S_GET_SEGMENT(fixP->fx_addsy);" (assignment_expression "paVar2 = S_GET_SEGMENT(fixP->fx_addsy)" identifier = (call_expression "S_GET_SEGMENT(fixP->fx_addsy)" identifier (argument_list "(fixP->fx_addsy)" ( (field_expression "fixP->fx_addsy" identifier -> field_identifier) )))) ;) (if_statement "if ((paVar2->flags & 0x800000) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((paVar2->flags & 0x800000) != 0)" ( (binary_expression "(paVar2->flags & 0x800000) != 0" (parenthesized_expression "(paVar2->flags & 0x800000)" ( (binary_expression "paVar2->flags & 0x800000" (field_expression "paVar2->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "bVar1 = fixP->fx_r_type;" (assignment_expression "bVar1 = fixP->fx_r_type" identifier = (field_expression "fixP->fx_r_type" identifier -> field_identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (bVar1 - BFD_RELOC_390_GOT12 < 0x10) {\n    uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1;\n  }" if (parenthesized_expression "(bVar1 - BFD_RELOC_390_GOT12 < 0x10)" ( (binary_expression "bVar1 - BFD_RELOC_390_GOT12 < 0x10" (binary_expression "bVar1 - BFD_RELOC_390_GOT12" identifier - identifier) < number_literal) )) (compound_statement "{\n    uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1;\n  }" { (expression_statement "uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1;" (assignment_expression "uVar3 = 0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1" identifier = (binary_expression "0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f) & 1" (binary_expression "0xaa83U >> ((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f)" number_literal >> (parenthesized_expression "((byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f)" ( (binary_expression "(byte)(bVar1 - BFD_RELOC_390_GOT12) & 0x1f" (call_expression "(byte)(bVar1 - BFD_RELOC_390_GOT12)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - BFD_RELOC_390_GOT12)" ( (binary_expression "bVar1 - BFD_RELOC_390_GOT12" identifier - identifier) ))) & number_literal) ))) & number_literal)) ;) })) (return_statement "return (((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3) ^ 1;" return (binary_expression "(((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3) ^ 1" (parenthesized_expression "(((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3)" ( (binary_expression "((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2) | uVar3" (parenthesized_expression "((((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2)" ( (binary_expression "(((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20) ||\n          bVar1 - BFD_RELOC_VTABLE_INHERIT < 2" (parenthesized_expression "(((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20)" ( (binary_expression "((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL) || bVar1 - BFD_RELOC_390_GOT64 < 0x20" (parenthesized_expression "((bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL)" ( (binary_expression "(bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2) ||\n            bVar1 == BFD_RELOC_32_GOT_PCREL" (parenthesized_expression "(bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2)" ( (binary_expression "bVar1 - BFD_RELOC_390_GOT20 < 3 || bVar1 - BFD_RELOC_32_GOTOFF < 2" (binary_expression "bVar1 - BFD_RELOC_390_GOT20 < 3" (binary_expression "bVar1 - BFD_RELOC_390_GOT20" identifier - identifier) < number_literal) || (binary_expression "bVar1 - BFD_RELOC_32_GOTOFF < 2" (binary_expression "bVar1 - BFD_RELOC_32_GOTOFF" identifier - identifier) < number_literal)) )) || (binary_expression "bVar1 == BFD_RELOC_32_GOT_PCREL" identifier == identifier)) )) || (binary_expression "bVar1 - BFD_RELOC_390_GOT64 < 0x20" (binary_expression "bVar1 - BFD_RELOC_390_GOT64" identifier - identifier) < number_literal)) )) || (binary_expression "bVar1 - BFD_RELOC_VTABLE_INHERIT < 2" (binary_expression "bVar1 - BFD_RELOC_VTABLE_INHERIT" identifier - identifier) < number_literal)) )) | identifier) )) ^ number_literal) ;) })))
(translation_unit "uint FUN_00043310(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}\n\n" (function_definition "uint FUN_00043310(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}" type_identifier (function_declarator "FUN_00043310(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (if_statement "if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_000374b0(*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x16) & 0x80) != 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x16) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x16) & 0x80)" ( (binary_expression "*(byte *)(iVar1 + 0x16) & 0x80" (pointer_expression "*(byte *)(iVar1 + 0x16)" * (cast_expression "(byte *)(iVar1 + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x16)" ( (binary_expression "iVar1 + 0x16" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x30);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x30)" identifier = (pointer_expression "*(int *)(param_1 + 0x30)" * (cast_expression "(int *)(param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }" if (parenthesized_expression "(iVar1 - 0x552U < 0x10)" ( (binary_expression "iVar1 - 0x552U < 0x10" (binary_expression "iVar1 - 0x552U" identifier - number_literal) < number_literal) )) (compound_statement "{\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }" { (expression_statement "uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;" (assignment_expression "uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1" identifier = (binary_expression "0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1" (binary_expression "0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f)" number_literal >> (parenthesized_expression "((byte)(iVar1 - 0x552U) & 0x1f)" ( (binary_expression "(byte)(iVar1 - 0x552U) & 0x1f" (call_expression "(byte)(iVar1 - 0x552U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar1 - 0x552U)" ( (binary_expression "iVar1 - 0x552U" identifier - number_literal) ))) & number_literal) ))) & number_literal)) ;) })) (return_statement "return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;" return (binary_expression "(((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1" (parenthesized_expression "(((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2)" ( (binary_expression "((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2" (parenthesized_expression "((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2)" ( (binary_expression "(((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2" (parenthesized_expression "(((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20)" ( (binary_expression "((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20" (parenthesized_expression "((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf)" ( (binary_expression "(iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf" (parenthesized_expression "(iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2)" ( (binary_expression "iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2" (binary_expression "iVar1 - 0x584U < 3" (binary_expression "iVar1 - 0x584U" identifier - number_literal) < number_literal) || (binary_expression "iVar1 - 0x12U < 2" (binary_expression "iVar1 - 0x12U" identifier - number_literal) < number_literal)) )) || (binary_expression "iVar1 == 0xf" identifier == number_literal)) )) || (binary_expression "iVar1 - 0x563U < 0x20" (binary_expression "iVar1 - 0x563U" identifier - number_literal) < number_literal)) )) || (binary_expression "iVar1 - 0x5a3U < 2" (binary_expression "iVar1 - 0x5a3U" identifier - number_literal) < number_literal)) )) | identifier) )) ^ number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (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 { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) & LIT) ))) & LIT)) ;) })) (return_statement return (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT - LIT) < LIT) || (binary_expression (binary_expression IDENT - LIT) < LIT)) )) || (binary_expression IDENT == LIT)) )) || (binary_expression (binary_expression IDENT - LIT) < LIT)) )) || (binary_expression (binary_expression IDENT - LIT) < LIT)) )) | IDENT) )) ^ LIT) ;) })))
(function_definition "uint FUN_00043310(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}" (type_identifier "uint") (function_declarator "FUN_00043310(byte *param_1)" (identifier "FUN_00043310") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  \n  if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0x30);\n  uVar2 = 0;\n  if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }\n  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (if_statement "if ((*param_1 & 1) != 0) {\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "((*param_1 & 1) != 0)" (( "(") (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" (( "(") (binary_expression "*param_1 & 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));\n    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc))" (identifier "iVar1") (= "=") (call_expression "FUN_000374b0(*(undefined4 *)(param_1 + 0xc))" (identifier "FUN_000374b0") (argument_list "(*(undefined4 *)(param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (if_statement "if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar1 + 0x16) & 0x80) != 0)" (( "(") (binary_expression "(*(byte *)(iVar1 + 0x16) & 0x80) != 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x16) & 0x80)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x16) & 0x80" (pointer_expression "*(byte *)(iVar1 + 0x16)" (* "*") (cast_expression "(byte *)(iVar1 + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x16)" (( "(") (binary_expression "iVar1 + 0x16" (identifier "iVar1") (+ "+") (number_literal "0x16")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar1 = *(int *)(param_1 + 0x30);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x30)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x30)" (* "*") (cast_expression "(int *)(param_1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar1 - 0x552U < 0x10) {\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }" (if "if") (parenthesized_expression "(iVar1 - 0x552U < 0x10)" (( "(") (binary_expression "iVar1 - 0x552U < 0x10" (binary_expression "iVar1 - 0x552U" (identifier "iVar1") (- "-") (number_literal "0x552U")) (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;\n  }" ({ "{") (expression_statement "uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;" (assignment_expression "uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1" (identifier "uVar2") (= "=") (binary_expression "0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1" (binary_expression "0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f)" (number_literal "0xaa83U") (>> ">>") (parenthesized_expression "((byte)(iVar1 - 0x552U) & 0x1f)" (( "(") (binary_expression "(byte)(iVar1 - 0x552U) & 0x1f" (call_expression "(byte)(iVar1 - 0x552U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(iVar1 - 0x552U)" (( "(") (binary_expression "iVar1 - 0x552U" (identifier "iVar1") (- "-") (number_literal "0x552U")) () ")"))) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (return_statement "return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;" (return "return") (binary_expression "(((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2) ^ 1" (parenthesized_expression "(((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2)" (( "(") (binary_expression "((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2) | uVar2" (parenthesized_expression "((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2)" (( "(") (binary_expression "(((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||\n          iVar1 - 0x5a3U < 2" (parenthesized_expression "(((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20)" (( "(") (binary_expression "((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20" (parenthesized_expression "((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf)" (( "(") (binary_expression "(iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf" (parenthesized_expression "(iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2)" (( "(") (binary_expression "iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2" (binary_expression "iVar1 - 0x584U < 3" (binary_expression "iVar1 - 0x584U" (identifier "iVar1") (- "-") (number_literal "0x584U")) (< "<") (number_literal "3")) (|| "||") (binary_expression "iVar1 - 0x12U < 2" (binary_expression "iVar1 - 0x12U" (identifier "iVar1") (- "-") (number_literal "0x12U")) (< "<") (number_literal "2"))) () ")")) (|| "||") (binary_expression "iVar1 == 0xf" (identifier "iVar1") (== "==") (number_literal "0xf"))) () ")")) (|| "||") (binary_expression "iVar1 - 0x563U < 0x20" (binary_expression "iVar1 - 0x563U" (identifier "iVar1") (- "-") (number_literal "0x563U")) (< "<") (number_literal "0x20"))) () ")")) (|| "||") (binary_expression "iVar1 - 0x5a3U < 2" (binary_expression "iVar1 - 0x5a3U" (identifier "iVar1") (- "-") (number_literal "0x5a3U")) (< "<") (number_literal "2"))) () ")")) (| "|") (identifier "uVar2")) () ")")) (^ "^") (number_literal "1")) (; ";")) (} "}")))

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

int function_1(type_1 *var_1)

{
  type_2 var_3;
  type_3 paVar2;
  type_4 var_10;
  
  if ((type_5  [68])((type_5  [68])*var_1 & (type_5  [68])0x1) != (type_5  [68])0x0)
  {
    paVar2 = var_2(var_1->fx_addsy);
    if ((paVar2->flags & 0x800000) != 0) {
      return 0;
    }
  }
  var_3 = var_1->fx_r_type;
  var_10 = 0;
  if (var_3 - var_4 < 0x10) {
    var_10 = 0xaa83U >> ((byte)(var_3 - var_4) & 0x1f) & 1;
  }
  return (((((var_3 - var_5 < 3 || var_3 - var_6 < 2) ||
            var_3 == var_7) || var_3 - var_8 < 0x20) ||
          var_3 - var_9 < 2) | var_10) ^ 1;
}


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

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

uint MASKED(byte *param_1)

{
  int iVar1;
  uint uVar2;
  
  if ((*param_1 & 1) != 0) {
    iVar1 = FUN_000374b0(*(undefined4 *)(param_1 + 0xc));
    if ((*(byte *)(iVar1 + 0x16) & 0x80) != 0) {
      return 0;
    }
  }
  iVar1 = *(int *)(param_1 + 0x30);
  uVar2 = 0;
  if (iVar1 - 0x552U < 0x10) {
    uVar2 = 0xaa83U >> ((byte)(iVar1 - 0x552U) & 0x1f) & 1;
  }
  return (((((iVar1 - 0x584U < 3 || iVar1 - 0x12U < 2) || iVar1 == 0xf) || iVar1 - 0x563U < 0x20) ||
          iVar1 - 0x5a3U < 2) | uVar2) ^ 1;
}

