
int operand_type_register_match
              (i386_operand_type g0,i386_operand_type t0,i386_operand_type g1,i386_operand_type t1)

{
  byte bVar1;
  byte bVar2;
  int unaff_EDI;
  ulonglong uVar3;
  byte local_1c;
  
  uVar3 = __x86_get_pc_thunk_di();
  if (((((uVar3 & 5) != 0) ||
       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&
        (((ulonglong)g0 & 4) != 0)))) &&
      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||
       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&
        (((ulonglong)g1 & 4) != 0)))))) &&
     ((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||
      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {
    bVar1 = g1._3_1_;
    bVar2 = g0._3_1_;
    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&
        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&
          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&
         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&
          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&
       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)) {
      return 1;
    }
    *(undefined4 *)(unaff_EDI + 0x45071) = 2;
    return 0;
  }
  return 1;
}



undefined4
FUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)

{
  byte bVar1;
  byte bVar2;
  int unaff_EDI;
  ulonglong uVar3;
  
  uVar3 = FUN_0003398f();
  if (((((uVar3 & 5) != 0) ||
       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&
        ((param_1 & 4) != 0)))) &&
      (((param_3 & 5) != 0 ||
       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&
     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||
      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {
    bVar1 = (byte)(param_5 >> 0x18);
    bVar2 = (byte)(param_1 >> 0x18);
    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&
        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&
          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&
         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&
          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&
       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {
      return 1;
    }
    *(undefined4 *)(unaff_EDI + 0x45071) = 2;
    return 0;
  }
  return 1;
}


PUSH EBP
PUSH EDI
CALL 0x0003398f
ADD EDI,0x3bfb9
PUSH ESI
PUSH EBX
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x24]
MOV EBP,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x4],ESI
MOV ESI,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x8],EBP
MOV dword ptr [ESP],ESI
MOV ESI,dword ptr [ESP + 0x30]
TEST AL,0x5
JNZ 0x0003f099
MOV EBP,EAX
SHR EBP,0x10
AND EBP,0x5f
JZ 0x0003f170
TEST DL,0x40
JNZ 0x0003f170
TEST BL,0x4
JZ 0x0003f170
TEST CL,0x5
JNZ 0x0003f0c2
MOV EBP,ECX
SHR EBP,0x10
AND EBP,0x5f
JZ 0x0003f170
TEST byte ptr [ESP],0x40
JNZ 0x0003f170
TEST ESI,0x4
JZ 0x0003f170
SHR EAX,0x18
SHR ECX,0x18
XOR AL,CL
JS 0x0003f0dd
XOR DL,byte ptr [ESP]
AND EAX,0x60
AND EDX,0x3a
OR DL,AL
JZ 0x0003f170
MOV EAX,ESI
MOV EDX,EBX
SHR EAX,0x1d
SHR EDX,0x1d
AND EAX,0x1
TEST AL,DL
JNZ 0x0003f153
MOV EAX,ESI
MOV EDX,EBX
SHR EAX,0x1e
SHR EDX,0x1e
AND EAX,0x1
TEST AL,DL
JNZ 0x0003f153
MOV EAX,ESI
SHR EBX,0x1f
SHR EAX,0x1f
TEST BL,AL
JNZ 0x0003f153
MOV ECX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESP + 0x4]
MOV EAX,ECX
MOV EDX,EBX
SHR EAX,0x1
SHR EDX,0x1
AND EAX,0x1
TEST AL,DL
JNZ 0x0003f153
MOV EAX,ECX
MOV EDX,EBX
SHR EAX,0x3
SHR EDX,0x3
AND EAX,0x1
TEST AL,DL
JNZ 0x0003f153
MOV EAX,ECX
MOV EDX,EBX
SHR EAX,0x4
SHR EDX,0x4
AND EAX,0x1
TEST AL,DL
JNZ 0x0003f153
MOV EAX,ECX
SHR EBX,0x5
SHR EAX,0x5
AND EAX,0x1
TEST AL,BL
JZ 0x0003f170
MOV dword ptr [EDI + 0x90b8],0x2
ADD ESP,0xc
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0xc
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "undefined4\nFUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}\n\n" (function_definition "undefined4\nFUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "byte param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = FUN_0003398f();" (assignment_expression "uVar3 = FUN_0003398f()" identifier = (call_expression "FUN_0003398f()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" if (parenthesized_expression "(((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0))))" ( (binary_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" (parenthesized_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))))))" ( (binary_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))" (parenthesized_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0))))" ( (binary_expression "((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))" (parenthesized_expression "((uVar3 & 5) != 0)" ( (binary_expression "(uVar3 & 5) != 0" (parenthesized_expression "(uVar3 & 5)" ( (binary_expression "uVar3 & 5" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))" ( (parenthesized_expression "((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0))" ( (binary_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)" (parenthesized_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0))" ( (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)" (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0" (parenthesized_expression "((uint)uVar3 >> 0x10 & 0x5f)" ( (binary_expression "(uint)uVar3 >> 0x10 & 0x5f" (binary_expression "(uint)uVar3 >> 0x10" (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) != number_literal) && (parenthesized_expression "((uVar3 & 0x4000000000) == 0)" ( (binary_expression "(uVar3 & 0x4000000000) == 0" (parenthesized_expression "(uVar3 & 0x4000000000)" ( (binary_expression "uVar3 & 0x4000000000" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((param_1 & 4) != 0)" ( (binary_expression "(param_1 & 4) != 0" (parenthesized_expression "(param_1 & 4)" ( (binary_expression "param_1 & 4" identifier & number_literal) )) != number_literal) ))) )) ))) )) && (parenthesized_expression "(((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))" ( (parenthesized_expression "((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))))" ( (binary_expression "(param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))" (binary_expression "(param_3 & 5) != 0" (parenthesized_expression "(param_3 & 5)" ( (binary_expression "param_3 & 5" identifier & number_literal) )) != number_literal) || (parenthesized_expression "((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))" ( (parenthesized_expression "(((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))" ( (binary_expression "((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)" (parenthesized_expression "((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0))" ( (binary_expression "(param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)" (binary_expression "(param_3 >> 0x10 & 0x5f) != 0" (parenthesized_expression "(param_3 >> 0x10 & 0x5f)" ( (binary_expression "param_3 >> 0x10 & 0x5f" (binary_expression "param_3 >> 0x10" identifier >> number_literal) & number_literal) )) != number_literal) && (parenthesized_expression "((param_4 & 0x40) == 0)" ( (binary_expression "(param_4 & 0x40) == 0" (parenthesized_expression "(param_4 & 0x40)" ( (binary_expression "param_4 & 0x40" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((param_5 & 4) != 0)" ( (binary_expression "(param_5 & 4) != 0" (parenthesized_expression "(param_5 & 4)" ( (binary_expression "param_5 & 4" identifier & number_literal) )) != number_literal) ))) )) ))) )) ))) )) && (parenthesized_expression "((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" ( (parenthesized_expression "(bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0))" ( (comma_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (assignment_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18)" identifier = (binary_expression "(byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18)" (call_expression "(byte)(uVar3 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) ))) ^ (call_expression "(byte)(param_3 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0x18)" ( (binary_expression "param_3 >> 0x18" identifier >> number_literal) ))))) , (binary_expression "(char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" ( (binary_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0" (binary_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0" (parenthesized_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a)" ( (binary_expression "((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a" (parenthesized_expression "((byte)(uVar3 >> 0x20) ^ param_4)" ( (binary_expression "(byte)(uVar3 >> 0x20) ^ param_4" (call_expression "(byte)(uVar3 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar3 >> 0x20)" ( (binary_expression "uVar3 >> 0x20" identifier >> number_literal) ))) ^ identifier) )) & number_literal) )) != number_literal) || (binary_expression "(bVar2 & 0x60) != 0" (parenthesized_expression "(bVar2 & 0x60)" ( (binary_expression "bVar2 & 0x60" identifier & number_literal) )) != number_literal)) )))) )) ))) )) (compound_statement "{\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" { (expression_statement "bVar1 = (byte)(param_5 >> 0x18);" (assignment_expression "bVar1 = (byte)(param_5 >> 0x18)" identifier = (call_expression "(byte)(param_5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_5 >> 0x18)" ( (binary_expression "param_5 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "bVar2 = (byte)(param_1 >> 0x18);" (assignment_expression "bVar2 = (byte)(param_1 >> 0x18)" identifier = (call_expression "(byte)(param_1 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_1 >> 0x18)" ( (binary_expression "param_1 >> 0x18" identifier >> number_literal) )))) ;) (if_statement "if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }" if (parenthesized_expression "((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0))" ( (binary_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)" (parenthesized_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))))))" ( (binary_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))" (parenthesized_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0)" ( (binary_expression "(bVar1 >> 5 & 1 & bVar2 >> 5) == 0" (parenthesized_expression "(bVar1 >> 5 & 1 & bVar2 >> 5)" ( (binary_expression "bVar1 >> 5 & 1 & bVar2 >> 5" (binary_expression "bVar1 >> 5 & 1" (binary_expression "bVar1 >> 5" identifier >> number_literal) & number_literal) & (binary_expression "bVar2 >> 5" identifier >> number_literal)) )) == number_literal) )) && (parenthesized_expression "(((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))" ( (parenthesized_expression "((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))))" ( (binary_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))" (parenthesized_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0))" ( (binary_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)" (parenthesized_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1)))" ( (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))" (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0" (parenthesized_expression "(bVar1 >> 6 & 1 & bVar2 >> 6)" ( (binary_expression "bVar1 >> 6 & 1 & bVar2 >> 6" (binary_expression "bVar1 >> 6 & 1" (binary_expression "bVar1 >> 6" identifier >> number_literal) & number_literal) & (binary_expression "bVar2 >> 6" identifier >> number_literal)) )) == number_literal) && (parenthesized_expression "(-1 < (char)(bVar2 & bVar1))" ( (binary_expression "-1 < (char)(bVar2 & bVar1)" number_literal < (cast_expression "(char)(bVar2 & bVar1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(bVar2 & bVar1)" ( (binary_expression "bVar2 & bVar1" identifier & identifier) )))) ))) )) && (parenthesized_expression "(((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)" ( (binary_expression "((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0" (parenthesized_expression "((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1))" ( (binary_expression "(byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)" (binary_expression "(byte)(param_6 >> 1) & 1" (call_expression "(byte)(param_6 >> 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 1)" ( (binary_expression "param_6 >> 1" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 1)" ( (binary_expression "param_2 >> 1" identifier >> number_literal) )))) )) == number_literal) ))) )) && (parenthesized_expression "((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))" ( (parenthesized_expression "(((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))" ( (binary_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)" (binary_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0" (parenthesized_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3))" ( (binary_expression "(byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)" (binary_expression "(byte)(param_6 >> 3) & 1" (call_expression "(byte)(param_6 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 3)" ( (binary_expression "param_6 >> 3" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 3)" ( (binary_expression "param_2 >> 3" identifier >> number_literal) )))) )) == number_literal) && (parenthesized_expression "(((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)" ( (binary_expression "((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0" (parenthesized_expression "((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4))" ( (binary_expression "(byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)" (binary_expression "(byte)(param_6 >> 4) & 1" (call_expression "(byte)(param_6 >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 4)" ( (binary_expression "param_6 >> 4" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 4)" ( (binary_expression "param_2 >> 4" identifier >> number_literal) )))) )) == number_literal) ))) )) ))) )) ))) )) && (parenthesized_expression "(((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)" ( (binary_expression "((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0" (parenthesized_expression "((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5))" ( (binary_expression "(byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)" (binary_expression "(byte)(param_6 >> 5) & 1" (call_expression "(byte)(param_6 >> 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 5)" ( (binary_expression "param_6 >> 5" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 5)" ( (binary_expression "param_2 >> 5" identifier >> number_literal) )))) )) == number_literal) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*(undefined4 *)(unaff_EDI + 0x45071) = 2;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x45071) = 2" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x45071)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x45071)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x45071)" ( (binary_expression "unaff_EDI + 0x45071" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "int operand_type_register_match\n              (i386_operand_type g0,i386_operand_type t0,i386_operand_type g1,i386_operand_type t1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  byte local_1c;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = g1._3_1_;\n    bVar2 = g0._3_1_;\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}\n\n" (function_definition "int operand_type_register_match\n              (i386_operand_type g0,i386_operand_type t0,i386_operand_type g1,i386_operand_type t1)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  byte local_1c;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = g1._3_1_;\n    bVar2 = g0._3_1_;\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" primitive_type (function_declarator "operand_type_register_match\n              (i386_operand_type g0,i386_operand_type t0,i386_operand_type g1,i386_operand_type t1)" identifier (parameter_list "(i386_operand_type g0,i386_operand_type t0,i386_operand_type g1,i386_operand_type t1)" ( (parameter_declaration "i386_operand_type g0" type_identifier identifier) , (parameter_declaration "i386_operand_type t0" type_identifier identifier) , (parameter_declaration "i386_operand_type g1" type_identifier identifier) , (parameter_declaration "i386_operand_type t1" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  byte local_1c;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = g1._3_1_;\n    bVar2 = g0._3_1_;\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (declaration "byte local_1c;" type_identifier identifier ;) (expression_statement "uVar3 = __x86_get_pc_thunk_di();" (assignment_expression "uVar3 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = g1._3_1_;\n    bVar2 = g0._3_1_;\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" if (parenthesized_expression "(((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0))))" ( (binary_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" (parenthesized_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0))))))" ( (binary_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))) &&\n      ((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))" (parenthesized_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0))))" ( (binary_expression "((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))" (parenthesized_expression "((uVar3 & 5) != 0)" ( (binary_expression "(uVar3 & 5) != 0" (parenthesized_expression "(uVar3 & 5)" ( (binary_expression "uVar3 & 5" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)))" ( (parenthesized_expression "((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0))" ( (binary_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        (((ulonglong)g0 & 4) != 0)" (parenthesized_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0))" ( (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)" (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0" (parenthesized_expression "((uint)uVar3 >> 0x10 & 0x5f)" ( (binary_expression "(uint)uVar3 >> 0x10 & 0x5f" (binary_expression "(uint)uVar3 >> 0x10" (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) != number_literal) && (parenthesized_expression "((uVar3 & 0x4000000000) == 0)" ( (binary_expression "(uVar3 & 0x4000000000) == 0" (parenthesized_expression "(uVar3 & 0x4000000000)" ( (binary_expression "uVar3 & 0x4000000000" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(((ulonglong)g0 & 4) != 0)" ( (binary_expression "((ulonglong)g0 & 4) != 0" (parenthesized_expression "((ulonglong)g0 & 4)" ( (binary_expression "(ulonglong)g0 & 4" (cast_expression "(ulonglong)g0" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) ))) )) && (parenthesized_expression "((local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))))" ( (parenthesized_expression "(local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0))))" ( (comma_expression "local_1c = t0._4_1_, ((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))" (assignment_expression "local_1c = t0._4_1_" identifier = (field_expression "t0._4_1_" identifier . field_identifier)) , (binary_expression "((ulonglong)t0 & 5) != 0 ||\n       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))" (binary_expression "((ulonglong)t0 & 5) != 0" (parenthesized_expression "((ulonglong)t0 & 5)" ( (binary_expression "(ulonglong)t0 & 5" (cast_expression "(ulonglong)t0" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) || (parenthesized_expression "((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)))" ( (parenthesized_expression "(((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0))" ( (binary_expression "((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)) &&\n        (((ulonglong)g1 & 4) != 0)" (parenthesized_expression "((t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0))" ( (binary_expression "(t0.array[0] >> 0x10 & 0x5f) != 0 && (((ulonglong)t0 & 0x4000000000) == 0)" (binary_expression "(t0.array[0] >> 0x10 & 0x5f) != 0" (parenthesized_expression "(t0.array[0] >> 0x10 & 0x5f)" ( (binary_expression "t0.array[0] >> 0x10 & 0x5f" (binary_expression "t0.array[0] >> 0x10" (subscript_expression "t0.array[0]" (field_expression "t0.array" identifier . field_identifier) [ number_literal ]) >> number_literal) & number_literal) )) != number_literal) && (parenthesized_expression "(((ulonglong)t0 & 0x4000000000) == 0)" ( (binary_expression "((ulonglong)t0 & 0x4000000000) == 0" (parenthesized_expression "((ulonglong)t0 & 0x4000000000)" ( (binary_expression "(ulonglong)t0 & 0x4000000000" (cast_expression "(ulonglong)t0" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(((ulonglong)g1 & 4) != 0)" ( (binary_expression "((ulonglong)g1 & 4) != 0" (parenthesized_expression "((ulonglong)g1 & 4)" ( (binary_expression "(ulonglong)g1 & 4" (cast_expression "(ulonglong)g1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) )))) )) ))) )) && (parenthesized_expression "((bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" ( (parenthesized_expression "(bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0))" ( (comma_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_, (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (assignment_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ t0._3_1_" identifier = (binary_expression "(byte)(uVar3 >> 0x18) ^ t0._3_1_" (call_expression "(byte)(uVar3 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) ))) ^ (field_expression "t0._3_1_" identifier . field_identifier))) , (binary_expression "(char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" ( (binary_expression "(((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0 || (bVar2 & 0x60) != 0" (binary_expression "(((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a) != 0" (parenthesized_expression "(((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a)" ( (binary_expression "((byte)(uVar3 >> 0x20) ^ local_1c) & 0x3a" (parenthesized_expression "((byte)(uVar3 >> 0x20) ^ local_1c)" ( (binary_expression "(byte)(uVar3 >> 0x20) ^ local_1c" (call_expression "(byte)(uVar3 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar3 >> 0x20)" ( (binary_expression "uVar3 >> 0x20" identifier >> number_literal) ))) ^ identifier) )) & number_literal) )) != number_literal) || (binary_expression "(bVar2 & 0x60) != 0" (parenthesized_expression "(bVar2 & 0x60)" ( (binary_expression "bVar2 & 0x60" identifier & number_literal) )) != number_literal)) )))) )) ))) )) (compound_statement "{\n    bVar1 = g1._3_1_;\n    bVar2 = g0._3_1_;\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" { (expression_statement "bVar1 = g1._3_1_;" (assignment_expression "bVar1 = g1._3_1_" identifier = (field_expression "g1._3_1_" identifier . field_identifier)) ;) (expression_statement "bVar2 = g0._3_1_;" (assignment_expression "bVar2 = g0._3_1_" identifier = (field_expression "g0._3_1_" identifier . field_identifier)) ;) (if_statement "if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)) {\n      return 1;\n    }" if (parenthesized_expression "((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0))" ( (binary_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))) &&\n       (((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)" (parenthesized_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0))))))" ( (binary_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))" (parenthesized_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0)" ( (binary_expression "(bVar1 >> 5 & 1 & bVar2 >> 5) == 0" (parenthesized_expression "(bVar1 >> 5 & 1 & bVar2 >> 5)" ( (binary_expression "bVar1 >> 5 & 1 & bVar2 >> 5" (binary_expression "bVar1 >> 5 & 1" (binary_expression "bVar1 >> 5" identifier >> number_literal) & number_literal) & (binary_expression "bVar2 >> 5" identifier >> number_literal)) )) == number_literal) )) && (parenthesized_expression "(((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))))" ( (parenthesized_expression "((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0))))" ( (binary_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)) &&\n         ((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))" (parenthesized_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0))" ( (binary_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)" (parenthesized_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1)))" ( (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))" (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0" (parenthesized_expression "(bVar1 >> 6 & 1 & bVar2 >> 6)" ( (binary_expression "bVar1 >> 6 & 1 & bVar2 >> 6" (binary_expression "bVar1 >> 6 & 1" (binary_expression "bVar1 >> 6" identifier >> number_literal) & number_literal) & (binary_expression "bVar2 >> 6" identifier >> number_literal)) )) == number_literal) && (parenthesized_expression "(-1 < (char)(bVar2 & bVar1))" ( (binary_expression "-1 < (char)(bVar2 & bVar1)" number_literal < (cast_expression "(char)(bVar2 & bVar1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(bVar2 & bVar1)" ( (binary_expression "bVar2 & bVar1" identifier & identifier) )))) ))) )) && (parenthesized_expression "(((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0)" ( (binary_expression "((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)) == 0" (parenthesized_expression "((byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1))" ( (binary_expression "(byte)(g1.array[1] >> 1) & 1 & (byte)(g0.array[1] >> 1)" (binary_expression "(byte)(g1.array[1] >> 1) & 1" (call_expression "(byte)(g1.array[1] >> 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g1.array[1] >> 1)" ( (binary_expression "g1.array[1] >> 1" (subscript_expression "g1.array[1]" (field_expression "g1.array" identifier . field_identifier) [ number_literal ]) >> number_literal) ))) & number_literal) & (call_expression "(byte)(g0.array[1] >> 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g0.array[1] >> 1)" ( (binary_expression "g0.array[1] >> 1" (subscript_expression "g0.array[1]" (field_expression "g0.array" identifier . field_identifier) [ number_literal ]) >> number_literal) )))) )) == number_literal) ))) )) && (parenthesized_expression "((((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)))" ( (parenthesized_expression "(((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0))" ( (binary_expression "((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0 &&\n          (((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)" (binary_expression "((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)) == 0" (parenthesized_expression "((byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3))" ( (binary_expression "(byte)(g1.array[1] >> 3) & 1 & (byte)(g0.array[1] >> 3)" (binary_expression "(byte)(g1.array[1] >> 3) & 1" (call_expression "(byte)(g1.array[1] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g1.array[1] >> 3)" ( (binary_expression "g1.array[1] >> 3" (subscript_expression "g1.array[1]" (field_expression "g1.array" identifier . field_identifier) [ number_literal ]) >> number_literal) ))) & number_literal) & (call_expression "(byte)(g0.array[1] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g0.array[1] >> 3)" ( (binary_expression "g0.array[1] >> 3" (subscript_expression "g0.array[1]" (field_expression "g0.array" identifier . field_identifier) [ number_literal ]) >> number_literal) )))) )) == number_literal) && (parenthesized_expression "(((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0)" ( (binary_expression "((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)) == 0" (parenthesized_expression "((byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4))" ( (binary_expression "(byte)(g1.array[1] >> 4) & 1 & (byte)(g0.array[1] >> 4)" (binary_expression "(byte)(g1.array[1] >> 4) & 1" (call_expression "(byte)(g1.array[1] >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g1.array[1] >> 4)" ( (binary_expression "g1.array[1] >> 4" (subscript_expression "g1.array[1]" (field_expression "g1.array" identifier . field_identifier) [ number_literal ]) >> number_literal) ))) & number_literal) & (call_expression "(byte)(g0.array[1] >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g0.array[1] >> 4)" ( (binary_expression "g0.array[1] >> 4" (subscript_expression "g0.array[1]" (field_expression "g0.array" identifier . field_identifier) [ number_literal ]) >> number_literal) )))) )) == number_literal) ))) )) ))) )) ))) )) && (parenthesized_expression "(((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0)" ( (binary_expression "((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)) == 0" (parenthesized_expression "((byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5))" ( (binary_expression "(byte)(g1.array[1] >> 5) & 1 & (byte)(g0.array[1] >> 5)" (binary_expression "(byte)(g1.array[1] >> 5) & 1" (call_expression "(byte)(g1.array[1] >> 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g1.array[1] >> 5)" ( (binary_expression "g1.array[1] >> 5" (subscript_expression "g1.array[1]" (field_expression "g1.array" identifier . field_identifier) [ number_literal ]) >> number_literal) ))) & number_literal) & (call_expression "(byte)(g0.array[1] >> 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(g0.array[1] >> 5)" ( (binary_expression "g0.array[1] >> 5" (subscript_expression "g0.array[1]" (field_expression "g0.array" identifier . field_identifier) [ number_literal ]) >> number_literal) )))) )) == number_literal) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*(undefined4 *)(unaff_EDI + 0x45071) = 2;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x45071) = 2" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x45071)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x45071)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x45071)" ( (binary_expression "unaff_EDI + 0x45071" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4\nFUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}\n\n" (function_definition "undefined4\nFUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "byte param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = FUN_0003398f();" (assignment_expression "uVar3 = FUN_0003398f()" identifier = (call_expression "FUN_0003398f()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" if (parenthesized_expression "(((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0))))" ( (binary_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" (parenthesized_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))))))" ( (binary_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))" (parenthesized_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0))))" ( (binary_expression "((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))" (parenthesized_expression "((uVar3 & 5) != 0)" ( (binary_expression "(uVar3 & 5) != 0" (parenthesized_expression "(uVar3 & 5)" ( (binary_expression "uVar3 & 5" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))" ( (parenthesized_expression "((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0))" ( (binary_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)" (parenthesized_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0))" ( (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)" (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0" (parenthesized_expression "((uint)uVar3 >> 0x10 & 0x5f)" ( (binary_expression "(uint)uVar3 >> 0x10 & 0x5f" (binary_expression "(uint)uVar3 >> 0x10" (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) != number_literal) && (parenthesized_expression "((uVar3 & 0x4000000000) == 0)" ( (binary_expression "(uVar3 & 0x4000000000) == 0" (parenthesized_expression "(uVar3 & 0x4000000000)" ( (binary_expression "uVar3 & 0x4000000000" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((param_1 & 4) != 0)" ( (binary_expression "(param_1 & 4) != 0" (parenthesized_expression "(param_1 & 4)" ( (binary_expression "param_1 & 4" identifier & number_literal) )) != number_literal) ))) )) ))) )) && (parenthesized_expression "(((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))" ( (parenthesized_expression "((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))))" ( (binary_expression "(param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))" (binary_expression "(param_3 & 5) != 0" (parenthesized_expression "(param_3 & 5)" ( (binary_expression "param_3 & 5" identifier & number_literal) )) != number_literal) || (parenthesized_expression "((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))" ( (parenthesized_expression "(((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))" ( (binary_expression "((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)" (parenthesized_expression "((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0))" ( (binary_expression "(param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)" (binary_expression "(param_3 >> 0x10 & 0x5f) != 0" (parenthesized_expression "(param_3 >> 0x10 & 0x5f)" ( (binary_expression "param_3 >> 0x10 & 0x5f" (binary_expression "param_3 >> 0x10" identifier >> number_literal) & number_literal) )) != number_literal) && (parenthesized_expression "((param_4 & 0x40) == 0)" ( (binary_expression "(param_4 & 0x40) == 0" (parenthesized_expression "(param_4 & 0x40)" ( (binary_expression "param_4 & 0x40" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((param_5 & 4) != 0)" ( (binary_expression "(param_5 & 4) != 0" (parenthesized_expression "(param_5 & 4)" ( (binary_expression "param_5 & 4" identifier & number_literal) )) != number_literal) ))) )) ))) )) ))) )) && (parenthesized_expression "((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" ( (parenthesized_expression "(bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0))" ( (comma_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (assignment_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18)" identifier = (binary_expression "(byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18)" (call_expression "(byte)(uVar3 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) ))) ^ (call_expression "(byte)(param_3 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0x18)" ( (binary_expression "param_3 >> 0x18" identifier >> number_literal) ))))) , (binary_expression "(char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" ( (binary_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0" (binary_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0" (parenthesized_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a)" ( (binary_expression "((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a" (parenthesized_expression "((byte)(uVar3 >> 0x20) ^ param_4)" ( (binary_expression "(byte)(uVar3 >> 0x20) ^ param_4" (call_expression "(byte)(uVar3 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar3 >> 0x20)" ( (binary_expression "uVar3 >> 0x20" identifier >> number_literal) ))) ^ identifier) )) & number_literal) )) != number_literal) || (binary_expression "(bVar2 & 0x60) != 0" (parenthesized_expression "(bVar2 & 0x60)" ( (binary_expression "bVar2 & 0x60" identifier & number_literal) )) != number_literal)) )))) )) ))) )) (compound_statement "{\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" { (expression_statement "bVar1 = (byte)(param_5 >> 0x18);" (assignment_expression "bVar1 = (byte)(param_5 >> 0x18)" identifier = (call_expression "(byte)(param_5 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_5 >> 0x18)" ( (binary_expression "param_5 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "bVar2 = (byte)(param_1 >> 0x18);" (assignment_expression "bVar2 = (byte)(param_1 >> 0x18)" identifier = (call_expression "(byte)(param_1 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_1 >> 0x18)" ( (binary_expression "param_1 >> 0x18" identifier >> number_literal) )))) ;) (if_statement "if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }" if (parenthesized_expression "((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0))" ( (binary_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)" (parenthesized_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))))))" ( (binary_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))" (parenthesized_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0)" ( (binary_expression "(bVar1 >> 5 & 1 & bVar2 >> 5) == 0" (parenthesized_expression "(bVar1 >> 5 & 1 & bVar2 >> 5)" ( (binary_expression "bVar1 >> 5 & 1 & bVar2 >> 5" (binary_expression "bVar1 >> 5 & 1" (binary_expression "bVar1 >> 5" identifier >> number_literal) & number_literal) & (binary_expression "bVar2 >> 5" identifier >> number_literal)) )) == number_literal) )) && (parenthesized_expression "(((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))" ( (parenthesized_expression "((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))))" ( (binary_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))" (parenthesized_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0))" ( (binary_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)" (parenthesized_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1)))" ( (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))" (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0" (parenthesized_expression "(bVar1 >> 6 & 1 & bVar2 >> 6)" ( (binary_expression "bVar1 >> 6 & 1 & bVar2 >> 6" (binary_expression "bVar1 >> 6 & 1" (binary_expression "bVar1 >> 6" identifier >> number_literal) & number_literal) & (binary_expression "bVar2 >> 6" identifier >> number_literal)) )) == number_literal) && (parenthesized_expression "(-1 < (char)(bVar2 & bVar1))" ( (binary_expression "-1 < (char)(bVar2 & bVar1)" number_literal < (cast_expression "(char)(bVar2 & bVar1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(bVar2 & bVar1)" ( (binary_expression "bVar2 & bVar1" identifier & identifier) )))) ))) )) && (parenthesized_expression "(((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)" ( (binary_expression "((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0" (parenthesized_expression "((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1))" ( (binary_expression "(byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)" (binary_expression "(byte)(param_6 >> 1) & 1" (call_expression "(byte)(param_6 >> 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 1)" ( (binary_expression "param_6 >> 1" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 1)" ( (binary_expression "param_2 >> 1" identifier >> number_literal) )))) )) == number_literal) ))) )) && (parenthesized_expression "((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))" ( (parenthesized_expression "(((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))" ( (binary_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)" (binary_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0" (parenthesized_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3))" ( (binary_expression "(byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)" (binary_expression "(byte)(param_6 >> 3) & 1" (call_expression "(byte)(param_6 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 3)" ( (binary_expression "param_6 >> 3" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 3)" ( (binary_expression "param_2 >> 3" identifier >> number_literal) )))) )) == number_literal) && (parenthesized_expression "(((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)" ( (binary_expression "((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0" (parenthesized_expression "((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4))" ( (binary_expression "(byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)" (binary_expression "(byte)(param_6 >> 4) & 1" (call_expression "(byte)(param_6 >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 4)" ( (binary_expression "param_6 >> 4" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 4)" ( (binary_expression "param_2 >> 4" identifier >> number_literal) )))) )) == number_literal) ))) )) ))) )) ))) )) && (parenthesized_expression "(((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)" ( (binary_expression "((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0" (parenthesized_expression "((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5))" ( (binary_expression "(byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)" (binary_expression "(byte)(param_6 >> 5) & 1" (call_expression "(byte)(param_6 >> 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_6 >> 5)" ( (binary_expression "param_6 >> 5" identifier >> number_literal) ))) & number_literal) & (call_expression "(byte)(param_2 >> 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 5)" ( (binary_expression "param_2 >> 5" identifier >> number_literal) )))) )) == number_literal) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*(undefined4 *)(unaff_EDI + 0x45071) = 2;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x45071) = 2" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x45071)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x45071)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x45071)" ( (binary_expression "unaff_EDI + 0x45071" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT) )) != LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) != LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) ))) )) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) ^ (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))))) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) || (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) ^ IDENT) )) & LIT) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (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 IDENT >> LIT)) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) & LIT) & (binary_expression IDENT >> LIT)) )) == LIT) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT & IDENT) )))) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) )) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) )) == LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) )) == LIT) ))) )) ))) )) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) )) == LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return LIT ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4\nFUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_0003f040(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)" (identifier "FUN_0003f040") (parameter_list "(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "byte param_4" (type_identifier "byte") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  int unaff_EDI;\n  ulonglong uVar3;\n  \n  uVar3 = FUN_0003398f();\n  if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }\n  return 1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "ulonglong uVar3;" (type_identifier "ulonglong") (identifier "uVar3") (; ";")) (expression_statement "uVar3 = FUN_0003398f();" (assignment_expression "uVar3 = FUN_0003398f()" (identifier "uVar3") (= "=") (call_expression "FUN_0003398f()" (identifier "FUN_0003398f") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" (if "if") (parenthesized_expression "(((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0))))" (( "(") (binary_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&\n     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" (parenthesized_expression "((((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))))))" (( "(") (binary_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))) &&\n      (((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))" (parenthesized_expression "(((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0))))" (( "(") (binary_expression "((uVar3 & 5) != 0) ||\n       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))" (parenthesized_expression "((uVar3 & 5) != 0)" (( "(") (binary_expression "(uVar3 & 5) != 0" (parenthesized_expression "(uVar3 & 5)" (( "(") (binary_expression "uVar3 & 5" (identifier "uVar3") (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)))" (( "(") (parenthesized_expression "((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0))" (( "(") (binary_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&\n        ((param_1 & 4) != 0)" (parenthesized_expression "(((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0))" (( "(") (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)" (binary_expression "((uint)uVar3 >> 0x10 & 0x5f) != 0" (parenthesized_expression "((uint)uVar3 >> 0x10 & 0x5f)" (( "(") (binary_expression "(uint)uVar3 >> 0x10 & 0x5f" (binary_expression "(uint)uVar3 >> 0x10" (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3")) (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0x5f")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((uVar3 & 0x4000000000) == 0)" (( "(") (binary_expression "(uVar3 & 0x4000000000) == 0" (parenthesized_expression "(uVar3 & 0x4000000000)" (( "(") (binary_expression "uVar3 & 0x4000000000" (identifier "uVar3") (& "&") (number_literal "0x4000000000")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((param_1 & 4) != 0)" (( "(") (binary_expression "(param_1 & 4) != 0" (parenthesized_expression "(param_1 & 4)" (( "(") (binary_expression "param_1 & 4" (identifier "param_1") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))" (( "(") (parenthesized_expression "((param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))))" (( "(") (binary_expression "(param_3 & 5) != 0 ||\n       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))" (binary_expression "(param_3 & 5) != 0" (parenthesized_expression "(param_3 & 5)" (( "(") (binary_expression "param_3 & 5" (identifier "param_3") (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))" (( "(") (parenthesized_expression "(((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0))" (( "(") (binary_expression "((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)" (parenthesized_expression "((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0))" (( "(") (binary_expression "(param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)" (binary_expression "(param_3 >> 0x10 & 0x5f) != 0" (parenthesized_expression "(param_3 >> 0x10 & 0x5f)" (( "(") (binary_expression "param_3 >> 0x10 & 0x5f" (binary_expression "param_3 >> 0x10" (identifier "param_3") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0x5f")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((param_4 & 0x40) == 0)" (( "(") (binary_expression "(param_4 & 0x40) == 0" (parenthesized_expression "(param_4 & 0x40)" (( "(") (binary_expression "param_4 & 0x40" (identifier "param_4") (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((param_5 & 4) != 0)" (( "(") (binary_expression "(param_5 & 4) != 0" (parenthesized_expression "(param_5 & 4)" (( "(") (binary_expression "param_5 & 4" (identifier "param_5") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))" (( "(") (parenthesized_expression "(bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0))" (( "(") (comma_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (assignment_expression "bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18)" (identifier "bVar2") (= "=") (binary_expression "(byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18)" (call_expression "(byte)(uVar3 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar3 >> 0x18)" (( "(") (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) () ")"))) (^ "^") (call_expression "(byte)(param_3 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_3 >> 0x18)" (( "(") (binary_expression "param_3 >> 0x18" (identifier "param_3") (>> ">>") (number_literal "0x18")) () ")"))))) (, ",") (binary_expression "(char)bVar2 < '\0' ||\n      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)" (( "(") (binary_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0" (binary_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0" (parenthesized_expression "(((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a)" (( "(") (binary_expression "((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a" (parenthesized_expression "((byte)(uVar3 >> 0x20) ^ param_4)" (( "(") (binary_expression "(byte)(uVar3 >> 0x20) ^ param_4" (call_expression "(byte)(uVar3 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar3 >> 0x20)" (( "(") (binary_expression "uVar3 >> 0x20" (identifier "uVar3") (>> ">>") (number_literal "0x20")) () ")"))) (^ "^") (identifier "param_4")) () ")")) (& "&") (number_literal "0x3a")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(bVar2 & 0x60) != 0" (parenthesized_expression "(bVar2 & 0x60)" (( "(") (binary_expression "bVar2 & 0x60" (identifier "bVar2") (& "&") (number_literal "0x60")) () ")")) (!= "!=") (number_literal "0"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    bVar1 = (byte)(param_5 >> 0x18);\n    bVar2 = (byte)(param_1 >> 0x18);\n    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }\n    *(undefined4 *)(unaff_EDI + 0x45071) = 2;\n    return 0;\n  }" ({ "{") (expression_statement "bVar1 = (byte)(param_5 >> 0x18);" (assignment_expression "bVar1 = (byte)(param_5 >> 0x18)" (identifier "bVar1") (= "=") (call_expression "(byte)(param_5 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_5 >> 0x18)" (( "(") (binary_expression "param_5 >> 0x18" (identifier "param_5") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar2 = (byte)(param_1 >> 0x18);" (assignment_expression "bVar2 = (byte)(param_1 >> 0x18)" (identifier "bVar2") (= "=") (call_expression "(byte)(param_1 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_1 >> 0x18)" (( "(") (binary_expression "param_1 >> 0x18" (identifier "param_1") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {\n      return 1;\n    }" (if "if") (parenthesized_expression "((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0))" (( "(") (binary_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&\n       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)" (parenthesized_expression "(((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))))))" (( "(") (binary_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&\n        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))" (parenthesized_expression "((bVar1 >> 5 & 1 & bVar2 >> 5) == 0)" (( "(") (binary_expression "(bVar1 >> 5 & 1 & bVar2 >> 5) == 0" (parenthesized_expression "(bVar1 >> 5 & 1 & bVar2 >> 5)" (( "(") (binary_expression "bVar1 >> 5 & 1 & bVar2 >> 5" (binary_expression "bVar1 >> 5 & 1" (binary_expression "bVar1 >> 5" (identifier "bVar1") (>> ">>") (number_literal "5")) (& "&") (number_literal "1")) (& "&") (binary_expression "bVar2 >> 5" (identifier "bVar2") (>> ">>") (number_literal "5"))) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))" (( "(") (parenthesized_expression "((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))))" (( "(") (binary_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&\n         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))" (parenthesized_expression "(((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0))" (( "(") (binary_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&\n          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)" (parenthesized_expression "((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1)))" (( "(") (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))" (binary_expression "(bVar1 >> 6 & 1 & bVar2 >> 6) == 0" (parenthesized_expression "(bVar1 >> 6 & 1 & bVar2 >> 6)" (( "(") (binary_expression "bVar1 >> 6 & 1 & bVar2 >> 6" (binary_expression "bVar1 >> 6 & 1" (binary_expression "bVar1 >> 6" (identifier "bVar1") (>> ">>") (number_literal "6")) (& "&") (number_literal "1")) (& "&") (binary_expression "bVar2 >> 6" (identifier "bVar2") (>> ">>") (number_literal "6"))) () ")")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(-1 < (char)(bVar2 & bVar1))" (( "(") (binary_expression "-1 < (char)(bVar2 & bVar1)" (number_literal "-1") (< "<") (cast_expression "(char)(bVar2 & bVar1)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(bVar2 & bVar1)" (( "(") (binary_expression "bVar2 & bVar1" (identifier "bVar2") (& "&") (identifier "bVar1")) () ")")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)" (( "(") (binary_expression "((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0" (parenthesized_expression "((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1))" (( "(") (binary_expression "(byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)" (binary_expression "(byte)(param_6 >> 1) & 1" (call_expression "(byte)(param_6 >> 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_6 >> 1)" (( "(") (binary_expression "param_6 >> 1" (identifier "param_6") (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "1")) (& "&") (call_expression "(byte)(param_2 >> 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 1)" (( "(") (binary_expression "param_2 >> 1" (identifier "param_2") (>> ">>") (number_literal "1")) () ")")))) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))" (( "(") (parenthesized_expression "(((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0))" (( "(") (binary_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&\n          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)" (binary_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0" (parenthesized_expression "((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3))" (( "(") (binary_expression "(byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)" (binary_expression "(byte)(param_6 >> 3) & 1" (call_expression "(byte)(param_6 >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_6 >> 3)" (( "(") (binary_expression "param_6 >> 3" (identifier "param_6") (>> ">>") (number_literal "3")) () ")"))) (& "&") (number_literal "1")) (& "&") (call_expression "(byte)(param_2 >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 3)" (( "(") (binary_expression "param_2 >> 3" (identifier "param_2") (>> ">>") (number_literal "3")) () ")")))) () ")")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)" (( "(") (binary_expression "((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0" (parenthesized_expression "((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4))" (( "(") (binary_expression "(byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)" (binary_expression "(byte)(param_6 >> 4) & 1" (call_expression "(byte)(param_6 >> 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_6 >> 4)" (( "(") (binary_expression "param_6 >> 4" (identifier "param_6") (>> ">>") (number_literal "4")) () ")"))) (& "&") (number_literal "1")) (& "&") (call_expression "(byte)(param_2 >> 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 4)" (( "(") (binary_expression "param_2 >> 4" (identifier "param_2") (>> ">>") (number_literal "4")) () ")")))) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)" (( "(") (binary_expression "((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0" (parenthesized_expression "((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5))" (( "(") (binary_expression "(byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)" (binary_expression "(byte)(param_6 >> 5) & 1" (call_expression "(byte)(param_6 >> 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_6 >> 5)" (( "(") (binary_expression "param_6 >> 5" (identifier "param_6") (>> ">>") (number_literal "5")) () ")"))) (& "&") (number_literal "1")) (& "&") (call_expression "(byte)(param_2 >> 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 5)" (( "(") (binary_expression "param_2 >> 5" (identifier "param_2") (>> ">>") (number_literal "5")) () ")")))) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(unaff_EDI + 0x45071) = 2;" (assignment_expression "*(undefined4 *)(unaff_EDI + 0x45071) = 2" (pointer_expression "*(undefined4 *)(unaff_EDI + 0x45071)" (* "*") (cast_expression "(undefined4 *)(unaff_EDI + 0x45071)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x45071)" (( "(") (binary_expression "unaff_EDI + 0x45071" (identifier "unaff_EDI") (+ "+") (number_literal "0x45071")) () ")")))) (= "=") (number_literal "2")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

int function_1
              (type_1 g0,type_1 t0,type_1 g1,type_1 t1)

{
  type_2 var_5;
  type_2 var_4;
  int var_6;
  type_3 var_2;
  type_2 var_3;
  
  var_2 = var_1();
  if (((((var_2 & 5) != 0) ||
       (((((type_4)var_2 >> 0x10 & 0x5f) != 0 && ((var_2 & 0x4000000000) == 0)) &&
        (((type_3)g0 & 4) != 0)))) &&
      ((var_3 = t0._4_1_, ((type_3)t0 & 5) != 0 ||
       ((((t0.array[0] >> 0x10 & 0x5f) != 0 && (((type_3)t0 & 0x4000000000) == 0)) &&
        (((type_3)g1 & 4) != 0)))))) &&
     ((var_4 = (type_2)(var_2 >> 0x18) ^ t0._3_1_, (char)var_4 < '\0' ||
      ((((type_2)(var_2 >> 0x20) ^ var_3) & 0x3a) != 0 || (var_4 & 0x60) != 0)))) {
    var_5 = g1._3_1_;
    var_4 = g0._3_1_;
    if ((((var_5 >> 5 & 1 & var_4 >> 5) == 0) &&
        (((((var_5 >> 6 & 1 & var_4 >> 6) == 0 && (-1 < (char)(var_4 & var_5))) &&
          (((type_2)(g1.array[1] >> 1) & 1 & (type_2)(g0.array[1] >> 1)) == 0)) &&
         ((((type_2)(g1.array[1] >> 3) & 1 & (type_2)(g0.array[1] >> 3)) == 0 &&
          (((type_2)(g1.array[1] >> 4) & 1 & (type_2)(g0.array[1] >> 4)) == 0)))))) &&
       (((type_2)(g1.array[1] >> 5) & 1 & (type_2)(g0.array[1] >> 5)) == 0)) {
      return 1;
    }
    *(type_5 *)(var_6 + 0x45071) = 2;
    return 0;
  }
  return 1;
}


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

undefined4
MASKED(uint param_1,uint param_2,uint param_3,byte param_4,uint param_5,uint param_6)

{
  byte bVar1;
  byte bVar2;
  int unaff_EDI;
  ulonglong uVar3;
  
  uVar3 = FUN_0003398f();
  if (((((uVar3 & 5) != 0) ||
       (((((uint)uVar3 >> 0x10 & 0x5f) != 0 && ((uVar3 & 0x4000000000) == 0)) &&
        ((param_1 & 4) != 0)))) &&
      (((param_3 & 5) != 0 ||
       ((((param_3 >> 0x10 & 0x5f) != 0 && ((param_4 & 0x40) == 0)) && ((param_5 & 4) != 0)))))) &&
     ((bVar2 = (byte)(uVar3 >> 0x18) ^ (byte)(param_3 >> 0x18), (char)bVar2 < '\0' ||
      ((((byte)(uVar3 >> 0x20) ^ param_4) & 0x3a) != 0 || (bVar2 & 0x60) != 0)))) {
    bVar1 = (byte)(param_5 >> 0x18);
    bVar2 = (byte)(param_1 >> 0x18);
    if ((((bVar1 >> 5 & 1 & bVar2 >> 5) == 0) &&
        (((((bVar1 >> 6 & 1 & bVar2 >> 6) == 0 && (-1 < (char)(bVar2 & bVar1))) &&
          (((byte)(param_6 >> 1) & 1 & (byte)(param_2 >> 1)) == 0)) &&
         ((((byte)(param_6 >> 3) & 1 & (byte)(param_2 >> 3)) == 0 &&
          (((byte)(param_6 >> 4) & 1 & (byte)(param_2 >> 4)) == 0)))))) &&
       (((byte)(param_6 >> 5) & 1 & (byte)(param_2 >> 5)) == 0)) {
      return 1;
    }
    *(undefined4 *)(unaff_EDI + 0x45071) = 2;
    return 0;
  }
  return 1;
}

