
/* WARNING: Enum "BcLexType": Some values do not have unique names */

void bc_parse_operator(BcLexType type,size_t start,size_t *nexprs)

{
  byte bVar1;
  int iVar2;
  globals *pgVar3;
  int *piVar4;
  byte bVar5;
  BcLexType local_3c [3];
  
  pgVar3 = ptr_to_globals;
  local_3c[0] = type;
  if (start < *(ulong *)(ptr_to_globals->line_buf + 0x2c)) {
    bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"
            [type - XC_LEX_1st_op];
    bVar5 = bVar1 & 0xf;
    do {
      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));
      iVar2 = *piVar4;
      if ((iVar2 == 0x20) ||
         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"
                     [iVar2 - 7] & 0xf) &&
          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||
           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"
                      [iVar2 - 7] & 0xf))))))) break;
      xc_parse_push(iVar2 - 3U & 0xff);
      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));
      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);
    } while (start < *(ulong *)(pgVar3->line_buf + 0x2c));
  }
  bc_vec_push((BcVec *)(pgVar3->line_buf + 0x24),local_3c);
  return;
}



void FUN_00115d82(int param_1,ulong param_2,long *param_3)

{
  byte bVar1;
  int iVar2;
  long lVar3;
  int *piVar4;
  byte bVar5;
  int local_3c [3];
  
  lVar3 = DAT_001c65c8;
  local_3c[0] = param_1;
  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {
    bVar1 = (&DAT_001b76cb)[param_1 - 7];
    bVar5 = bVar1 & 0xf;
    do {
      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);
      iVar2 = *piVar4;
      if ((iVar2 == 0x20) ||
         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&
          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;
      FUN_00115d3a((char)iVar2 + -3);
      FUN_001116e4(lVar3 + 0xc0);
      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);
    } while (param_2 < *(ulong *)(lVar3 + 200));
  }
  FUN_00111fca(lVar3 + 0xc0,local_3c);
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
MOV dword ptr [RSP + 0xc],EDI
MOV RBX,qword ptr [0x001c65c8]
CMP RSI,qword ptr [RBX + 0xc8]
JNC 0x00115e3a
MOV R13,RSI
MOV R14,RDX
LEA EAX,[RDI + -0x7]
LEA RDX,[0x1b76cb]
MOVZX EAX,byte ptr [RDX + RAX*0x1]
MOV R12D,EAX
AND R12D,0xf
SHR AL,0x4
XOR EAX,0x1
AND EAX,0x1
MOV byte ptr [RSP + 0xb],AL
LEA R15,[RBX + 0xc0]
MOV RDI,R15
CALL 0x0011177f
MOV EBP,dword ptr [RAX]
CMP EBP,0x20
JZ 0x00115e3a
LEA EAX,[RBP + -0x7]
LEA RCX,[0x1b76cb]
MOVZX EAX,byte ptr [RCX + RAX*0x1]
AND EAX,0xf
CMP R12B,AL
JA 0x00115e08
CMP byte ptr [RSP + 0xb],0x0
JNZ 0x00115e3a
CMP R12B,AL
JNZ 0x00115e3a
LEA EDI,[RBP + -0x3]
MOVZX EDI,DIL
CALL 0x00115d3a
MOV RDI,R15
CALL 0x001116e4
CMP EBP,0x14
SETNZ DL
CMP EBP,0x7
SETNZ AL
MOVZX EAX,AL
AND RAX,RDX
SUB qword ptr [R14],RAX
CMP qword ptr [RBX + 0xc8],R13
JA 0x00115dd0
LEA RSI,[RSP + 0xc]
LEA RDI,[RBX + 0xc0]
CALL 0x00111fca
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "void FUN_00115d82(int param_1,ulong param_2,long *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}\n\n" (function_definition "void FUN_00115d82(int param_1,ulong param_2,long *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}" primitive_type (function_declarator "FUN_00115d82(int param_1,ulong param_2,long *param_3)" identifier (parameter_list "(int param_1,ulong param_2,long *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (expression_statement "lVar3 = DAT_001c65c8;" (assignment_expression "lVar3 = DAT_001c65c8" identifier = identifier) ;) (expression_statement "local_3c[0] = param_1;" (assignment_expression "local_3c[0] = param_1" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }" if (parenthesized_expression "(param_2 < *(ulong *)(DAT_001c65c8 + 200))" ( (binary_expression "param_2 < *(ulong *)(DAT_001c65c8 + 200)" identifier < (pointer_expression "*(ulong *)(DAT_001c65c8 + 200)" * (cast_expression "(ulong *)(DAT_001c65c8 + 200)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65c8 + 200)" ( (binary_expression "DAT_001c65c8 + 200" identifier + number_literal) ))))) )) (compound_statement "{\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }" { (expression_statement "bVar1 = (&DAT_001b76cb)[param_1 - 7];" (assignment_expression "bVar1 = (&DAT_001b76cb)[param_1 - 7]" identifier = (subscript_expression "(&DAT_001b76cb)[param_1 - 7]" (parenthesized_expression "(&DAT_001b76cb)" ( (pointer_expression "&DAT_001b76cb" & identifier) )) [ (binary_expression "param_1 - 7" identifier - number_literal) ])) ;) (expression_statement "bVar5 = bVar1 & 0xf;" (assignment_expression "bVar5 = bVar1 & 0xf" identifier = (binary_expression "bVar1 & 0xf" identifier & number_literal)) ;) (do_statement "do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));" do (compound_statement "{\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    }" { (expression_statement "piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);" (assignment_expression "piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0)" identifier = (cast_expression "(int *)FUN_0011177f(lVar3 + 0xc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011177f(lVar3 + 0xc0)" identifier (argument_list "(lVar3 + 0xc0)" ( (binary_expression "lVar3 + 0xc0" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;" if (parenthesized_expression "((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))))))" ( (binary_expression "(iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))" (parenthesized_expression "(iVar2 == 0x20)" ( (binary_expression "iVar2 == 0x20" identifier == number_literal) )) || (parenthesized_expression "((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))" ( (parenthesized_expression "(bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))))" ( (binary_expression "bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))" (binary_expression "bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf)" identifier <= (parenthesized_expression "((&DAT_001b76cb)[iVar2 - 7] & 0xf)" ( (binary_expression "(&DAT_001b76cb)[iVar2 - 7] & 0xf" (subscript_expression "(&DAT_001b76cb)[iVar2 - 7]" (parenthesized_expression "(&DAT_001b76cb)" ( (pointer_expression "&DAT_001b76cb" & identifier) )) [ (binary_expression "iVar2 - 7" identifier - number_literal) ]) & number_literal) ))) && (parenthesized_expression "((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))" ( (parenthesized_expression "(((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))" ( (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))" (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0" (parenthesized_expression "((bVar1 >> 4 ^ 1) & 1)" ( (binary_expression "(bVar1 >> 4 ^ 1) & 1" (parenthesized_expression "(bVar1 >> 4 ^ 1)" ( (binary_expression "bVar1 >> 4 ^ 1" (binary_expression "bVar1 >> 4" identifier >> number_literal) ^ number_literal) )) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))" ( (binary_expression "bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)" identifier != (parenthesized_expression "((&DAT_001b76cb)[iVar2 - 7] & 0xf)" ( (binary_expression "(&DAT_001b76cb)[iVar2 - 7] & 0xf" (subscript_expression "(&DAT_001b76cb)[iVar2 - 7]" (parenthesized_expression "(&DAT_001b76cb)" ( (pointer_expression "&DAT_001b76cb" & identifier) )) [ (binary_expression "iVar2 - 7" identifier - number_literal) ]) & number_literal) ))) ))) )) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "FUN_00115d3a((char)iVar2 + -3);" (call_expression "FUN_00115d3a((char)iVar2 + -3)" identifier (argument_list "((char)iVar2 + -3)" ( (binary_expression "(char)iVar2 + -3" (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) ))) ;) (expression_statement "FUN_001116e4(lVar3 + 0xc0);" (call_expression "FUN_001116e4(lVar3 + 0xc0)" identifier (argument_list "(lVar3 + 0xc0)" ( (binary_expression "lVar3 + 0xc0" identifier + number_literal) ))) ;) (expression_statement "*param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);" (assignment_expression "*param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*param_3" * identifier) - (call_expression "(ulong)(iVar2 != 7 && iVar2 != 0x14)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar2 != 7 && iVar2 != 0x14)" ( (binary_expression "iVar2 != 7 && iVar2 != 0x14" (binary_expression "iVar2 != 7" identifier != number_literal) && (binary_expression "iVar2 != 0x14" identifier != number_literal)) ))))) ;) }) while (parenthesized_expression "(param_2 < *(ulong *)(lVar3 + 200))" ( (binary_expression "param_2 < *(ulong *)(lVar3 + 200)" identifier < (pointer_expression "*(ulong *)(lVar3 + 200)" * (cast_expression "(ulong *)(lVar3 + 200)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 200)" ( (binary_expression "lVar3 + 200" identifier + number_literal) ))))) )) ;) })) (expression_statement "FUN_00111fca(lVar3 + 0xc0,local_3c);" (call_expression "FUN_00111fca(lVar3 + 0xc0,local_3c)" identifier (argument_list "(lVar3 + 0xc0,local_3c)" ( (binary_expression "lVar3 + 0xc0" identifier + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "BcLexType": Some values do not have unique names */\n\nvoid bc_parse_operator(BcLexType type,size_t start,size_t *nexprs)\n\n{\n  byte bVar1;\n  int iVar2;\n  globals *pgVar3;\n  int *piVar4;\n  byte bVar5;\n  BcLexType local_3c [3];\n  \n  pgVar3 = ptr_to_globals;\n  local_3c[0] = type;\n  if (start < *(ulong *)(ptr_to_globals->line_buf + 0x2c)) {\n    bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;\n      xc_parse_push(iVar2 - 3U & 0xff);\n      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));\n      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (start < *(ulong *)(pgVar3->line_buf + 0x2c));\n  }\n  bc_vec_push((BcVec *)(pgVar3->line_buf + 0x24),local_3c);\n  return;\n}\n\n" comment (function_definition "void bc_parse_operator(BcLexType type,size_t start,size_t *nexprs)\n\n{\n  byte bVar1;\n  int iVar2;\n  globals *pgVar3;\n  int *piVar4;\n  byte bVar5;\n  BcLexType local_3c [3];\n  \n  pgVar3 = ptr_to_globals;\n  local_3c[0] = type;\n  if (start < *(ulong *)(ptr_to_globals->line_buf + 0x2c)) {\n    bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;\n      xc_parse_push(iVar2 - 3U & 0xff);\n      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));\n      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (start < *(ulong *)(pgVar3->line_buf + 0x2c));\n  }\n  bc_vec_push((BcVec *)(pgVar3->line_buf + 0x24),local_3c);\n  return;\n}" primitive_type (function_declarator "bc_parse_operator(BcLexType type,size_t start,size_t *nexprs)" identifier (parameter_list "(BcLexType type,size_t start,size_t *nexprs)" ( (parameter_declaration "BcLexType type" type_identifier identifier) , (parameter_declaration "size_t start" primitive_type identifier) , (parameter_declaration "size_t *nexprs" primitive_type (pointer_declarator "*nexprs" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  globals *pgVar3;\n  int *piVar4;\n  byte bVar5;\n  BcLexType local_3c [3];\n  \n  pgVar3 = ptr_to_globals;\n  local_3c[0] = type;\n  if (start < *(ulong *)(ptr_to_globals->line_buf + 0x2c)) {\n    bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;\n      xc_parse_push(iVar2 - 3U & 0xff);\n      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));\n      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (start < *(ulong *)(pgVar3->line_buf + 0x2c));\n  }\n  bc_vec_push((BcVec *)(pgVar3->line_buf + 0x24),local_3c);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "globals *pgVar3;" type_identifier (pointer_declarator "*pgVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "BcLexType local_3c [3];" type_identifier (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (expression_statement "pgVar3 = ptr_to_globals;" (assignment_expression "pgVar3 = ptr_to_globals" identifier = identifier) ;) (expression_statement "local_3c[0] = type;" (assignment_expression "local_3c[0] = type" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (start < *(ulong *)(ptr_to_globals->line_buf + 0x2c)) {\n    bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;\n      xc_parse_push(iVar2 - 3U & 0xff);\n      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));\n      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (start < *(ulong *)(pgVar3->line_buf + 0x2c));\n  }" if (parenthesized_expression "(start < *(ulong *)(ptr_to_globals->line_buf + 0x2c))" ( (binary_expression "start < *(ulong *)(ptr_to_globals->line_buf + 0x2c)" identifier < (pointer_expression "*(ulong *)(ptr_to_globals->line_buf + 0x2c)" * (cast_expression "(ulong *)(ptr_to_globals->line_buf + 0x2c)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ptr_to_globals->line_buf + 0x2c)" ( (binary_expression "ptr_to_globals->line_buf + 0x2c" (field_expression "ptr_to_globals->line_buf" identifier -> field_identifier) + number_literal) ))))) )) (compound_statement "{\n    bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;\n      xc_parse_push(iVar2 - 3U & 0xff);\n      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));\n      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (start < *(ulong *)(pgVar3->line_buf + 0x2c));\n  }" { (expression_statement "bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op];" (assignment_expression "bVar1 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op]" identifier = (subscript_expression ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n            [type - XC_LEX_1st_op]" (string_literal ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"" " escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence ") [ (binary_expression "type - XC_LEX_1st_op" identifier - identifier) ])) ;) (expression_statement "bVar5 = bVar1 & 0xf;" (assignment_expression "bVar5 = bVar1 & 0xf" identifier = (binary_expression "bVar1 & 0xf" identifier & number_literal)) ;) (do_statement "do {\n      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;\n      xc_parse_push(iVar2 - 3U & 0xff);\n      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));\n      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (start < *(ulong *)(pgVar3->line_buf + 0x2c));" do (compound_statement "{\n      piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;\n      xc_parse_push(iVar2 - 3U & 0xff);\n      bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));\n      *nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    }" { (expression_statement "piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24));" (assignment_expression "piVar4 = (int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24))" identifier = (cast_expression "(int *)bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bc_vec_top((BcVec *)(pgVar3->line_buf + 0x24))" identifier (argument_list "((BcVec *)(pgVar3->line_buf + 0x24))" ( (cast_expression "(BcVec *)(pgVar3->line_buf + 0x24)" ( (type_descriptor "BcVec *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgVar3->line_buf + 0x24)" ( (binary_expression "pgVar3->line_buf + 0x24" (field_expression "pgVar3->line_buf" identifier -> field_identifier) + number_literal) ))) ))))) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if ((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))) break;" if (parenthesized_expression "((iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf)))))))" ( (binary_expression "(iVar2 == 0x20) ||\n         ((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))" (parenthesized_expression "(iVar2 == 0x20)" ( (binary_expression "iVar2 == 0x20" identifier == number_literal) )) || (parenthesized_expression "((bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))))" ( (parenthesized_expression "(bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf)))))" ( (binary_expression "bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))" (binary_expression "bVar5 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf)" identifier <= (parenthesized_expression "("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf)" ( (binary_expression ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7] & 0xf" (subscript_expression ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                     [iVar2 - 7]" (string_literal ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"" " escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence ") [ (binary_expression "iVar2 - 7" identifier - number_literal) ]) & number_literal) ))) && (parenthesized_expression "((((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))))" ( (parenthesized_expression "(((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf)))" ( (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0 ||\n           (bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))" (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0" (parenthesized_expression "((bVar1 >> 4 ^ 1) & 1)" ( (binary_expression "(bVar1 >> 4 ^ 1) & 1" (parenthesized_expression "(bVar1 >> 4 ^ 1)" ( (binary_expression "bVar1 >> 4 ^ 1" (binary_expression "bVar1 >> 4" identifier >> number_literal) ^ number_literal) )) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf))" ( (binary_expression "bVar5 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf)" identifier != (parenthesized_expression "("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf)" ( (binary_expression ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7] & 0xf" (subscript_expression ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"\n                      [iVar2 - 7]" (string_literal ""\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"" " escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence escape_sequence ") [ (binary_expression "iVar2 - 7" identifier - number_literal) ]) & number_literal) ))) ))) )) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "xc_parse_push(iVar2 - 3U & 0xff);" (call_expression "xc_parse_push(iVar2 - 3U & 0xff)" identifier (argument_list "(iVar2 - 3U & 0xff)" ( (binary_expression "iVar2 - 3U & 0xff" (binary_expression "iVar2 - 3U" identifier - number_literal) & number_literal) ))) ;) (expression_statement "bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24));" (call_expression "bc_vec_pop((BcVec *)(pgVar3->line_buf + 0x24))" identifier (argument_list "((BcVec *)(pgVar3->line_buf + 0x24))" ( (cast_expression "(BcVec *)(pgVar3->line_buf + 0x24)" ( (type_descriptor "BcVec *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgVar3->line_buf + 0x24)" ( (binary_expression "pgVar3->line_buf + 0x24" (field_expression "pgVar3->line_buf" identifier -> field_identifier) + number_literal) ))) ))) ;) (expression_statement "*nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14);" (assignment_expression "*nexprs = *nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*nexprs" * identifier) = (binary_expression "*nexprs - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*nexprs" * identifier) - (call_expression "(ulong)(iVar2 != 7 && iVar2 != 0x14)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar2 != 7 && iVar2 != 0x14)" ( (binary_expression "iVar2 != 7 && iVar2 != 0x14" (binary_expression "iVar2 != 7" identifier != number_literal) && (binary_expression "iVar2 != 0x14" identifier != number_literal)) ))))) ;) }) while (parenthesized_expression "(start < *(ulong *)(pgVar3->line_buf + 0x2c))" ( (binary_expression "start < *(ulong *)(pgVar3->line_buf + 0x2c)" identifier < (pointer_expression "*(ulong *)(pgVar3->line_buf + 0x2c)" * (cast_expression "(ulong *)(pgVar3->line_buf + 0x2c)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgVar3->line_buf + 0x2c)" ( (binary_expression "pgVar3->line_buf + 0x2c" (field_expression "pgVar3->line_buf" identifier -> field_identifier) + number_literal) ))))) )) ;) })) (expression_statement "bc_vec_push((BcVec *)(pgVar3->line_buf + 0x24),local_3c);" (call_expression "bc_vec_push((BcVec *)(pgVar3->line_buf + 0x24),local_3c)" identifier (argument_list "((BcVec *)(pgVar3->line_buf + 0x24),local_3c)" ( (cast_expression "(BcVec *)(pgVar3->line_buf + 0x24)" ( (type_descriptor "BcVec *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgVar3->line_buf + 0x24)" ( (binary_expression "pgVar3->line_buf + 0x24" (field_expression "pgVar3->line_buf" identifier -> field_identifier) + number_literal) ))) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00115d82(int param_1,ulong param_2,long *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}\n\n" (function_definition "void FUN_00115d82(int param_1,ulong param_2,long *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}" primitive_type (function_declarator "FUN_00115d82(int param_1,ulong param_2,long *param_3)" identifier (parameter_list "(int param_1,ulong param_2,long *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (expression_statement "lVar3 = DAT_001c65c8;" (assignment_expression "lVar3 = DAT_001c65c8" identifier = identifier) ;) (expression_statement "local_3c[0] = param_1;" (assignment_expression "local_3c[0] = param_1" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }" if (parenthesized_expression "(param_2 < *(ulong *)(DAT_001c65c8 + 200))" ( (binary_expression "param_2 < *(ulong *)(DAT_001c65c8 + 200)" identifier < (pointer_expression "*(ulong *)(DAT_001c65c8 + 200)" * (cast_expression "(ulong *)(DAT_001c65c8 + 200)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65c8 + 200)" ( (binary_expression "DAT_001c65c8 + 200" identifier + number_literal) ))))) )) (compound_statement "{\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }" { (expression_statement "bVar1 = (&DAT_001b76cb)[param_1 - 7];" (assignment_expression "bVar1 = (&DAT_001b76cb)[param_1 - 7]" identifier = (subscript_expression "(&DAT_001b76cb)[param_1 - 7]" (parenthesized_expression "(&DAT_001b76cb)" ( (pointer_expression "&DAT_001b76cb" & identifier) )) [ (binary_expression "param_1 - 7" identifier - number_literal) ])) ;) (expression_statement "bVar5 = bVar1 & 0xf;" (assignment_expression "bVar5 = bVar1 & 0xf" identifier = (binary_expression "bVar1 & 0xf" identifier & number_literal)) ;) (do_statement "do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));" do (compound_statement "{\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    }" { (expression_statement "piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);" (assignment_expression "piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0)" identifier = (cast_expression "(int *)FUN_0011177f(lVar3 + 0xc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011177f(lVar3 + 0xc0)" identifier (argument_list "(lVar3 + 0xc0)" ( (binary_expression "lVar3 + 0xc0" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;" if (parenthesized_expression "((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))))))" ( (binary_expression "(iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))" (parenthesized_expression "(iVar2 == 0x20)" ( (binary_expression "iVar2 == 0x20" identifier == number_literal) )) || (parenthesized_expression "((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))" ( (parenthesized_expression "(bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))))" ( (binary_expression "bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))" (binary_expression "bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf)" identifier <= (parenthesized_expression "((&DAT_001b76cb)[iVar2 - 7] & 0xf)" ( (binary_expression "(&DAT_001b76cb)[iVar2 - 7] & 0xf" (subscript_expression "(&DAT_001b76cb)[iVar2 - 7]" (parenthesized_expression "(&DAT_001b76cb)" ( (pointer_expression "&DAT_001b76cb" & identifier) )) [ (binary_expression "iVar2 - 7" identifier - number_literal) ]) & number_literal) ))) && (parenthesized_expression "((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))" ( (parenthesized_expression "(((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))" ( (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))" (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0" (parenthesized_expression "((bVar1 >> 4 ^ 1) & 1)" ( (binary_expression "(bVar1 >> 4 ^ 1) & 1" (parenthesized_expression "(bVar1 >> 4 ^ 1)" ( (binary_expression "bVar1 >> 4 ^ 1" (binary_expression "bVar1 >> 4" identifier >> number_literal) ^ number_literal) )) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))" ( (binary_expression "bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)" identifier != (parenthesized_expression "((&DAT_001b76cb)[iVar2 - 7] & 0xf)" ( (binary_expression "(&DAT_001b76cb)[iVar2 - 7] & 0xf" (subscript_expression "(&DAT_001b76cb)[iVar2 - 7]" (parenthesized_expression "(&DAT_001b76cb)" ( (pointer_expression "&DAT_001b76cb" & identifier) )) [ (binary_expression "iVar2 - 7" identifier - number_literal) ]) & number_literal) ))) ))) )) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "FUN_00115d3a((char)iVar2 + -3);" (call_expression "FUN_00115d3a((char)iVar2 + -3)" identifier (argument_list "((char)iVar2 + -3)" ( (binary_expression "(char)iVar2 + -3" (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) ))) ;) (expression_statement "FUN_001116e4(lVar3 + 0xc0);" (call_expression "FUN_001116e4(lVar3 + 0xc0)" identifier (argument_list "(lVar3 + 0xc0)" ( (binary_expression "lVar3 + 0xc0" identifier + number_literal) ))) ;) (expression_statement "*param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);" (assignment_expression "*param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*param_3" * identifier) - (call_expression "(ulong)(iVar2 != 7 && iVar2 != 0x14)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar2 != 7 && iVar2 != 0x14)" ( (binary_expression "iVar2 != 7 && iVar2 != 0x14" (binary_expression "iVar2 != 7" identifier != number_literal) && (binary_expression "iVar2 != 0x14" identifier != number_literal)) ))))) ;) }) while (parenthesized_expression "(param_2 < *(ulong *)(lVar3 + 200))" ( (binary_expression "param_2 < *(ulong *)(lVar3 + 200)" identifier < (pointer_expression "*(ulong *)(lVar3 + 200)" * (cast_expression "(ulong *)(lVar3 + 200)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 200)" ( (binary_expression "lVar3 + 200" identifier + number_literal) ))))) )) ;) })) (expression_statement "FUN_00111fca(lVar3 + 0xc0,local_3c);" (call_expression "FUN_00111fca(lVar3 + 0xc0,local_3c)" identifier (argument_list "(lVar3 + 0xc0,local_3c)" ( (binary_expression "lVar3 + 0xc0" identifier + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT - LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT <= (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT - LIT) ]) & LIT) ))) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) ^ LIT) )) & LIT) )) != LIT) || (parenthesized_expression ( (binary_expression IDENT != (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT - LIT) ]) & LIT) ))) ))) )) ))) )) ))) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00115d82(int param_1,ulong param_2,long *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00115d82(int param_1,ulong param_2,long *param_3)" (identifier "FUN_00115d82") (parameter_list "(int param_1,ulong param_2,long *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  long lVar3;\n  int *piVar4;\n  byte bVar5;\n  int local_3c [3];\n  \n  lVar3 = DAT_001c65c8;\n  local_3c[0] = param_1;\n  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }\n  FUN_00111fca(lVar3 + 0xc0,local_3c);\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "int local_3c [3];" (primitive_type "int") (array_declarator "local_3c [3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "lVar3 = DAT_001c65c8;" (assignment_expression "lVar3 = DAT_001c65c8" (identifier "lVar3") (= "=") (identifier "DAT_001c65c8")) (; ";")) (expression_statement "local_3c[0] = param_1;" (assignment_expression "local_3c[0] = param_1" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }" (if "if") (parenthesized_expression "(param_2 < *(ulong *)(DAT_001c65c8 + 200))" (( "(") (binary_expression "param_2 < *(ulong *)(DAT_001c65c8 + 200)" (identifier "param_2") (< "<") (pointer_expression "*(ulong *)(DAT_001c65c8 + 200)" (* "*") (cast_expression "(ulong *)(DAT_001c65c8 + 200)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001c65c8 + 200)" (( "(") (binary_expression "DAT_001c65c8 + 200" (identifier "DAT_001c65c8") (+ "+") (number_literal "200")) () ")"))))) () ")")) (compound_statement "{\n    bVar1 = (&DAT_001b76cb)[param_1 - 7];\n    bVar5 = bVar1 & 0xf;\n    do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));\n  }" ({ "{") (expression_statement "bVar1 = (&DAT_001b76cb)[param_1 - 7];" (assignment_expression "bVar1 = (&DAT_001b76cb)[param_1 - 7]" (identifier "bVar1") (= "=") (subscript_expression "(&DAT_001b76cb)[param_1 - 7]" (parenthesized_expression "(&DAT_001b76cb)" (( "(") (pointer_expression "&DAT_001b76cb" (& "&") (identifier "DAT_001b76cb")) () ")")) ([ "[") (binary_expression "param_1 - 7" (identifier "param_1") (- "-") (number_literal "7")) (] "]"))) (; ";")) (expression_statement "bVar5 = bVar1 & 0xf;" (assignment_expression "bVar5 = bVar1 & 0xf" (identifier "bVar5") (= "=") (binary_expression "bVar1 & 0xf" (identifier "bVar1") (& "&") (number_literal "0xf"))) (; ";")) (do_statement "do {\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    } while (param_2 < *(ulong *)(lVar3 + 200));" (do "do") (compound_statement "{\n      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);\n      iVar2 = *piVar4;\n      if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;\n      FUN_00115d3a((char)iVar2 + -3);\n      FUN_001116e4(lVar3 + 0xc0);\n      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);\n    }" ({ "{") (expression_statement "piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);" (assignment_expression "piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_0011177f(lVar3 + 0xc0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0011177f(lVar3 + 0xc0)" (identifier "FUN_0011177f") (argument_list "(lVar3 + 0xc0)" (( "(") (binary_expression "lVar3 + 0xc0" (identifier "lVar3") (+ "+") (number_literal "0xc0")) () ")"))))) (; ";")) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" (identifier "iVar2") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (if_statement "if ((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;" (if "if") (parenthesized_expression "((iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))))))" (( "(") (binary_expression "(iVar2 == 0x20) ||\n         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))" (parenthesized_expression "(iVar2 == 0x20)" (( "(") (binary_expression "iVar2 == 0x20" (identifier "iVar2") (== "==") (number_literal "0x20")) () ")")) (|| "||") (parenthesized_expression "((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))" (( "(") (parenthesized_expression "(bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))))" (( "(") (binary_expression "bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&\n          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))" (binary_expression "bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf)" (identifier "bVar5") (<= "<=") (parenthesized_expression "((&DAT_001b76cb)[iVar2 - 7] & 0xf)" (( "(") (binary_expression "(&DAT_001b76cb)[iVar2 - 7] & 0xf" (subscript_expression "(&DAT_001b76cb)[iVar2 - 7]" (parenthesized_expression "(&DAT_001b76cb)" (( "(") (pointer_expression "&DAT_001b76cb" (& "&") (identifier "DAT_001b76cb")) () ")")) ([ "[") (binary_expression "iVar2 - 7" (identifier "iVar2") (- "-") (number_literal "7")) (] "]")) (& "&") (number_literal "0xf")) () ")"))) (&& "&&") (parenthesized_expression "((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))" (( "(") (parenthesized_expression "(((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)))" (( "(") (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))" (binary_expression "((bVar1 >> 4 ^ 1) & 1) != 0" (parenthesized_expression "((bVar1 >> 4 ^ 1) & 1)" (( "(") (binary_expression "(bVar1 >> 4 ^ 1) & 1" (parenthesized_expression "(bVar1 >> 4 ^ 1)" (( "(") (binary_expression "bVar1 >> 4 ^ 1" (binary_expression "bVar1 >> 4" (identifier "bVar1") (>> ">>") (number_literal "4")) (^ "^") (number_literal "1")) () ")")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))" (( "(") (binary_expression "bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf)" (identifier "bVar5") (!= "!=") (parenthesized_expression "((&DAT_001b76cb)[iVar2 - 7] & 0xf)" (( "(") (binary_expression "(&DAT_001b76cb)[iVar2 - 7] & 0xf" (subscript_expression "(&DAT_001b76cb)[iVar2 - 7]" (parenthesized_expression "(&DAT_001b76cb)" (( "(") (pointer_expression "&DAT_001b76cb" (& "&") (identifier "DAT_001b76cb")) () ")")) ([ "[") (binary_expression "iVar2 - 7" (identifier "iVar2") (- "-") (number_literal "7")) (] "]")) (& "&") (number_literal "0xf")) () ")"))) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "FUN_00115d3a((char)iVar2 + -3);" (call_expression "FUN_00115d3a((char)iVar2 + -3)" (identifier "FUN_00115d3a") (argument_list "((char)iVar2 + -3)" (( "(") (binary_expression "(char)iVar2 + -3" (cast_expression "(char)iVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar2")) (+ "+") (number_literal "-3")) () ")"))) (; ";")) (expression_statement "FUN_001116e4(lVar3 + 0xc0);" (call_expression "FUN_001116e4(lVar3 + 0xc0)" (identifier "FUN_001116e4") (argument_list "(lVar3 + 0xc0)" (( "(") (binary_expression "lVar3 + 0xc0" (identifier "lVar3") (+ "+") (number_literal "0xc0")) () ")"))) (; ";")) (expression_statement "*param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);" (assignment_expression "*param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14)" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (- "-") (call_expression "(ulong)(iVar2 != 7 && iVar2 != 0x14)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar2 != 7 && iVar2 != 0x14)" (( "(") (binary_expression "iVar2 != 7 && iVar2 != 0x14" (binary_expression "iVar2 != 7" (identifier "iVar2") (!= "!=") (number_literal "7")) (&& "&&") (binary_expression "iVar2 != 0x14" (identifier "iVar2") (!= "!=") (number_literal "0x14"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 < *(ulong *)(lVar3 + 200))" (( "(") (binary_expression "param_2 < *(ulong *)(lVar3 + 200)" (identifier "param_2") (< "<") (pointer_expression "*(ulong *)(lVar3 + 200)" (* "*") (cast_expression "(ulong *)(lVar3 + 200)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 200)" (( "(") (binary_expression "lVar3 + 200" (identifier "lVar3") (+ "+") (number_literal "200")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_00111fca(lVar3 + 0xc0,local_3c);" (call_expression "FUN_00111fca(lVar3 + 0xc0,local_3c)" (identifier "FUN_00111fca") (argument_list "(lVar3 + 0xc0,local_3c)" (( "(") (binary_expression "lVar3 + 0xc0" (identifier "lVar3") (+ "+") (number_literal "0xc0")) (, ",") (identifier "local_3c") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "BcLexType": Some values do not have unique names */

void function_1(type_1 var_2,size_t var_1,size_t *nexprs)

{
  type_2 var_4;
  int var_6;
  type_3 *pgVar3;
  int *piVar4;
  type_2 var_7;
  type_1 local_3c [3];
  
  pgVar3 = ptr_to_globals;
  local_3c[0] = var_2;
  if (var_1 < *(type_4 *)(ptr_to_globals->line_buf + 0x2c)) {
    var_4 = "\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"
            [var_2 - var_3];
    var_7 = var_4 & 0xf;
    do {
      piVar4 = (int *)var_5((type_5 *)(pgVar3->line_buf + 0x24));
      var_6 = *piVar4;
      if ((var_6 == 0x20) ||
         ((var_7 <= ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"
                     [var_6 - 7] & 0xf) &&
          ((((var_4 >> 4 ^ 1) & 1) != 0 ||
           (var_7 != ("\x01\x16\x16\x16\x16\x16\x16\x02\x13\x13\x13\x14\x14\x01\x17\x17\x05\x05\x05\x05\x05\x05\x05"
                      [var_6 - 7] & 0xf))))))) break;
      var_8(var_6 - 3U & 0xff);
      var_9((type_5 *)(pgVar3->line_buf + 0x24));
      *nexprs = *nexprs - (type_4)(var_6 != 7 && var_6 != 0x14);
    } while (var_1 < *(type_4 *)(pgVar3->line_buf + 0x2c));
  }
  var_10((type_5 *)(pgVar3->line_buf + 0x24),local_3c);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))))))))) consequence: (break_statement)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (return_statement))))

void MASKED(int param_1,ulong param_2,long *param_3)

{
  byte bVar1;
  int iVar2;
  long lVar3;
  int *piVar4;
  byte bVar5;
  int local_3c [3];
  
  lVar3 = DAT_001c65c8;
  local_3c[0] = param_1;
  if (param_2 < *(ulong *)(DAT_001c65c8 + 200)) {
    bVar1 = (&DAT_001b76cb)[param_1 - 7];
    bVar5 = bVar1 & 0xf;
    do {
      piVar4 = (int *)FUN_0011177f(lVar3 + 0xc0);
      iVar2 = *piVar4;
      if ((iVar2 == 0x20) ||
         ((bVar5 <= ((&DAT_001b76cb)[iVar2 - 7] & 0xf) &&
          ((((bVar1 >> 4 ^ 1) & 1) != 0 || (bVar5 != ((&DAT_001b76cb)[iVar2 - 7] & 0xf))))))) break;
      FUN_00115d3a((char)iVar2 + -3);
      FUN_001116e4(lVar3 + 0xc0);
      *param_3 = *param_3 - (ulong)(iVar2 != 7 && iVar2 != 0x14);
    } while (param_2 < *(ulong *)(lVar3 + 200));
  }
  FUN_00111fca(lVar3 + 0xc0,local_3c);
  return;
}

