
/* WARNING: Unknown calling convention */

bfd_boolean stab_demangle_get_count(char **pp,uint *pi)

{
  byte *pbVar1;
  bfd_boolean bVar2;
  ulong uVar3;
  uint uVar4;
  byte *pbVar5;
  
  pbVar1 = (byte *)*pp;
  bVar2 = 0;
  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {
    uVar4 = (int)(char)*pbVar1 - 0x30;
    bVar2 = 1;
    *pi = uVar4;
    *pp = (char *)(pbVar1 + 1);
    uVar3 = (ulong)pbVar1[1];
    pbVar1 = pbVar1 + 1;
    if ((_sch_istable[uVar3 * 2] & 4) != 0) {
      do {
        pbVar5 = pbVar1;
        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;
        uVar3 = (ulong)pbVar5[1];
        pbVar1 = pbVar5 + 1;
      } while ((_sch_istable[uVar3 * 2] & 4) != 0);
      bVar2 = 1;
      if (pbVar5[1] == 0x5f) {
        *pp = (char *)(pbVar5 + 2);
        *pi = uVar4;
        return bVar2;
      }
    }
  }
  return bVar2;
}



undefined8 FUN_0012e480(long *param_1,int *param_2)

{
  byte *pbVar1;
  undefined8 uVar2;
  ulong uVar3;
  int iVar4;
  byte *pbVar5;
  
  pbVar1 = (byte *)*param_1;
  uVar2 = 0;
  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {
    iVar4 = (char)*pbVar1 + -0x30;
    uVar2 = 1;
    *param_2 = iVar4;
    *param_1 = (long)(pbVar1 + 1);
    uVar3 = (ulong)pbVar1[1];
    pbVar1 = pbVar1 + 1;
    if ((_sch_istable[uVar3 * 2] & 4) != 0) {
      do {
        pbVar5 = pbVar1;
        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;
        uVar3 = (ulong)pbVar5[1];
        pbVar1 = pbVar5 + 1;
      } while ((_sch_istable[uVar3 * 2] & 4) != 0);
      uVar2 = 1;
      if (pbVar5[1] == 0x5f) {
        *param_1 = (long)(pbVar5 + 2);
        *param_2 = iVar4;
        return uVar2;
      }
    }
  }
  return uVar2;
}


MOV RDX,qword ptr [RDI]
LEA R10,[0x154b60]
XOR EAX,EAX
MOVSX ECX,byte ptr [RDX]
MOVZX R8D,CL
TEST byte ptr [R10 + R8*0x2],0x4
JZ 0x0012e4ba
LEA R8,[RDX + 0x1]
SUB ECX,0x30
MOV EAX,0x1
MOV dword ptr [RSI],ECX
MOV qword ptr [RDI],R8
MOVZX R9D,byte ptr [RDX + 0x1]
MOV RDX,R9
TEST byte ptr [R10 + R9*0x2],0x4
JNZ 0x0012e4c3
RET
MOV R8,R9
LEA EAX,[RCX + RCX*0x4]
MOVSX EDX,DL
LEA R9,[R8 + 0x1]
LEA ECX,[RDX + RAX*0x2 + -0x30]
MOVZX EAX,byte ptr [R8 + 0x1]
MOV RDX,RAX
TEST byte ptr [R10 + RAX*0x2],0x4
JNZ 0x0012e4c0
MOV EAX,0x1
CMP DL,0x5f
JNZ 0x0012e4ba
ADD R8,0x2
MOV qword ptr [RDI],R8
MOV dword ptr [RSI],ECX
RET
(translation_unit "undefined8 FUN_0012e480(long *param_1,int *param_2)\n\n{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined8 FUN_0012e480(long *param_1,int *param_2)\n\n{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0012e480(long *param_1,int *param_2)" identifier (parameter_list "(long *param_1,int *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (expression_statement "pbVar1 = (byte *)*param_1;" (assignment_expression "pbVar1 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }" if (parenthesized_expression "((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4)" ( (binary_expression "_sch_istable[(ulong)*pbVar1 * 2] & 4" (subscript_expression "_sch_istable[(ulong)*pbVar1 * 2]" identifier [ (binary_expression "(ulong)*pbVar1 * 2" (binary_expression "(ulong)*pbVar1" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }" { (expression_statement "iVar4 = (char)*pbVar1 + -0x30;" (assignment_expression "iVar4 = (char)*pbVar1 + -0x30" identifier = (binary_expression "(char)*pbVar1 + -0x30" (cast_expression "(char)*pbVar1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar1" * identifier)) + number_literal)) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_1 = (long)(pbVar1 + 1);" (assignment_expression "*param_1 = (long)(pbVar1 + 1)" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)(pbVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar1 + 1)" ( (binary_expression "pbVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar3 = (ulong)pbVar1[1];" (assignment_expression "uVar3 = (ulong)pbVar1[1]" identifier = (cast_expression "(ulong)pbVar1[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar1 + 1;" (assignment_expression "pbVar1 = pbVar1 + 1" identifier = (binary_expression "pbVar1 + 1" identifier + number_literal)) ;) (if_statement "if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }" if (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" ( (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" identifier [ (binary_expression "uVar3 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }" { (do_statement "do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);" do (compound_statement "{\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      }" { (expression_statement "pbVar5 = pbVar1;" (assignment_expression "pbVar5 = pbVar1" identifier = identifier) ;) (expression_statement "iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;" (assignment_expression "iVar4 = (char)uVar3 + -0x30 + iVar4 * 10" identifier = (binary_expression "(char)uVar3 + -0x30 + iVar4 * 10" (binary_expression "(char)uVar3 + -0x30" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) + (binary_expression "iVar4 * 10" identifier * number_literal))) ;) (expression_statement "uVar3 = (ulong)pbVar5[1];" (assignment_expression "uVar3 = (ulong)pbVar5[1]" identifier = (cast_expression "(ulong)pbVar5[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar5[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar5 + 1;" (assignment_expression "pbVar1 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" ( (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" identifier [ (binary_expression "uVar3 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }" if (parenthesized_expression "(pbVar5[1] == 0x5f)" ( (binary_expression "pbVar5[1] == 0x5f" (subscript_expression "pbVar5[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }" { (expression_statement "*param_1 = (long)(pbVar5 + 2);" (assignment_expression "*param_1 = (long)(pbVar5 + 2)" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)(pbVar5 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 2)" ( (binary_expression "pbVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return uVar2;" return identifier ;) })) })) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nbfd_boolean stab_demangle_get_count(char **pp,uint *pi)\n\n{\n  byte *pbVar1;\n  bfd_boolean bVar2;\n  ulong uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*pp;\n  bVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    uVar4 = (int)(char)*pbVar1 - 0x30;\n    bVar2 = 1;\n    *pi = uVar4;\n    *pp = (char *)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      bVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }\n    }\n  }\n  return bVar2;\n}\n\n" comment (function_definition "bfd_boolean stab_demangle_get_count(char **pp,uint *pi)\n\n{\n  byte *pbVar1;\n  bfd_boolean bVar2;\n  ulong uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*pp;\n  bVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    uVar4 = (int)(char)*pbVar1 - 0x30;\n    bVar2 = 1;\n    *pi = uVar4;\n    *pp = (char *)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      bVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }\n    }\n  }\n  return bVar2;\n}" type_identifier (function_declarator "stab_demangle_get_count(char **pp,uint *pi)" identifier (parameter_list "(char **pp,uint *pi)" ( (parameter_declaration "char **pp" primitive_type (pointer_declarator "**pp" * (pointer_declarator "*pp" * identifier))) , (parameter_declaration "uint *pi" type_identifier (pointer_declarator "*pi" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  bfd_boolean bVar2;\n  ulong uVar3;\n  uint uVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*pp;\n  bVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    uVar4 = (int)(char)*pbVar1 - 0x30;\n    bVar2 = 1;\n    *pi = uVar4;\n    *pp = (char *)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      bVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }\n    }\n  }\n  return bVar2;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bfd_boolean bVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (expression_statement "pbVar1 = (byte *)*pp;" (assignment_expression "pbVar1 = (byte *)*pp" identifier = (cast_expression "(byte *)*pp" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pp" * identifier))) ;) (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" identifier = number_literal) ;) (if_statement "if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    uVar4 = (int)(char)*pbVar1 - 0x30;\n    bVar2 = 1;\n    *pi = uVar4;\n    *pp = (char *)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      bVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }\n    }\n  }" if (parenthesized_expression "((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4)" ( (binary_expression "_sch_istable[(ulong)*pbVar1 * 2] & 4" (subscript_expression "_sch_istable[(ulong)*pbVar1 * 2]" identifier [ (binary_expression "(ulong)*pbVar1 * 2" (binary_expression "(ulong)*pbVar1" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar4 = (int)(char)*pbVar1 - 0x30;\n    bVar2 = 1;\n    *pi = uVar4;\n    *pp = (char *)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      bVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }\n    }\n  }" { (expression_statement "uVar4 = (int)(char)*pbVar1 - 0x30;" (assignment_expression "uVar4 = (int)(char)*pbVar1 - 0x30" identifier = (binary_expression "(int)(char)*pbVar1 - 0x30" (cast_expression "(int)(char)*pbVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar1" * identifier))) - number_literal)) ;) (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" identifier = number_literal) ;) (expression_statement "*pi = uVar4;" (assignment_expression "*pi = uVar4" (pointer_expression "*pi" * identifier) = identifier) ;) (expression_statement "*pp = (char *)(pbVar1 + 1);" (assignment_expression "*pp = (char *)(pbVar1 + 1)" (pointer_expression "*pp" * identifier) = (cast_expression "(char *)(pbVar1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar1 + 1)" ( (binary_expression "pbVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar3 = (ulong)pbVar1[1];" (assignment_expression "uVar3 = (ulong)pbVar1[1]" identifier = (cast_expression "(ulong)pbVar1[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar1 + 1;" (assignment_expression "pbVar1 = pbVar1 + 1" identifier = (binary_expression "pbVar1 + 1" identifier + number_literal)) ;) (if_statement "if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      bVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }\n    }" if (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" ( (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" identifier [ (binary_expression "uVar3 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      bVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }\n    }" { (do_statement "do {\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);" do (compound_statement "{\n        pbVar5 = pbVar1;\n        uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      }" { (expression_statement "pbVar5 = pbVar1;" (assignment_expression "pbVar5 = pbVar1" identifier = identifier) ;) (expression_statement "uVar4 = (char)uVar3 + -0x30 + uVar4 * 10;" (assignment_expression "uVar4 = (char)uVar3 + -0x30 + uVar4 * 10" identifier = (binary_expression "(char)uVar3 + -0x30 + uVar4 * 10" (binary_expression "(char)uVar3 + -0x30" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) + (binary_expression "uVar4 * 10" identifier * number_literal))) ;) (expression_statement "uVar3 = (ulong)pbVar5[1];" (assignment_expression "uVar3 = (ulong)pbVar5[1]" identifier = (cast_expression "(ulong)pbVar5[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar5[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar5 + 1;" (assignment_expression "pbVar1 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" ( (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" identifier [ (binary_expression "uVar3 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" identifier = number_literal) ;) (if_statement "if (pbVar5[1] == 0x5f) {\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }" if (parenthesized_expression "(pbVar5[1] == 0x5f)" ( (binary_expression "pbVar5[1] == 0x5f" (subscript_expression "pbVar5[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *pp = (char *)(pbVar5 + 2);\n        *pi = uVar4;\n        return bVar2;\n      }" { (expression_statement "*pp = (char *)(pbVar5 + 2);" (assignment_expression "*pp = (char *)(pbVar5 + 2)" (pointer_expression "*pp" * identifier) = (cast_expression "(char *)(pbVar5 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 2)" ( (binary_expression "pbVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "*pi = uVar4;" (assignment_expression "*pi = uVar4" (pointer_expression "*pi" * identifier) = identifier) ;) (return_statement "return bVar2;" return identifier ;) })) })) })) (return_statement "return bVar2;" return identifier ;) })))
(translation_unit "undefined8 FUN_0012e480(long *param_1,int *param_2)\n\n{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined8 FUN_0012e480(long *param_1,int *param_2)\n\n{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0012e480(long *param_1,int *param_2)" identifier (parameter_list "(long *param_1,int *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (expression_statement "pbVar1 = (byte *)*param_1;" (assignment_expression "pbVar1 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }" if (parenthesized_expression "((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4)" ( (binary_expression "_sch_istable[(ulong)*pbVar1 * 2] & 4" (subscript_expression "_sch_istable[(ulong)*pbVar1 * 2]" identifier [ (binary_expression "(ulong)*pbVar1 * 2" (binary_expression "(ulong)*pbVar1" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }" { (expression_statement "iVar4 = (char)*pbVar1 + -0x30;" (assignment_expression "iVar4 = (char)*pbVar1 + -0x30" identifier = (binary_expression "(char)*pbVar1 + -0x30" (cast_expression "(char)*pbVar1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar1" * identifier)) + number_literal)) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_1 = (long)(pbVar1 + 1);" (assignment_expression "*param_1 = (long)(pbVar1 + 1)" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)(pbVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar1 + 1)" ( (binary_expression "pbVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar3 = (ulong)pbVar1[1];" (assignment_expression "uVar3 = (ulong)pbVar1[1]" identifier = (cast_expression "(ulong)pbVar1[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar1 + 1;" (assignment_expression "pbVar1 = pbVar1 + 1" identifier = (binary_expression "pbVar1 + 1" identifier + number_literal)) ;) (if_statement "if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }" if (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" ( (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" identifier [ (binary_expression "uVar3 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }" { (do_statement "do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);" do (compound_statement "{\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      }" { (expression_statement "pbVar5 = pbVar1;" (assignment_expression "pbVar5 = pbVar1" identifier = identifier) ;) (expression_statement "iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;" (assignment_expression "iVar4 = (char)uVar3 + -0x30 + iVar4 * 10" identifier = (binary_expression "(char)uVar3 + -0x30 + iVar4 * 10" (binary_expression "(char)uVar3 + -0x30" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) + (binary_expression "iVar4 * 10" identifier * number_literal))) ;) (expression_statement "uVar3 = (ulong)pbVar5[1];" (assignment_expression "uVar3 = (ulong)pbVar5[1]" identifier = (cast_expression "(ulong)pbVar5[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "pbVar5[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar5 + 1;" (assignment_expression "pbVar1 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" ( (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" ( (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" identifier [ (binary_expression "uVar3 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }" if (parenthesized_expression "(pbVar5[1] == 0x5f)" ( (binary_expression "pbVar5[1] == 0x5f" (subscript_expression "pbVar5[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }" { (expression_statement "*param_1 = (long)(pbVar5 + 2);" (assignment_expression "*param_1 = (long)(pbVar5 + 2)" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)(pbVar5 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 2)" ( (binary_expression "pbVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return uVar2;" return identifier ;) })) })) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT) ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) & LIT) )) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) & LIT) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) })) })) })) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_0012e480(long *param_1,int *param_2)\n\n{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}" (type_identifier "undefined8") (function_declarator "FUN_0012e480(long *param_1,int *param_2)" (identifier "FUN_0012e480") (parameter_list "(long *param_1,int *param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  int iVar4;\n  byte *pbVar5;\n  \n  pbVar1 = (byte *)*param_1;\n  uVar2 = 0;\n  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }\n  return uVar2;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (expression_statement "pbVar1 = (byte *)*param_1;" (assignment_expression "pbVar1 = (byte *)*param_1" (identifier "pbVar1") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0)" (( "(") (binary_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[(ulong)*pbVar1 * 2] & 4)" (( "(") (binary_expression "_sch_istable[(ulong)*pbVar1 * 2] & 4" (subscript_expression "_sch_istable[(ulong)*pbVar1 * 2]" (identifier "_sch_istable") ([ "[") (binary_expression "(ulong)*pbVar1 * 2" (binary_expression "(ulong)*pbVar1" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "pbVar1")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = (char)*pbVar1 + -0x30;\n    uVar2 = 1;\n    *param_2 = iVar4;\n    *param_1 = (long)(pbVar1 + 1);\n    uVar3 = (ulong)pbVar1[1];\n    pbVar1 = pbVar1 + 1;\n    if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar4 = (char)*pbVar1 + -0x30;" (assignment_expression "iVar4 = (char)*pbVar1 + -0x30" (identifier "iVar4") (= "=") (binary_expression "(char)*pbVar1 + -0x30" (cast_expression "(char)*pbVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1"))) (+ "+") (number_literal "-0x30"))) (; ";")) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*param_1 = (long)(pbVar1 + 1);" (assignment_expression "*param_1 = (long)(pbVar1 + 1)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)(pbVar1 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar1 + 1)" (( "(") (binary_expression "pbVar1 + 1" (identifier "pbVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar3 = (ulong)pbVar1[1];" (assignment_expression "uVar3 = (ulong)pbVar1[1]" (identifier "uVar3") (= "=") (cast_expression "(ulong)pbVar1[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "pbVar1[1]" (identifier "pbVar1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pbVar1 = pbVar1 + 1;" (assignment_expression "pbVar1 = pbVar1 + 1" (identifier "pbVar1") (= "=") (binary_expression "pbVar1 + 1" (identifier "pbVar1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((_sch_istable[uVar3 * 2] & 4) != 0) {\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }" (if "if") (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" (( "(") (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" (( "(") (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" (identifier "_sch_istable") ([ "[") (binary_expression "uVar3 * 2" (identifier "uVar3") (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);\n      uVar2 = 1;\n      if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }\n    }" ({ "{") (do_statement "do {\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      } while ((_sch_istable[uVar3 * 2] & 4) != 0);" (do "do") (compound_statement "{\n        pbVar5 = pbVar1;\n        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;\n        uVar3 = (ulong)pbVar5[1];\n        pbVar1 = pbVar5 + 1;\n      }" ({ "{") (expression_statement "pbVar5 = pbVar1;" (assignment_expression "pbVar5 = pbVar1" (identifier "pbVar5") (= "=") (identifier "pbVar1")) (; ";")) (expression_statement "iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;" (assignment_expression "iVar4 = (char)uVar3 + -0x30 + iVar4 * 10" (identifier "iVar4") (= "=") (binary_expression "(char)uVar3 + -0x30 + iVar4 * 10" (binary_expression "(char)uVar3 + -0x30" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (+ "+") (number_literal "-0x30")) (+ "+") (binary_expression "iVar4 * 10" (identifier "iVar4") (* "*") (number_literal "10")))) (; ";")) (expression_statement "uVar3 = (ulong)pbVar5[1];" (assignment_expression "uVar3 = (ulong)pbVar5[1]" (identifier "uVar3") (= "=") (cast_expression "(ulong)pbVar5[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pbVar1 = pbVar5 + 1;" (assignment_expression "pbVar1 = pbVar5 + 1" (identifier "pbVar1") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((_sch_istable[uVar3 * 2] & 4) != 0)" (( "(") (binary_expression "(_sch_istable[uVar3 * 2] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar3 * 2] & 4)" (( "(") (binary_expression "_sch_istable[uVar3 * 2] & 4" (subscript_expression "_sch_istable[uVar3 * 2]" (identifier "_sch_istable") ([ "[") (binary_expression "uVar3 * 2" (identifier "uVar3") (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (if_statement "if (pbVar5[1] == 0x5f) {\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }" (if "if") (parenthesized_expression "(pbVar5[1] == 0x5f)" (( "(") (binary_expression "pbVar5[1] == 0x5f" (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x5f")) () ")")) (compound_statement "{\n        *param_1 = (long)(pbVar5 + 2);\n        *param_2 = iVar4;\n        return uVar2;\n      }" ({ "{") (expression_statement "*param_1 = (long)(pbVar5 + 2);" (assignment_expression "*param_1 = (long)(pbVar5 + 2)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)(pbVar5 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar5 + 2)" (( "(") (binary_expression "pbVar5 + 2" (identifier "pbVar5") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar4")) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

type_1 function_1(char **pp,type_2 *pi)

{
  type_3 *var_1;
  type_1 bVar2;
  type_4 var_2;
  type_2 var_3;
  type_3 *var_4;
  
  var_1 = (type_3 *)*pp;
  bVar2 = 0;
  if ((_sch_istable[(type_4)*var_1 * 2] & 4) != 0) {
    var_3 = (int)(char)*var_1 - 0x30;
    bVar2 = 1;
    *pi = var_3;
    *pp = (char *)(var_1 + 1);
    var_2 = (type_4)var_1[1];
    var_1 = var_1 + 1;
    if ((_sch_istable[var_2 * 2] & 4) != 0) {
      do {
        var_4 = var_1;
        var_3 = (char)var_2 + -0x30 + var_3 * 10;
        var_2 = (type_4)var_4[1];
        var_1 = var_4 + 1;
      } while ((_sch_istable[var_2 * 2] & 4) != 0);
      bVar2 = 1;
      if (var_4[1] == 0x5f) {
        *pp = (char *)(var_4 + 2);
        *pi = var_3;
        return bVar2;
      }
    }
  }
  return bVar2;
}


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

undefined8 MASKED(long *param_1,int *param_2)

{
  byte *pbVar1;
  undefined8 uVar2;
  ulong uVar3;
  int iVar4;
  byte *pbVar5;
  
  pbVar1 = (byte *)*param_1;
  uVar2 = 0;
  if ((_sch_istable[(ulong)*pbVar1 * 2] & 4) != 0) {
    iVar4 = (char)*pbVar1 + -0x30;
    uVar2 = 1;
    *param_2 = iVar4;
    *param_1 = (long)(pbVar1 + 1);
    uVar3 = (ulong)pbVar1[1];
    pbVar1 = pbVar1 + 1;
    if ((_sch_istable[uVar3 * 2] & 4) != 0) {
      do {
        pbVar5 = pbVar1;
        iVar4 = (char)uVar3 + -0x30 + iVar4 * 10;
        uVar3 = (ulong)pbVar5[1];
        pbVar1 = pbVar5 + 1;
      } while ((_sch_istable[uVar3 * 2] & 4) != 0);
      uVar2 = 1;
      if (pbVar5[1] == 0x5f) {
        *param_1 = (long)(pbVar5 + 2);
        *param_2 = iVar4;
        return uVar2;
      }
    }
  }
  return uVar2;
}

