
/* 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;
  int iVar2;
  uint uVar3;
  int iVar4;
  byte *local_2c;
  yy_state_type local_24;
  byte *local_20;
  
  local_2c = (byte *)yytext;
  iVar2 = 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[iVar2] != 0) {
        bVar1 = true;
        local_24 = iVar2;
        local_20 = local_2c;
      }
      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {
        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {
          uVar3 = (uint)""[uVar3];
          iVar4 = (int)yy_base[iVar2] + uVar3;
          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;
        }
      }
LAB_00013fd5:
      local_2c = local_2c + 1;
      iVar2 = (int)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 iVar2;
}



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

void FUN_00013ee0(void)

{
  bool bVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  byte *local_2c;
  int local_24;
  byte *local_20;
  
  local_2c = DAT_00021394;
  if (DAT_00021394 < DAT_00021264) {
    local_24 = DAT_00021258;
    bVar1 = false;
    local_20 = DAT_00021254;
    iVar2 = DAT_0002125c;
    do {
      uVar3 = 1;
      if (*local_2c != 0) {
        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];
      }
      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {
        bVar1 = true;
        local_24 = iVar2;
        local_20 = local_2c;
      }
      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,
            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {
        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {
          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];
          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;
          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;
        }
      }
LAB_00013fd5:
      local_2c = local_2c + 1;
      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);
    } while (local_2c != DAT_00021264);
    if (bVar1) {
      DAT_00021254 = local_20;
      DAT_00021258 = local_24;
    }
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x00015381
ADD ESI,0xd118
PUSH EBX
SUB ESP,0x1c
LEA EDX,[ESI + 0x394]
MOV ECX,dword ptr [ESI + 0x264]
MOV EAX,dword ptr [ESI + 0x25c]
MOV EDI,dword ptr [EDX]
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP],EDI
CMP EDI,ECX
JNC 0x00014009
MOV EDI,dword ptr [ESI + 0x258]
LEA ECX,[ESI + 0xffff9840]
MOV byte ptr [ESP + 0x7],0x0
LEA EBP,[ESI + 0xffff9bc0]
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [ESP + 0x8],EDI
MOV EDI,dword ptr [ESI + 0x254]
MOV dword ptr [ESP + 0xc],EDI
LEA EDI,[ESI + 0xffff9e80]
MOV dword ptr [ESP + 0x14],EDI
LEA EDI,[ESI + 0xffff9640]
NOP
MOV ECX,dword ptr [ESP]
MOVZX EDX,byte ptr [ECX]
MOV ECX,0x1
TEST DL,DL
JZ 0x00013f67
MOVZX ECX,byte ptr [ESI + EDX*0x1 + 0xffff9d80]
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
MOVSX EDX,word ptr [EBP + EAX*0x2]
ADD EDX,ECX
MOVSX EBX,word ptr [EDI + EDX*0x2]
CMP EBX,EAX
JZ 0x00013fd5
MOVSX EAX,word ptr [ESI + EAX*0x2 + 0xffff9a40]
CMP EAX,0xb0
JLE 0x00013fa0
MOVZX ECX,byte ptr [ESI + ECX*0x1 + 0xffff9d40]
MOVSX EDX,word ptr [EBP + EAX*0x2]
ADD EDX,ECX
MOVSX EBX,word ptr [EDI + EDX*0x2]
CMP EBX,EAX
JNZ 0x00013faf
MOV EAX,dword ptr [ESP + 0x18]
ADD dword ptr [ESP],0x1
MOV ECX,dword ptr [ESP]
MOVSX EAX,word ptr [EAX + EDX*0x2]
CMP ECX,dword ptr [ESP + 0x10]
JNZ 0x00013f50
CMP byte ptr [ESP + 0x7],0x0
JZ 0x00014009
MOV EDI,dword ptr [ESP + 0x8]
MOV dword ptr [ESI + 0x258],EDI
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x254],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_00013ee0(void)\n\n{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00013ee0(void)\n\n{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00013ee0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type 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 "int local_24;" primitive_type identifier ;) (declaration "byte *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "local_2c = DAT_00021394;" (assignment_expression "local_2c = DAT_00021394" identifier = identifier) ;) (if_statement "if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }" if (parenthesized_expression "(DAT_00021394 < DAT_00021264)" ( (binary_expression "DAT_00021394 < DAT_00021264" identifier < identifier) )) (compound_statement "{\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }" { (expression_statement "local_24 = DAT_00021258;" (assignment_expression "local_24 = DAT_00021258" identifier = identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_20 = DAT_00021254;" (assignment_expression "local_20 = DAT_00021254" identifier = identifier) ;) (expression_statement "iVar2 = DAT_0002125c;" (assignment_expression "iVar2 = DAT_0002125c" identifier = identifier) ;) (do_statement "do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);" do (compound_statement "{\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + 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_0001ad80)[*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_0001ad80)[*local_2c];\n      }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001ad80)[*local_2c]" (call_expression "(uint)(byte)(&DAT_0001ad80)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001ad80)" ( (pointer_expression "&DAT_0001ad80" & identifier) ))) [ (pointer_expression "*local_2c" * identifier) ])) ;) })) (if_statement "if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" if (parenthesized_expression "(*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0)" ( (binary_expression "*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0" (pointer_expression "*(short *)(&DAT_0001ae80 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001ae80 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001ae80 + iVar2 * 2)" ( (binary_expression "&DAT_0001ae80 + iVar2 * 2" (pointer_expression "&DAT_0001ae80" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) )))) != number_literal) )) (compound_statement "{\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" { (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "local_24 = iVar2;" (assignment_expression "local_24 = iVar2" identifier = identifier) ;) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" identifier = identifier) ;) })) (while_statement "while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }" while (parenthesized_expression "(iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2)" ( (comma_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2" (assignment_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" identifier = (binary_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (cast_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001abc0 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001abc0 + iVar2 * 2)" ( (binary_expression "&DAT_0001abc0 + iVar2 * 2" (pointer_expression "&DAT_0001abc0" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) ))))) + identifier)) , (binary_expression "*(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2" (pointer_expression "*(short *)(&DAT_0001a640 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_0001a640 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001a640 + iVar4 * 2)" ( (binary_expression "&DAT_0001a640 + iVar4 * 2" (pointer_expression "&DAT_0001a640" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) != identifier)) )) (compound_statement "{\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }" { (while_statement "while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }" while (parenthesized_expression "(iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2)" ( (comma_expression "iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2" (assignment_expression "iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2)" identifier = (cast_expression "(int)*(short *)(&DAT_0001aa40 + iVar2 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001aa40 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001aa40 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001aa40 + iVar2 * 2)" ( (binary_expression "&DAT_0001aa40 + iVar2 * 2" (pointer_expression "&DAT_0001aa40" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) )))))) , (binary_expression "0xb0 < iVar2" number_literal < identifier)) )) (compound_statement "{\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001ad40)[uVar3]" (call_expression "(uint)(byte)(&DAT_0001ad40)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001ad40)" ( (pointer_expression "&DAT_0001ad40" & identifier) ))) [ identifier ])) ;) (expression_statement "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;" (assignment_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" identifier = (binary_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (cast_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001abc0 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001abc0 + iVar2 * 2)" ( (binary_expression "&DAT_0001abc0 + iVar2 * 2" (pointer_expression "&DAT_0001abc0" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) ))))) + identifier)) ;) (if_statement "if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;" if (parenthesized_expression "(*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2)" ( (binary_expression "*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2" (pointer_expression "*(short *)(&DAT_0001a640 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_0001a640 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001a640 + iVar4 * 2)" ( (binary_expression "&DAT_0001a640 + iVar4 * 2" (pointer_expression "&DAT_0001a640" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) == identifier) )) (goto_statement "goto LAB_00013fd5;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00013fd5:\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 "iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);" (assignment_expression "iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2)" identifier = (cast_expression "(int)*(short *)(&DAT_0001a840 + iVar4 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001a840 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_0001a840 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001a840 + iVar4 * 2)" ( (binary_expression "&DAT_0001a840 + iVar4 * 2" (pointer_expression "&DAT_0001a840" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))))) ;) }) while (parenthesized_expression "(local_2c != DAT_00021264)" ( (binary_expression "local_2c != DAT_00021264" identifier != identifier) )) ;) (if_statement "if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }" { (expression_statement "DAT_00021254 = local_20;" (assignment_expression "DAT_00021254 = local_20" identifier = identifier) ;) (expression_statement "DAT_00021258 = local_24;" (assignment_expression "DAT_00021258 = 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  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  yy_state_type local_24;\n  byte *local_20;\n  \n  local_2c = (byte *)yytext;\n  iVar2 = 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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)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 iVar2;\n}\n\n" comment comment (function_definition "yy_state_type yy_get_previous_state(void)\n\n{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  yy_state_type local_24;\n  byte *local_20;\n  \n  local_2c = (byte *)yytext;\n  iVar2 = 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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)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 iVar2;\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  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  yy_state_type local_24;\n  byte *local_20;\n  \n  local_2c = (byte *)yytext;\n  iVar2 = 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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)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 iVar2;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type 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 "yy_state_type 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 "iVar2 = yy_start;" (assignment_expression "iVar2 = 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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)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[iVar2] != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" if (parenthesized_expression "(yy_accept[iVar2] != 0)" ( (binary_expression "yy_accept[iVar2] != 0" (subscript_expression "yy_accept[iVar2]" identifier [ identifier ]) != number_literal) )) (compound_statement "{\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" { (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "local_24 = iVar2;" (assignment_expression "local_24 = iVar2" identifier = identifier) ;) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" identifier = identifier) ;) })) (while_statement "while (iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2) {\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }" while (parenthesized_expression "(iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2)" ( (comma_expression "iVar4 = (int)yy_base[iVar2] + uVar3, yy_chk[iVar4] != iVar2" (assignment_expression "iVar4 = (int)yy_base[iVar2] + uVar3" identifier = (binary_expression "(int)yy_base[iVar2] + uVar3" (cast_expression "(int)yy_base[iVar2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yy_base[iVar2]" identifier [ identifier ])) + identifier)) , (binary_expression "yy_chk[iVar4] != iVar2" (subscript_expression "yy_chk[iVar4]" identifier [ identifier ]) != identifier)) )) (compound_statement "{\n        while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }\n      }" { (while_statement "while (iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2) {\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\n        }" while (parenthesized_expression "(iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2)" ( (comma_expression "iVar2 = (int)yy_def[iVar2], 0xb0 < iVar2" (assignment_expression "iVar2 = (int)yy_def[iVar2]" identifier = (cast_expression "(int)yy_def[iVar2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yy_def[iVar2]" identifier [ identifier ]))) , (binary_expression "0xb0 < iVar2" number_literal < identifier)) )) (compound_statement "{\n          uVar3 = (uint)""[uVar3];\n          iVar4 = (int)yy_base[iVar2] + uVar3;\n          if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;\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 = (int)yy_base[iVar2] + uVar3;" (assignment_expression "iVar4 = (int)yy_base[iVar2] + uVar3" identifier = (binary_expression "(int)yy_base[iVar2] + uVar3" (cast_expression "(int)yy_base[iVar2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yy_base[iVar2]" identifier [ identifier ])) + identifier)) ;) (if_statement "if (yy_chk[iVar4] == iVar2) goto LAB_00013fd5;" if (parenthesized_expression "(yy_chk[iVar4] == iVar2)" ( (binary_expression "yy_chk[iVar4] == iVar2" (subscript_expression "yy_chk[iVar4]" identifier [ identifier ]) == identifier) )) (goto_statement "goto LAB_00013fd5;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00013fd5:\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 "iVar2 = (int)yy_nxt[iVar4];" (assignment_expression "iVar2 = (int)yy_nxt[iVar4]" identifier = (cast_expression "(int)yy_nxt[iVar4]" ( (type_descriptor "int" primitive_type) ) (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 iVar2;" return identifier ;) })))
(translation_unit "void FUN_00013ee0(void)\n\n{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00013ee0(void)\n\n{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00013ee0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type 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 "int local_24;" primitive_type identifier ;) (declaration "byte *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "local_2c = DAT_00021394;" (assignment_expression "local_2c = DAT_00021394" identifier = identifier) ;) (if_statement "if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }" if (parenthesized_expression "(DAT_00021394 < DAT_00021264)" ( (binary_expression "DAT_00021394 < DAT_00021264" identifier < identifier) )) (compound_statement "{\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }" { (expression_statement "local_24 = DAT_00021258;" (assignment_expression "local_24 = DAT_00021258" identifier = identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_20 = DAT_00021254;" (assignment_expression "local_20 = DAT_00021254" identifier = identifier) ;) (expression_statement "iVar2 = DAT_0002125c;" (assignment_expression "iVar2 = DAT_0002125c" identifier = identifier) ;) (do_statement "do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);" do (compound_statement "{\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + 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_0001ad80)[*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_0001ad80)[*local_2c];\n      }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001ad80)[*local_2c]" (call_expression "(uint)(byte)(&DAT_0001ad80)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001ad80)" ( (pointer_expression "&DAT_0001ad80" & identifier) ))) [ (pointer_expression "*local_2c" * identifier) ])) ;) })) (if_statement "if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" if (parenthesized_expression "(*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0)" ( (binary_expression "*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0" (pointer_expression "*(short *)(&DAT_0001ae80 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001ae80 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001ae80 + iVar2 * 2)" ( (binary_expression "&DAT_0001ae80 + iVar2 * 2" (pointer_expression "&DAT_0001ae80" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) )))) != number_literal) )) (compound_statement "{\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" { (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "local_24 = iVar2;" (assignment_expression "local_24 = iVar2" identifier = identifier) ;) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" identifier = identifier) ;) })) (while_statement "while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }" while (parenthesized_expression "(iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2)" ( (comma_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2" (assignment_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" identifier = (binary_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (cast_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001abc0 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001abc0 + iVar2 * 2)" ( (binary_expression "&DAT_0001abc0 + iVar2 * 2" (pointer_expression "&DAT_0001abc0" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) ))))) + identifier)) , (binary_expression "*(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2" (pointer_expression "*(short *)(&DAT_0001a640 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_0001a640 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001a640 + iVar4 * 2)" ( (binary_expression "&DAT_0001a640 + iVar4 * 2" (pointer_expression "&DAT_0001a640" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) != identifier)) )) (compound_statement "{\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }" { (while_statement "while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }" while (parenthesized_expression "(iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2)" ( (comma_expression "iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2" (assignment_expression "iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2)" identifier = (cast_expression "(int)*(short *)(&DAT_0001aa40 + iVar2 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001aa40 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001aa40 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001aa40 + iVar2 * 2)" ( (binary_expression "&DAT_0001aa40 + iVar2 * 2" (pointer_expression "&DAT_0001aa40" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) )))))) , (binary_expression "0xb0 < iVar2" number_literal < identifier)) )) (compound_statement "{\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }" { (expression_statement "uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001ad40)[uVar3]" (call_expression "(uint)(byte)(&DAT_0001ad40)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001ad40)" ( (pointer_expression "&DAT_0001ad40" & identifier) ))) [ identifier ])) ;) (expression_statement "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;" (assignment_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" identifier = (binary_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (cast_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001abc0 + iVar2 * 2)" * (cast_expression "(short *)(&DAT_0001abc0 + iVar2 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001abc0 + iVar2 * 2)" ( (binary_expression "&DAT_0001abc0 + iVar2 * 2" (pointer_expression "&DAT_0001abc0" & identifier) + (binary_expression "iVar2 * 2" identifier * number_literal)) ))))) + identifier)) ;) (if_statement "if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;" if (parenthesized_expression "(*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2)" ( (binary_expression "*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2" (pointer_expression "*(short *)(&DAT_0001a640 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_0001a640 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001a640 + iVar4 * 2)" ( (binary_expression "&DAT_0001a640 + iVar4 * 2" (pointer_expression "&DAT_0001a640" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))) == identifier) )) (goto_statement "goto LAB_00013fd5;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00013fd5:\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 "iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);" (assignment_expression "iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2)" identifier = (cast_expression "(int)*(short *)(&DAT_0001a840 + iVar4 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(&DAT_0001a840 + iVar4 * 2)" * (cast_expression "(short *)(&DAT_0001a840 + iVar4 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001a840 + iVar4 * 2)" ( (binary_expression "&DAT_0001a840 + iVar4 * 2" (pointer_expression "&DAT_0001a840" & identifier) + (binary_expression "iVar4 * 2" identifier * number_literal)) )))))) ;) }) while (parenthesized_expression "(local_2c != DAT_00021264)" ( (binary_expression "local_2c != DAT_00021264" identifier != identifier) )) ;) (if_statement "if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }" { (expression_statement "DAT_00021254 = local_20;" (assignment_expression "DAT_00021254 = local_20" identifier = identifier) ;) (expression_statement "DAT_00021258 = local_24;" (assignment_expression "DAT_00021258 = 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 (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)) , (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)) )))) != IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (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)) )))))) , (binary_expression LIT < 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 (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)) ;) (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)) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (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)) )))))) ;) }) 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_00013ee0(void)\n\n{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00013ee0(void)" (identifier "FUN_00013ee0") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *local_2c;\n  int local_24;\n  byte *local_20;\n  \n  local_2c = DAT_00021394;\n  if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (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 "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "byte *local_20;" (type_identifier "byte") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "local_2c = DAT_00021394;" (assignment_expression "local_2c = DAT_00021394" (identifier "local_2c") (= "=") (identifier "DAT_00021394")) (; ";")) (if_statement "if (DAT_00021394 < DAT_00021264) {\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }" (if "if") (parenthesized_expression "(DAT_00021394 < DAT_00021264)" (( "(") (binary_expression "DAT_00021394 < DAT_00021264" (identifier "DAT_00021394") (< "<") (identifier "DAT_00021264")) () ")")) (compound_statement "{\n    local_24 = DAT_00021258;\n    bVar1 = false;\n    local_20 = DAT_00021254;\n    iVar2 = DAT_0002125c;\n    do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);\n    if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }\n  }" ({ "{") (expression_statement "local_24 = DAT_00021258;" (assignment_expression "local_24 = DAT_00021258" (identifier "local_24") (= "=") (identifier "DAT_00021258")) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "local_20 = DAT_00021254;" (assignment_expression "local_20 = DAT_00021254" (identifier "local_20") (= "=") (identifier "DAT_00021254")) (; ";")) (expression_statement "iVar2 = DAT_0002125c;" (assignment_expression "iVar2 = DAT_0002125c" (identifier "iVar2") (= "=") (identifier "DAT_0002125c")) (; ";")) (do_statement "do {\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);\n    } while (local_2c != DAT_00021264);" (do "do") (compound_statement "{\n      uVar3 = 1;\n      if (*local_2c != 0) {\n        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];\n      }\n      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }\n      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }\nLAB_00013fd5:\n      local_2c = local_2c + 1;\n      iVar2 = (int)*(short *)(&DAT_0001a840 + 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_0001ad80)[*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_0001ad80)[*local_2c];\n      }" ({ "{") (expression_statement "uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c]" (identifier "uVar3") (= "=") (subscript_expression "(uint)(byte)(&DAT_0001ad80)[*local_2c]" (call_expression "(uint)(byte)(&DAT_0001ad80)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0001ad80)" (( "(") (pointer_expression "&DAT_0001ad80" (& "&") (identifier "DAT_0001ad80")) () ")"))) ([ "[") (pointer_expression "*local_2c" (* "*") (identifier "local_2c")) (] "]"))) (; ";")) (} "}"))) (if_statement "if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" (if "if") (parenthesized_expression "(*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0)" (( "(") (binary_expression "*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0" (pointer_expression "*(short *)(&DAT_0001ae80 + iVar2 * 2)" (* "*") (cast_expression "(short *)(&DAT_0001ae80 + iVar2 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001ae80 + iVar2 * 2)" (( "(") (binary_expression "&DAT_0001ae80 + iVar2 * 2" (pointer_expression "&DAT_0001ae80" (& "&") (identifier "DAT_0001ae80")) (+ "+") (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2"))) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        bVar1 = true;\n        local_24 = iVar2;\n        local_20 = local_2c;\n      }" ({ "{") (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (expression_statement "local_24 = iVar2;" (assignment_expression "local_24 = iVar2" (identifier "local_24") (= "=") (identifier "iVar2")) (; ";")) (expression_statement "local_20 = local_2c;" (assignment_expression "local_20 = local_2c" (identifier "local_20") (= "=") (identifier "local_2c")) (; ";")) (} "}"))) (while_statement "while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }" (while "while") (parenthesized_expression "(iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2)" (( "(") (comma_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,\n            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2" (assignment_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (identifier "iVar4") (= "=") (binary_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (cast_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(&DAT_0001abc0 + iVar2 * 2)" (* "*") (cast_expression "(short *)(&DAT_0001abc0 + iVar2 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001abc0 + iVar2 * 2)" (( "(") (binary_expression "&DAT_0001abc0 + iVar2 * 2" (pointer_expression "&DAT_0001abc0" (& "&") (identifier "DAT_0001abc0")) (+ "+") (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2"))) () ")"))))) (+ "+") (identifier "uVar3"))) (, ",") (binary_expression "*(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2" (pointer_expression "*(short *)(&DAT_0001a640 + iVar4 * 2)" (* "*") (cast_expression "(short *)(&DAT_0001a640 + iVar4 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001a640 + iVar4 * 2)" (( "(") (binary_expression "&DAT_0001a640 + iVar4 * 2" (pointer_expression "&DAT_0001a640" (& "&") (identifier "DAT_0001a640")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")")))) (!= "!=") (identifier "iVar2"))) () ")")) (compound_statement "{\n        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }\n      }" ({ "{") (while_statement "while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }" (while "while") (parenthesized_expression "(iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2)" (( "(") (comma_expression "iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2" (assignment_expression "iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2)" (identifier "iVar2") (= "=") (cast_expression "(int)*(short *)(&DAT_0001aa40 + iVar2 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(&DAT_0001aa40 + iVar2 * 2)" (* "*") (cast_expression "(short *)(&DAT_0001aa40 + iVar2 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001aa40 + iVar2 * 2)" (( "(") (binary_expression "&DAT_0001aa40 + iVar2 * 2" (pointer_expression "&DAT_0001aa40" (& "&") (identifier "DAT_0001aa40")) (+ "+") (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2"))) () ")")))))) (, ",") (binary_expression "0xb0 < iVar2" (number_literal "0xb0") (< "<") (identifier "iVar2"))) () ")")) (compound_statement "{\n          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];\n          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;\n          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;\n        }" ({ "{") (expression_statement "uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3]" (identifier "uVar3") (= "=") (subscript_expression "(uint)(byte)(&DAT_0001ad40)[uVar3]" (call_expression "(uint)(byte)(&DAT_0001ad40)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0001ad40)" (( "(") (pointer_expression "&DAT_0001ad40" (& "&") (identifier "DAT_0001ad40")) () ")"))) ([ "[") (identifier "uVar3") (] "]"))) (; ";")) (expression_statement "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;" (assignment_expression "iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (identifier "iVar4") (= "=") (binary_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3" (cast_expression "(int)*(short *)(&DAT_0001abc0 + iVar2 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(&DAT_0001abc0 + iVar2 * 2)" (* "*") (cast_expression "(short *)(&DAT_0001abc0 + iVar2 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001abc0 + iVar2 * 2)" (( "(") (binary_expression "&DAT_0001abc0 + iVar2 * 2" (pointer_expression "&DAT_0001abc0" (& "&") (identifier "DAT_0001abc0")) (+ "+") (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2"))) () ")"))))) (+ "+") (identifier "uVar3"))) (; ";")) (if_statement "if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;" (if "if") (parenthesized_expression "(*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2)" (( "(") (binary_expression "*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2" (pointer_expression "*(short *)(&DAT_0001a640 + iVar4 * 2)" (* "*") (cast_expression "(short *)(&DAT_0001a640 + iVar4 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001a640 + iVar4 * 2)" (( "(") (binary_expression "&DAT_0001a640 + iVar4 * 2" (pointer_expression "&DAT_0001a640" (& "&") (identifier "DAT_0001a640")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")")))) (== "==") (identifier "iVar2")) () ")")) (goto_statement "goto LAB_00013fd5;" (goto "goto") (statement_identifier "LAB_00013fd5") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00013fd5:\n      local_2c = local_2c + 1;" (statement_identifier "LAB_00013fd5") (: ":") (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 "iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);" (assignment_expression "iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2)" (identifier "iVar2") (= "=") (cast_expression "(int)*(short *)(&DAT_0001a840 + iVar4 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(&DAT_0001a840 + iVar4 * 2)" (* "*") (cast_expression "(short *)(&DAT_0001a840 + iVar4 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001a840 + iVar4 * 2)" (( "(") (binary_expression "&DAT_0001a840 + iVar4 * 2" (pointer_expression "&DAT_0001a840" (& "&") (identifier "DAT_0001a840")) (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2"))) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_2c != DAT_00021264)" (( "(") (binary_expression "local_2c != DAT_00021264" (identifier "local_2c") (!= "!=") (identifier "DAT_00021264")) () ")")) (; ";")) (if_statement "if (bVar1) {\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n      DAT_00021254 = local_20;\n      DAT_00021258 = local_24;\n    }" ({ "{") (expression_statement "DAT_00021254 = local_20;" (assignment_expression "DAT_00021254 = local_20" (identifier "DAT_00021254") (= "=") (identifier "local_20")) (; ";")) (expression_statement "DAT_00021258 = local_24;" (assignment_expression "DAT_00021258 = local_24" (identifier "DAT_00021258") (= "=") (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;
  int var_4;
  type_2 var_3;
  int iVar4;
  type_3 *var_5;
  type_1 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 = (int)yy_base[var_4] + var_3, yy_chk[iVar4] != var_4) {
        while (var_4 = (int)yy_def[var_4], 0xb0 < var_4) {
          var_3 = (type_2)""[var_3];
          iVar4 = (int)yy_base[var_4] + var_3;
          if (yy_chk[iVar4] == var_4) goto LAB_00013fd5;
        }
      }
LAB_00013fd5:
      var_5 = var_5 + 1;
      var_4 = (int)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: (primitive_type) 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: (primitive_type) 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: (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))) right: (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: (identifier)))) body: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (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: (binary_expression left: (number_literal) right: (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: (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)))) (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: (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: (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)))))))))) 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;
  int iVar2;
  uint uVar3;
  int iVar4;
  byte *local_2c;
  int local_24;
  byte *local_20;
  
  local_2c = DAT_00021394;
  if (DAT_00021394 < DAT_00021264) {
    local_24 = DAT_00021258;
    bVar1 = false;
    local_20 = DAT_00021254;
    iVar2 = DAT_0002125c;
    do {
      uVar3 = 1;
      if (*local_2c != 0) {
        uVar3 = (uint)(byte)(&DAT_0001ad80)[*local_2c];
      }
      if (*(short *)(&DAT_0001ae80 + iVar2 * 2) != 0) {
        bVar1 = true;
        local_24 = iVar2;
        local_20 = local_2c;
      }
      while (iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3,
            *(short *)(&DAT_0001a640 + iVar4 * 2) != iVar2) {
        while (iVar2 = (int)*(short *)(&DAT_0001aa40 + iVar2 * 2), 0xb0 < iVar2) {
          uVar3 = (uint)(byte)(&DAT_0001ad40)[uVar3];
          iVar4 = (int)*(short *)(&DAT_0001abc0 + iVar2 * 2) + uVar3;
          if (*(short *)(&DAT_0001a640 + iVar4 * 2) == iVar2) goto LAB_00013fd5;
        }
      }
LAB_00013fd5:
      local_2c = local_2c + 1;
      iVar2 = (int)*(short *)(&DAT_0001a840 + iVar4 * 2);
    } while (local_2c != DAT_00021264);
    if (bVar1) {
      DAT_00021254 = local_20;
      DAT_00021258 = local_24;
    }
  }
  return;
}

