
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention */

yy_state_type yy_get_previous_state(void)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  byte *local_2c;
  uint local_24;
  byte *local_20;
  
  local_2c = (byte *)yytext;
  uVar2 = yy_start;
  if (yytext < yy_c_buf_p) {
    local_24 = yy_last_accepting_state;
    bVar1 = false;
    local_20 = (byte *)yy_last_accepting_cpos;
    do {
      uVar3 = 1;
      if (*local_2c != 0) {
        uVar3 = (uint)""[*local_2c];
      }
      if (yy_accept[uVar2] != 0) {
        bVar1 = true;
        local_24 = uVar2;
        local_20 = local_2c;
      }
      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {
        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {
          uVar3 = (uint)""[uVar3];
          iVar4 = yy_base[uVar2] + uVar3;
          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;
        }
      }
LAB_0001a775:
      local_2c = local_2c + 1;
      uVar2 = (uint)yy_nxt[iVar4];
    } while (local_2c != (byte *)yy_c_buf_p);
    if (bVar1) {
      yy_last_accepting_cpos = (char *)local_20;
      yy_last_accepting_state = local_24;
    }
  }
  return uVar2;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_0001a680(void)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  byte *local_2c;
  uint local_24;
  byte *local_20;
  
  local_2c = DAT_001d1364;
  if (DAT_001d1364 < DAT_001d0678) {
    local_24 = DAT_001d066c;
    bVar1 = false;
    local_20 = DAT_001d0668;
    uVar2 = DAT_001d0670;
    do {
      uVar3 = 1;
      if (*local_2c != 0) {
        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];
      }
      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {
        bVar1 = true;
        local_24 = uVar2;
        local_20 = local_2c;
      }
      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,
            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {
        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {
          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];
          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;
          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;
        }
      }
LAB_0001a775:
      local_2c = local_2c + 1;
      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);
    } while (local_2c != DAT_001d0678);
    if (bVar1) {
      DAT_001d0668 = local_20;
      DAT_001d066c = local_24;
    }
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x0001d2e6
ADD ESI,0x1b4978
PUSH EBX
SUB ESP,0x1c
LEA EDX,[ESI + 0x2364]
MOV ECX,dword ptr [ESI + 0x1678]
MOV EAX,dword ptr [ESI + 0x1670]
MOV EDI,dword ptr [EDX]
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP],EDI
CMP EDI,ECX
JNC 0x0001a7a9
MOV EDI,dword ptr [ESI + 0x166c]
LEA ECX,[ESI + 0xffea3e00]
MOV byte ptr [ESP + 0x7],0x0
LEA EBP,[ESI + 0xffea6420]
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [ESP + 0x8],EDI
MOV EDI,dword ptr [ESI + 0x1668]
MOV dword ptr [ESP + 0xc],EDI
LEA EDI,[ESI + 0xffea7400]
MOV dword ptr [ESP + 0x14],EDI
LEA EDI,[ESI + 0xffea2660]
NOP
MOV ECX,dword ptr [ESP]
MOVZX EDX,byte ptr [ECX]
MOV ECX,0x1
TEST DL,DL
JZ 0x0001a707
MOVZX ECX,byte ptr [ESI + EDX*0x1 + 0xffea7300]
MOV EBX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [ESP + 0xc]
CMP word ptr [EBX + EAX*0x2],0x0
CMOVNZ EDX,dword ptr [ESP]
MOV EBX,0x1
MOV dword ptr [ESP + 0xc],EDX
MOV EDX,dword ptr [ESP + 0x8]
CMOVNZ EDX,EAX
MOV dword ptr [ESP + 0x8],EDX
MOVZX EDX,byte ptr [ESP + 0x7]
CMOVNZ EDX,EBX
MOV byte ptr [ESP + 0x7],DL
LEA ESI,[ESI]
NOP
MOVZX EDX,word ptr [EBP + EAX*0x2]
ADD EDX,ECX
MOVSX EBX,word ptr [EDI + EDX*0x2]
CMP EBX,EAX
JZ 0x0001a775
MOVSX EAX,word ptr [ESI + EAX*0x2 + 0xffea55a0]
CMP EAX,0x718
JLE 0x0001a740
MOVZX ECX,byte ptr [ESI + ECX*0x1 + 0xffea72a0]
MOVZX EDX,word ptr [EBP + EAX*0x2]
ADD EDX,ECX
MOVSX EBX,word ptr [EDI + EDX*0x2]
CMP EBX,EAX
JNZ 0x0001a74f
MOV EAX,dword ptr [ESP + 0x18]
ADD dword ptr [ESP],0x1
MOV ECX,dword ptr [ESP]
MOVZX EAX,word ptr [EAX + EDX*0x2]
CMP ECX,dword ptr [ESP + 0x10]
JNZ 0x0001a6f0
CMP byte ptr [ESP + 0x7],0x0
JZ 0x0001a7a9
MOV EDI,dword ptr [ESP + 0x8]
MOV dword ptr [ESI + 0x166c],EDI
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x1668],EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_0001a680(void)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_0001a680(void)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0001a680(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "byte *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "local_2c = DAT_001d1364;" (assignment_expression "local_2c = DAT_001d1364" identifier = identifier) ;) (if_statement "if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }" if (parenthesized_expression "(DAT_001d1364 < DAT_001d0678)" ( (binary_expression "DAT_001d1364 < DAT_001d0678" identifier < identifier) )) (compound_statement "{\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }" { (expression_statement "local_24 = DAT_001d066c;" (assignment_expression "local_24 = DAT_001d066c" identifier = identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_20 = DAT_001d0668;" (assignment_expression "local_20 = DAT_001d0668" identifier = identifier) ;) (expression_statement "uVar2 = DAT_001d0670;" (assignment_expression "uVar2 = DAT_001d0670" identifier = identifier) ;) (do_statement "do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);" do (compound_statement "{\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }" if (parenthesized_expression "(*local_2c != 0)" ( (binary_expression "*local_2c != 0" (pointer_expression "*local_2c" * identifier) != number_literal) )) (compound_statement "{\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c]" identifier = (subscript_expression "(uint)(byte)(&DAT_00076300)[*local_2c]" (call_expression "(uint)(byte)(&DAT_00076300)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_00076300)" ( (pointer_expression "&DAT_00076300" & identifier) ))) [ (pointer_expression "*local_2c" * identifier) ])) ;) })) (if_statement "if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" if (parenthesized_expression "(*(short *)(&DAT_00076400 + uVar2 * 2) != 0)" ( (binary_expression "*(short *)(&DAT_00076400 + uVar2 * 2) != 0" (pointer_expression "*(short *)(&DAT_00076400 + uVar2 * 2)" * (cast_expression "(short *)(&DAT_00076400 + uVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00076400 + uVar2 * 2)" ( (binary_expression "&DAT_00076400 + uVar2 * 2" (pointer_expression "&DAT_00076400" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) )))) != number_literal) )) (compound_statement "{\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" { (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "local_24 = uVar2;" (assignment_expression "local_24 = uVar2" identifier = identifier) ;) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" identifier = identifier) ;) })) (while_statement "while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }" while (parenthesized_expression "(iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2)" ( (comma_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2" (assignment_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" identifier = (binary_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (pointer_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2)" * (cast_expression "(ushort *)(&DAT_00075420 + uVar2 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00075420 + uVar2 * 2)" ( (binary_expression "&DAT_00075420 + uVar2 * 2" (pointer_expression "&DAT_00075420" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) )))) + identifier)) , (binary_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2" (cast_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_00071660 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00071660 + iVar4 * 2)" ( (binary_expression "&DAT_00071660 + iVar4 * 2" (pointer_expression "&DAT_00071660" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) ))))) != identifier)) )) (compound_statement "{\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }" { (while_statement "while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }" while (parenthesized_expression "(uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2)" ( (comma_expression "uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2" (assignment_expression "uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2)" identifier = (binary_expression "(uint)*(short *)(&DAT_000745a0 + uVar2 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(short *)(&DAT_000745a0 + uVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000745a0 + uVar2 * 2)" ( (binary_expression "&DAT_000745a0 + uVar2 * 2" (pointer_expression "&DAT_000745a0" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) ))))) , (binary_expression "0x718 < (int)uVar2" number_literal < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3]" identifier = (subscript_expression "(uint)(byte)(&DAT_000762a0)[uVar3]" (call_expression "(uint)(byte)(&DAT_000762a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000762a0)" ( (pointer_expression "&DAT_000762a0" & identifier) ))) [ identifier ])) ;) (expression_statement "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;" (assignment_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" identifier = (binary_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (pointer_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2)" * (cast_expression "(ushort *)(&DAT_00075420 + uVar2 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00075420 + uVar2 * 2)" ( (binary_expression "&DAT_00075420 + uVar2 * 2" (pointer_expression "&DAT_00075420" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) )))) + identifier)) ;) (if_statement "if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;" if (parenthesized_expression "((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2)" ( (binary_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2" (cast_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_00071660 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00071660 + iVar4 * 2)" ( (binary_expression "&DAT_00071660 + iVar4 * 2" (pointer_expression "&DAT_00071660" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) ))))) == identifier) )) (goto_statement "goto LAB_0001a775;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_0001a775:\n      local_2c = local_2c + 1;" statement_identifier : (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;)) (expression_statement "uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);" (assignment_expression "uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2)" identifier = (binary_expression "(uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(&DAT_00072e00 + iVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00072e00 + iVar4 * 2)" ( (binary_expression "&DAT_00072e00 + iVar4 * 2" (pointer_expression "&DAT_00072e00" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(local_2c != DAT_001d0678)" ( (binary_expression "local_2c != DAT_001d0678" identifier != identifier) )) ;) (if_statement "if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }" { (expression_statement "DAT_001d0668 = local_20;" (assignment_expression "DAT_001d0668 = local_20" identifier = identifier) ;) (expression_statement "DAT_001d066c = local_24;" (assignment_expression "DAT_001d066c = local_24" identifier = identifier) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Unknown calling convention */\n\nyy_state_type yy_get_previous_state(void)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = (byte *)yytext;\n  uVar2 = yy_start;\n  if (yytext < yy_c_buf_p) {\n    local_24 = yy_last_accepting_state;\n    bVar1 = false;\n    local_20 = (byte *)yy_last_accepting_cpos;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }\n      if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)yy_nxt[iVar4];\n    } while (local_2c != (byte *)yy_c_buf_p);\n    if (bVar1) {\n      yy_last_accepting_cpos = (char *)local_20;\n      yy_last_accepting_state = local_24;\n    }\n  }\n  return uVar2;\n}\n\n" comment comment (function_definition "yy_state_type yy_get_previous_state(void)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = (byte *)yytext;\n  uVar2 = yy_start;\n  if (yytext < yy_c_buf_p) {\n    local_24 = yy_last_accepting_state;\n    bVar1 = false;\n    local_20 = (byte *)yy_last_accepting_cpos;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }\n      if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)yy_nxt[iVar4];\n    } while (local_2c != (byte *)yy_c_buf_p);\n    if (bVar1) {\n      yy_last_accepting_cpos = (char *)local_20;\n      yy_last_accepting_state = local_24;\n    }\n  }\n  return uVar2;\n}" type_identifier (function_declarator "yy_get_previous_state(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = (byte *)yytext;\n  uVar2 = yy_start;\n  if (yytext < yy_c_buf_p) {\n    local_24 = yy_last_accepting_state;\n    bVar1 = false;\n    local_20 = (byte *)yy_last_accepting_cpos;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }\n      if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)yy_nxt[iVar4];\n    } while (local_2c != (byte *)yy_c_buf_p);\n    if (bVar1) {\n      yy_last_accepting_cpos = (char *)local_20;\n      yy_last_accepting_state = local_24;\n    }\n  }\n  return uVar2;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "byte *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "local_2c = (byte *)yytext;" (assignment_expression "local_2c = (byte *)yytext" identifier = (cast_expression "(byte *)yytext" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar2 = yy_start;" (assignment_expression "uVar2 = yy_start" identifier = identifier) ;) (if_statement "if (yytext < yy_c_buf_p) {\n    local_24 = yy_last_accepting_state;\n    bVar1 = false;\n    local_20 = (byte *)yy_last_accepting_cpos;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }\n      if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)yy_nxt[iVar4];\n    } while (local_2c != (byte *)yy_c_buf_p);\n    if (bVar1) {\n      yy_last_accepting_cpos = (char *)local_20;\n      yy_last_accepting_state = local_24;\n    }\n  }" if (parenthesized_expression "(yytext < yy_c_buf_p)" ( (binary_expression "yytext < yy_c_buf_p" identifier < identifier) )) (compound_statement "{\n    local_24 = yy_last_accepting_state;\n    bVar1 = false;\n    local_20 = (byte *)yy_last_accepting_cpos;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }\n      if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)yy_nxt[iVar4];\n    } while (local_2c != (byte *)yy_c_buf_p);\n    if (bVar1) {\n      yy_last_accepting_cpos = (char *)local_20;\n      yy_last_accepting_state = local_24;\n    }\n  }" { (expression_statement "local_24 = yy_last_accepting_state;" (assignment_expression "local_24 = yy_last_accepting_state" identifier = identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_20 = (byte *)yy_last_accepting_cpos;" (assignment_expression "local_20 = (byte *)yy_last_accepting_cpos" identifier = (cast_expression "(byte *)yy_last_accepting_cpos" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }\n      if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)yy_nxt[iVar4];\n    } while (local_2c != (byte *)yy_c_buf_p);" do (compound_statement "{\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }\n      if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)yy_nxt[iVar4];\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (*local_2c != 0) {\n        uVar3 = (uint)""[*local_2c];\n      }" if (parenthesized_expression "(*local_2c != 0)" ( (binary_expression "*local_2c != 0" (pointer_expression "*local_2c" * identifier) != number_literal) )) (compound_statement "{\n        uVar3 = (uint)""[*local_2c];\n      }" { (expression_statement "uVar3 = (uint)""[*local_2c];" (assignment_expression "uVar3 = (uint)""[*local_2c]" identifier = (cast_expression "(uint)""[*local_2c]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[*local_2c]" (string_literal """" " ") [ (pointer_expression "*local_2c" * identifier) ]))) ;) })) (if_statement "if (yy_accept[uVar2] != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" if (parenthesized_expression "(yy_accept[uVar2] != 0)" ( (binary_expression "yy_accept[uVar2] != 0" (subscript_expression "yy_accept[uVar2]" identifier [ identifier ]) != number_literal) )) (compound_statement "{\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" { (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "local_24 = uVar2;" (assignment_expression "local_24 = uVar2" identifier = identifier) ;) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" identifier = identifier) ;) })) (while_statement "while (iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2) {\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }" while (parenthesized_expression "(iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2)" ( (comma_expression "iVar4 = yy_base[uVar2] + uVar3, (int)yy_chk[iVar4] != uVar2" (assignment_expression "iVar4 = yy_base[uVar2] + uVar3" identifier = (binary_expression "yy_base[uVar2] + uVar3" (subscript_expression "yy_base[uVar2]" identifier [ identifier ]) + identifier)) , (binary_expression "(int)yy_chk[iVar4] != uVar2" (cast_expression "(int)yy_chk[iVar4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yy_chk[iVar4]" identifier [ identifier ])) != identifier)) )) (compound_statement "{\n        while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }\n      }" { (while_statement "while (uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }" while (parenthesized_expression "(uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2)" ( (comma_expression "uVar2 = (uint)yy_def[uVar2], 0x718 < (int)uVar2" (assignment_expression "uVar2 = (uint)yy_def[uVar2]" identifier = (cast_expression "(uint)yy_def[uVar2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "yy_def[uVar2]" identifier [ identifier ]))) , (binary_expression "0x718 < (int)uVar2" number_literal < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n          uVar3 = (uint)""[uVar3];\n          iVar4 = yy_base[uVar2] + uVar3;\n          if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;\n        }" { (expression_statement "uVar3 = (uint)""[uVar3];" (assignment_expression "uVar3 = (uint)""[uVar3]" identifier = (cast_expression "(uint)""[uVar3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[uVar3]" (string_literal """" " ") [ identifier ]))) ;) (expression_statement "iVar4 = yy_base[uVar2] + uVar3;" (assignment_expression "iVar4 = yy_base[uVar2] + uVar3" identifier = (binary_expression "yy_base[uVar2] + uVar3" (subscript_expression "yy_base[uVar2]" identifier [ identifier ]) + identifier)) ;) (if_statement "if ((int)yy_chk[iVar4] == uVar2) goto LAB_0001a775;" if (parenthesized_expression "((int)yy_chk[iVar4] == uVar2)" ( (binary_expression "(int)yy_chk[iVar4] == uVar2" (cast_expression "(int)yy_chk[iVar4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yy_chk[iVar4]" identifier [ identifier ])) == identifier) )) (goto_statement "goto LAB_0001a775;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_0001a775:\n      local_2c = local_2c + 1;" statement_identifier : (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;)) (expression_statement "uVar2 = (uint)yy_nxt[iVar4];" (assignment_expression "uVar2 = (uint)yy_nxt[iVar4]" identifier = (cast_expression "(uint)yy_nxt[iVar4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "yy_nxt[iVar4]" identifier [ identifier ]))) ;) }) while (parenthesized_expression "(local_2c != (byte *)yy_c_buf_p)" ( (binary_expression "local_2c != (byte *)yy_c_buf_p" identifier != (cast_expression "(byte *)yy_c_buf_p" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) (if_statement "if (bVar1) {\n      yy_last_accepting_cpos = (char *)local_20;\n      yy_last_accepting_state = local_24;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      yy_last_accepting_cpos = (char *)local_20;\n      yy_last_accepting_state = local_24;\n    }" { (expression_statement "yy_last_accepting_cpos = (char *)local_20;" (assignment_expression "yy_last_accepting_cpos = (char *)local_20" identifier = (cast_expression "(char *)local_20" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "yy_last_accepting_state = local_24;" (assignment_expression "yy_last_accepting_state = local_24" identifier = identifier) ;) })) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "void FUN_0001a680(void)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_0001a680(void)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0001a680(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "byte *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "local_2c = DAT_001d1364;" (assignment_expression "local_2c = DAT_001d1364" identifier = identifier) ;) (if_statement "if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }" if (parenthesized_expression "(DAT_001d1364 < DAT_001d0678)" ( (binary_expression "DAT_001d1364 < DAT_001d0678" identifier < identifier) )) (compound_statement "{\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }" { (expression_statement "local_24 = DAT_001d066c;" (assignment_expression "local_24 = DAT_001d066c" identifier = identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_20 = DAT_001d0668;" (assignment_expression "local_20 = DAT_001d0668" identifier = identifier) ;) (expression_statement "uVar2 = DAT_001d0670;" (assignment_expression "uVar2 = DAT_001d0670" identifier = identifier) ;) (do_statement "do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);" do (compound_statement "{\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (if_statement "if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }" if (parenthesized_expression "(*local_2c != 0)" ( (binary_expression "*local_2c != 0" (pointer_expression "*local_2c" * identifier) != number_literal) )) (compound_statement "{\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c]" identifier = (subscript_expression "(uint)(byte)(&DAT_00076300)[*local_2c]" (call_expression "(uint)(byte)(&DAT_00076300)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_00076300)" ( (pointer_expression "&DAT_00076300" & identifier) ))) [ (pointer_expression "*local_2c" * identifier) ])) ;) })) (if_statement "if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" if (parenthesized_expression "(*(short *)(&DAT_00076400 + uVar2 * 2) != 0)" ( (binary_expression "*(short *)(&DAT_00076400 + uVar2 * 2) != 0" (pointer_expression "*(short *)(&DAT_00076400 + uVar2 * 2)" * (cast_expression "(short *)(&DAT_00076400 + uVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00076400 + uVar2 * 2)" ( (binary_expression "&DAT_00076400 + uVar2 * 2" (pointer_expression "&DAT_00076400" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) )))) != number_literal) )) (compound_statement "{\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" { (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "local_24 = uVar2;" (assignment_expression "local_24 = uVar2" identifier = identifier) ;) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" identifier = identifier) ;) })) (while_statement "while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }" while (parenthesized_expression "(iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2)" ( (comma_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2" (assignment_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" identifier = (binary_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (pointer_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2)" * (cast_expression "(ushort *)(&DAT_00075420 + uVar2 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00075420 + uVar2 * 2)" ( (binary_expression "&DAT_00075420 + uVar2 * 2" (pointer_expression "&DAT_00075420" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) )))) + identifier)) , (binary_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2" (cast_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_00071660 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00071660 + iVar4 * 2)" ( (binary_expression "&DAT_00071660 + iVar4 * 2" (pointer_expression "&DAT_00071660" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) ))))) != identifier)) )) (compound_statement "{\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }" { (while_statement "while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }" while (parenthesized_expression "(uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2)" ( (comma_expression "uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2" (assignment_expression "uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2)" identifier = (binary_expression "(uint)*(short *)(&DAT_000745a0 + uVar2 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(short *)(&DAT_000745a0 + uVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000745a0 + uVar2 * 2)" ( (binary_expression "&DAT_000745a0 + uVar2 * 2" (pointer_expression "&DAT_000745a0" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) ))))) , (binary_expression "0x718 < (int)uVar2" number_literal < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3]" identifier = (subscript_expression "(uint)(byte)(&DAT_000762a0)[uVar3]" (call_expression "(uint)(byte)(&DAT_000762a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000762a0)" ( (pointer_expression "&DAT_000762a0" & identifier) ))) [ identifier ])) ;) (expression_statement "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;" (assignment_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" identifier = (binary_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (pointer_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2)" * (cast_expression "(ushort *)(&DAT_00075420 + uVar2 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00075420 + uVar2 * 2)" ( (binary_expression "&DAT_00075420 + uVar2 * 2" (pointer_expression "&DAT_00075420" & identifier) + (binary_expression "uVar2 * 2" identifier * number_literal)) )))) + identifier)) ;) (if_statement "if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;" if (parenthesized_expression "((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2)" ( (binary_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2" (cast_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_00071660 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_00071660 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00071660 + iVar4 * 2)" ( (binary_expression "&DAT_00071660 + iVar4 * 2" (pointer_expression "&DAT_00071660" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) ))))) == identifier) )) (goto_statement "goto LAB_0001a775;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_0001a775:\n      local_2c = local_2c + 1;" statement_identifier : (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;)) (expression_statement "uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);" (assignment_expression "uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2)" identifier = (binary_expression "(uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(&DAT_00072e00 + iVar4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00072e00 + iVar4 * 2)" ( (binary_expression "&DAT_00072e00 + iVar4 * 2" (pointer_expression "&DAT_00072e00" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(local_2c != DAT_001d0678)" ( (binary_expression "local_2c != DAT_001d0678" identifier != identifier) )) ;) (if_statement "if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }" { (expression_statement "DAT_001d0668 = local_20;" (assignment_expression "DAT_001d0668 = local_20" identifier = identifier) ;) (expression_statement "DAT_001d066c = local_24;" (assignment_expression "DAT_001d066c = local_24" identifier = identifier) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (pointer_expression * IDENT) ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) + IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) != IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) , (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) == IDENT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_0001a680(void)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0001a680(void)" (identifier "FUN_0001a680") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  uint local_24;\n  byte *local_20;\n  \n  local_2c = DAT_001d1364;\n  if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *local_2c;" (type_identifier "byte") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "byte *local_20;" (type_identifier "byte") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "local_2c = DAT_001d1364;" (assignment_expression "local_2c = DAT_001d1364" (identifier "local_2c") (= "=") (identifier "DAT_001d1364")) (; ";")) (if_statement "if (DAT_001d1364 < DAT_001d0678) {\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }" (if "if") (parenthesized_expression "(DAT_001d1364 < DAT_001d0678)" (( "(") (binary_expression "DAT_001d1364 < DAT_001d0678" (identifier "DAT_001d1364") (< "<") (identifier "DAT_001d0678")) () ")")) (compound_statement "{\n    local_24 = DAT_001d066c;\n    bVar1 = false;\n    local_20 = DAT_001d0668;\n    uVar2 = DAT_001d0670;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);\n    if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }\n  }" ({ "{") (expression_statement "local_24 = DAT_001d066c;" (assignment_expression "local_24 = DAT_001d066c" (identifier "local_24") (= "=") (identifier "DAT_001d066c")) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "local_20 = DAT_001d0668;" (assignment_expression "local_20 = DAT_001d0668" (identifier "local_20") (= "=") (identifier "DAT_001d0668")) (; ";")) (expression_statement "uVar2 = DAT_001d0670;" (assignment_expression "uVar2 = DAT_001d0670" (identifier "uVar2") (= "=") (identifier "DAT_001d0670")) (; ";")) (do_statement "do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    } while (local_2c != DAT_001d0678);" (do "do") (compound_statement "{\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }\n      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }\nLAB_0001a775:\n      local_2c = local_2c + 1;\n      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);\n    }" ({ "{") (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }" (if "if") (parenthesized_expression "(*local_2c != 0)" (( "(") (binary_expression "*local_2c != 0" (pointer_expression "*local_2c" (* "*") (identifier "local_2c")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];\n      }" ({ "{") (expression_statement "uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c]" (identifier "uVar3") (= "=") (subscript_expression "(uint)(byte)(&DAT_00076300)[*local_2c]" (call_expression "(uint)(byte)(&DAT_00076300)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_00076300)" (( "(") (pointer_expression "&DAT_00076300" (& "&") (identifier "DAT_00076300")) () ")"))) ([ "[") (pointer_expression "*local_2c" (* "*") (identifier "local_2c")) (] "]"))) (; ";")) (} "}"))) (if_statement "if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" (if "if") (parenthesized_expression "(*(short *)(&DAT_00076400 + uVar2 * 2) != 0)" (( "(") (binary_expression "*(short *)(&DAT_00076400 + uVar2 * 2) != 0" (pointer_expression "*(short *)(&DAT_00076400 + uVar2 * 2)" (* "*") (cast_expression "(short *)(&DAT_00076400 + uVar2 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00076400 + uVar2 * 2)" (( "(") (binary_expression "&DAT_00076400 + uVar2 * 2" (pointer_expression "&DAT_00076400" (& "&") (identifier "DAT_00076400")) (+ "+") (binary_expression "uVar2 * 2" (identifier "uVar2") (* "*") (number_literal "2"))) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        bVar1 = true;\n        local_24 = uVar2;\n        local_20 = local_2c;\n      }" ({ "{") (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (expression_statement "local_24 = uVar2;" (assignment_expression "local_24 = uVar2" (identifier "local_24") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" (identifier "local_20") (= "=") (identifier "local_2c")) (; ";")) (} "}"))) (while_statement "while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }" (while "while") (parenthesized_expression "(iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2)" (( "(") (comma_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,\n            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2" (assignment_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (identifier "iVar4") (= "=") (binary_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (pointer_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2)" (* "*") (cast_expression "(ushort *)(&DAT_00075420 + uVar2 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00075420 + uVar2 * 2)" (( "(") (binary_expression "&DAT_00075420 + uVar2 * 2" (pointer_expression "&DAT_00075420" (& "&") (identifier "DAT_00075420")) (+ "+") (binary_expression "uVar2 * 2" (identifier "uVar2") (* "*") (number_literal "2"))) () ")")))) (+ "+") (identifier "uVar3"))) (, ",") (binary_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2" (cast_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(&DAT_00071660 + iVar4 * 2)" (* "*") (cast_expression "(short *)(&DAT_00071660 + iVar4 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00071660 + iVar4 * 2)" (( "(") (binary_expression "&DAT_00071660 + iVar4 * 2" (pointer_expression "&DAT_00071660" (& "&") (identifier "DAT_00071660")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")"))))) (!= "!=") (identifier "uVar2"))) () ")")) (compound_statement "{\n        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }\n      }" ({ "{") (while_statement "while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }" (while "while") (parenthesized_expression "(uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2)" (( "(") (comma_expression "uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2" (assignment_expression "uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(short *)(&DAT_000745a0 + uVar2 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(short *)(&DAT_000745a0 + uVar2 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000745a0 + uVar2 * 2)" (( "(") (binary_expression "&DAT_000745a0 + uVar2 * 2" (pointer_expression "&DAT_000745a0" (& "&") (identifier "DAT_000745a0")) (+ "+") (binary_expression "uVar2 * 2" (identifier "uVar2") (* "*") (number_literal "2"))) () ")"))))) (, ",") (binary_expression "0x718 < (int)uVar2" (number_literal "0x718") (< "<") (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")))) () ")")) (compound_statement "{\n          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];\n          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;\n          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;\n        }" ({ "{") (expression_statement "uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3]" (identifier "uVar3") (= "=") (subscript_expression "(uint)(byte)(&DAT_000762a0)[uVar3]" (call_expression "(uint)(byte)(&DAT_000762a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000762a0)" (( "(") (pointer_expression "&DAT_000762a0" (& "&") (identifier "DAT_000762a0")) () ")"))) ([ "[") (identifier "uVar3") (] "]"))) (; ";")) (expression_statement "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;" (assignment_expression "iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (identifier "iVar4") (= "=") (binary_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3" (pointer_expression "*(ushort *)(&DAT_00075420 + uVar2 * 2)" (* "*") (cast_expression "(ushort *)(&DAT_00075420 + uVar2 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00075420 + uVar2 * 2)" (( "(") (binary_expression "&DAT_00075420 + uVar2 * 2" (pointer_expression "&DAT_00075420" (& "&") (identifier "DAT_00075420")) (+ "+") (binary_expression "uVar2 * 2" (identifier "uVar2") (* "*") (number_literal "2"))) () ")")))) (+ "+") (identifier "uVar3"))) (; ";")) (if_statement "if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;" (if "if") (parenthesized_expression "((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2)" (( "(") (binary_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2" (cast_expression "(int)*(short *)(&DAT_00071660 + iVar4 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(&DAT_00071660 + iVar4 * 2)" (* "*") (cast_expression "(short *)(&DAT_00071660 + iVar4 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00071660 + iVar4 * 2)" (( "(") (binary_expression "&DAT_00071660 + iVar4 * 2" (pointer_expression "&DAT_00071660" (& "&") (identifier "DAT_00071660")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")"))))) (== "==") (identifier "uVar2")) () ")")) (goto_statement "goto LAB_0001a775;" (goto "goto") (statement_identifier "LAB_0001a775") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_0001a775:\n      local_2c = local_2c + 1;" (statement_identifier "LAB_0001a775") (: ":") (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" (identifier "local_2c") (= "=") (binary_expression "local_2c + 1" (identifier "local_2c") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);" (assignment_expression "uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(&DAT_00072e00 + iVar4 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00072e00 + iVar4 * 2)" (( "(") (binary_expression "&DAT_00072e00 + iVar4 * 2" (pointer_expression "&DAT_00072e00" (& "&") (identifier "DAT_00072e00")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_2c != DAT_001d0678)" (( "(") (binary_expression "local_2c != DAT_001d0678" (identifier "local_2c") (!= "!=") (identifier "DAT_001d0678")) () ")")) (; ";")) (if_statement "if (bVar1) {\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n      DAT_001d0668 = local_20;\n      DAT_001d066c = local_24;\n    }" ({ "{") (expression_statement "DAT_001d0668 = local_20;" (assignment_expression "DAT_001d0668 = local_20" (identifier "DAT_001d0668") (= "=") (identifier "local_20")) (; ";")) (expression_statement "DAT_001d066c = local_24;" (assignment_expression "DAT_001d066c = local_24" (identifier "DAT_001d066c") (= "=") (identifier "local_24")) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention */

type_1 function_1(void)

{
  bool bVar1;
  type_2 var_4;
  type_2 var_3;
  int iVar4;
  type_3 *var_5;
  type_2 local_24;
  type_3 *local_20;
  
  var_5 = (type_3 *)var_1;
  var_4 = yy_start;
  if (var_1 < var_2) {
    local_24 = yy_last_accepting_state;
    bVar1 = false;
    local_20 = (type_3 *)yy_last_accepting_cpos;
    do {
      var_3 = 1;
      if (*var_5 != 0) {
        var_3 = (type_2)""[*var_5];
      }
      if (yy_accept[var_4] != 0) {
        bVar1 = true;
        local_24 = var_4;
        local_20 = var_5;
      }
      while (iVar4 = yy_base[var_4] + var_3, (int)yy_chk[iVar4] != var_4) {
        while (var_4 = (type_2)yy_def[var_4], 0x718 < (int)var_4) {
          var_3 = (type_2)""[var_3];
          iVar4 = yy_base[var_4] + var_3;
          if ((int)yy_chk[iVar4] == var_4) goto LAB_0001a775;
        }
      }
LAB_0001a775:
      var_5 = var_5 + 1;
      var_4 = (type_2)yy_nxt[iVar4];
    } while (var_5 != (type_3 *)var_2);
    if (bVar1) {
      yy_last_accepting_cpos = (char *)local_20;
      yy_last_accepting_state = local_24;
    }
  }
  return var_4;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) right: (identifier)))) body: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) right: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(void)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  byte *local_2c;
  uint local_24;
  byte *local_20;
  
  local_2c = DAT_001d1364;
  if (DAT_001d1364 < DAT_001d0678) {
    local_24 = DAT_001d066c;
    bVar1 = false;
    local_20 = DAT_001d0668;
    uVar2 = DAT_001d0670;
    do {
      uVar3 = 1;
      if (*local_2c != 0) {
        uVar3 = (uint)(byte)(&DAT_00076300)[*local_2c];
      }
      if (*(short *)(&DAT_00076400 + uVar2 * 2) != 0) {
        bVar1 = true;
        local_24 = uVar2;
        local_20 = local_2c;
      }
      while (iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3,
            (int)*(short *)(&DAT_00071660 + iVar4 * 2) != uVar2) {
        while (uVar2 = (uint)*(short *)(&DAT_000745a0 + uVar2 * 2), 0x718 < (int)uVar2) {
          uVar3 = (uint)(byte)(&DAT_000762a0)[uVar3];
          iVar4 = *(ushort *)(&DAT_00075420 + uVar2 * 2) + uVar3;
          if ((int)*(short *)(&DAT_00071660 + iVar4 * 2) == uVar2) goto LAB_0001a775;
        }
      }
LAB_0001a775:
      local_2c = local_2c + 1;
      uVar2 = (uint)*(ushort *)(&DAT_00072e00 + iVar4 * 2);
    } while (local_2c != DAT_001d0678);
    if (bVar1) {
      DAT_001d0668 = local_20;
      DAT_001d066c = local_24;
    }
  }
  return;
}

