
void yypush_buffer_state(YY_BUFFER_STATE new_buffer)

{
  YY_BUFFER_STATE pyVar1;
  YY_BUFFER_STATE *ppyVar2;
  size_t sVar3;
  YY_BUFFER_STATE *ppyVar4;
  
  if (new_buffer != (YY_BUFFER_STATE)0x0) {
    yyensure_buffer_stack();
    sVar3 = yy_buffer_stack_top;
    ppyVar2 = yy_buffer_stack;
    if (yy_buffer_stack == (YY_BUFFER_STATE *)0x0) {
      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);
    }
    else {
      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;
      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {
        yy_buffer_stack_top = yy_buffer_stack_top + 1;
        *yy_c_buf_p = yy_hold_char;
        pyVar1 = *ppyVar4;
        pyVar1->yy_buf_pos = yy_c_buf_p;
        pyVar1->yy_n_chars = yy_n_chars;
        ppyVar4 = ppyVar2 + sVar3 + 1;
      }
    }
    *ppyVar4 = new_buffer;
    yy_n_chars = new_buffer->yy_n_chars;
    yy_c_buf_p = new_buffer->yy_buf_pos;
    yyin = new_buffer->yy_input_file;
    yytext = yy_c_buf_p;
    yy_hold_char = *yy_c_buf_p;
    return;
  }
  return;
}



void FUN_00105f40(undefined8 *param_1)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  
  if (param_1 != (undefined8 *)0x0) {
    FUN_001050e0();
    lVar3 = DAT_00110520;
    if (DAT_00110520 == 0) {
      plVar4 = (long *)(DAT_00110530 << 3);
    }
    else {
      lVar1 = DAT_00110530 * 8;
      plVar4 = (long *)(DAT_00110520 + lVar1);
      if (*plVar4 != 0) {
        DAT_00110530 = DAT_00110530 + 1;
        *DAT_00110510 = DAT_0011051c;
        lVar2 = *plVar4;
        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;
        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;
        plVar4 = (long *)(lVar3 + 8 + lVar1);
      }
    }
    *plVar4 = (long)param_1;
    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);
    DAT_00110510 = (undefined1 *)param_1[2];
    DAT_001104f0 = *param_1;
    DAT_001106a0 = DAT_00110510;
    DAT_0011051c = *DAT_00110510;
    return;
  }
  return;
}


TEST RDI,RDI
JZ 0x00105ff0
PUSH RBX
MOV RBX,RDI
CALL 0x001050e0
MOV RDX,qword ptr [0x00110520]
TEST RDX,RDX
JZ 0x00105fe0
MOV RCX,qword ptr [0x00110530]
LEA RSI,[RCX*0x8]
LEA RAX,[RDX + RSI*0x1]
CMP qword ptr [RAX],0x0
JZ 0x00105fad
MOV RDI,qword ptr [0x00110510]
MOVZX R8D,byte ptr [0x0011051c]
ADD RCX,0x1
MOV qword ptr [0x00110530],RCX
MOV byte ptr [RDI],R8B
MOV RAX,qword ptr [RAX]
MOV qword ptr [RAX + 0x10],RDI
MOV EDI,dword ptr [0x00110518]
MOV dword ptr [RAX + 0x1c],EDI
LEA RAX,[RDX + RSI*0x1 + 0x8]
MOV qword ptr [RAX],RBX
MOV EAX,dword ptr [RBX + 0x1c]
MOV RDX,qword ptr [RBX]
MOV dword ptr [0x00110518],EAX
MOV RAX,qword ptr [RBX + 0x10]
MOV qword ptr [0x001104f0],RDX
POP RBX
MOV qword ptr [0x00110510],RAX
MOV qword ptr [0x001106a0],RAX
MOVZX EAX,byte ptr [RAX]
MOV byte ptr [0x0011051c],AL
RET
MOV RAX,qword ptr [0x00110530]
SHL RAX,0x3
JMP 0x00105fad
RET
(translation_unit "void FUN_00105f40(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00105f40(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00105f40(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (if_statement "if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }" if (parenthesized_expression "(param_1 != (undefined8 *)0x0)" ( (binary_expression "param_1 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }" { (expression_statement "FUN_001050e0();" (call_expression "FUN_001050e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar3 = DAT_00110520;" (assignment_expression "lVar3 = DAT_00110520" identifier = identifier) ;) (if_statement "if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" if (parenthesized_expression "(DAT_00110520 == 0)" ( (binary_expression "DAT_00110520 == 0" identifier == number_literal) )) (compound_statement "{\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }" { (expression_statement "plVar4 = (long *)(DAT_00110530 << 3);" (assignment_expression "plVar4 = (long *)(DAT_00110530 << 3)" identifier = (cast_expression "(long *)(DAT_00110530 << 3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00110530 << 3)" ( (binary_expression "DAT_00110530 << 3" identifier << number_literal) )))) ;) }) (else_clause "else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" else (compound_statement "{\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" { (expression_statement "lVar1 = DAT_00110530 * 8;" (assignment_expression "lVar1 = DAT_00110530 * 8" identifier = (binary_expression "DAT_00110530 * 8" identifier * number_literal)) ;) (expression_statement "plVar4 = (long *)(DAT_00110520 + lVar1);" (assignment_expression "plVar4 = (long *)(DAT_00110520 + lVar1)" identifier = (cast_expression "(long *)(DAT_00110520 + lVar1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00110520 + lVar1)" ( (binary_expression "DAT_00110520 + lVar1" identifier + identifier) )))) ;) (if_statement "if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }" if (parenthesized_expression "(*plVar4 != 0)" ( (binary_expression "*plVar4 != 0" (pointer_expression "*plVar4" * identifier) != number_literal) )) (compound_statement "{\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }" { (expression_statement "DAT_00110530 = DAT_00110530 + 1;" (assignment_expression "DAT_00110530 = DAT_00110530 + 1" identifier = (binary_expression "DAT_00110530 + 1" identifier + number_literal)) ;) (expression_statement "*DAT_00110510 = DAT_0011051c;" (assignment_expression "*DAT_00110510 = DAT_0011051c" (pointer_expression "*DAT_00110510" * identifier) = identifier) ;) (expression_statement "lVar2 = *plVar4;" (assignment_expression "lVar2 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (expression_statement "*(undefined1 **)(lVar2 + 0x10) = DAT_00110510;" (assignment_expression "*(undefined1 **)(lVar2 + 0x10) = DAT_00110510" (pointer_expression "*(undefined1 **)(lVar2 + 0x10)" * (cast_expression "(undefined1 **)(lVar2 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;" (assignment_expression "*(undefined4 *)(lVar2 + 0x1c) = DAT_00110518" (pointer_expression "*(undefined4 *)(lVar2 + 0x1c)" * (cast_expression "(undefined4 *)(lVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x1c)" ( (binary_expression "lVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar4 = (long *)(lVar3 + 8 + lVar1);" (assignment_expression "plVar4 = (long *)(lVar3 + 8 + lVar1)" identifier = (cast_expression "(long *)(lVar3 + 8 + lVar1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8 + lVar1)" ( (binary_expression "lVar3 + 8 + lVar1" (binary_expression "lVar3 + 8" identifier + number_literal) + identifier) )))) ;) })) }))) (expression_statement "*plVar4 = (long)param_1;" (assignment_expression "*plVar4 = (long)param_1" (pointer_expression "*plVar4" * identifier) = (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);" (assignment_expression "DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c)" identifier = (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "DAT_00110510 = (undefined1 *)param_1[2];" (assignment_expression "DAT_00110510 = (undefined1 *)param_1[2]" identifier = (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "DAT_001104f0 = *param_1;" (assignment_expression "DAT_001104f0 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "DAT_001106a0 = DAT_00110510;" (assignment_expression "DAT_001106a0 = DAT_00110510" identifier = identifier) ;) (expression_statement "DAT_0011051c = *DAT_00110510;" (assignment_expression "DAT_0011051c = *DAT_00110510" identifier = (pointer_expression "*DAT_00110510" * identifier)) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void yypush_buffer_state(YY_BUFFER_STATE new_buffer)\n\n{\n  YY_BUFFER_STATE pyVar1;\n  YY_BUFFER_STATE *ppyVar2;\n  size_t sVar3;\n  YY_BUFFER_STATE *ppyVar4;\n  \n  if (new_buffer != (YY_BUFFER_STATE)0x0) {\n    yyensure_buffer_stack();\n    sVar3 = yy_buffer_stack_top;\n    ppyVar2 = yy_buffer_stack;\n    if (yy_buffer_stack == (YY_BUFFER_STATE *)0x0) {\n      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);\n    }\n    else {\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }\n    *ppyVar4 = new_buffer;\n    yy_n_chars = new_buffer->yy_n_chars;\n    yy_c_buf_p = new_buffer->yy_buf_pos;\n    yyin = new_buffer->yy_input_file;\n    yytext = yy_c_buf_p;\n    yy_hold_char = *yy_c_buf_p;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void yypush_buffer_state(YY_BUFFER_STATE new_buffer)\n\n{\n  YY_BUFFER_STATE pyVar1;\n  YY_BUFFER_STATE *ppyVar2;\n  size_t sVar3;\n  YY_BUFFER_STATE *ppyVar4;\n  \n  if (new_buffer != (YY_BUFFER_STATE)0x0) {\n    yyensure_buffer_stack();\n    sVar3 = yy_buffer_stack_top;\n    ppyVar2 = yy_buffer_stack;\n    if (yy_buffer_stack == (YY_BUFFER_STATE *)0x0) {\n      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);\n    }\n    else {\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }\n    *ppyVar4 = new_buffer;\n    yy_n_chars = new_buffer->yy_n_chars;\n    yy_c_buf_p = new_buffer->yy_buf_pos;\n    yyin = new_buffer->yy_input_file;\n    yytext = yy_c_buf_p;\n    yy_hold_char = *yy_c_buf_p;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "yypush_buffer_state(YY_BUFFER_STATE new_buffer)" identifier (parameter_list "(YY_BUFFER_STATE new_buffer)" ( (parameter_declaration "YY_BUFFER_STATE new_buffer" type_identifier identifier) ))) (compound_statement "{\n  YY_BUFFER_STATE pyVar1;\n  YY_BUFFER_STATE *ppyVar2;\n  size_t sVar3;\n  YY_BUFFER_STATE *ppyVar4;\n  \n  if (new_buffer != (YY_BUFFER_STATE)0x0) {\n    yyensure_buffer_stack();\n    sVar3 = yy_buffer_stack_top;\n    ppyVar2 = yy_buffer_stack;\n    if (yy_buffer_stack == (YY_BUFFER_STATE *)0x0) {\n      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);\n    }\n    else {\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }\n    *ppyVar4 = new_buffer;\n    yy_n_chars = new_buffer->yy_n_chars;\n    yy_c_buf_p = new_buffer->yy_buf_pos;\n    yyin = new_buffer->yy_input_file;\n    yytext = yy_c_buf_p;\n    yy_hold_char = *yy_c_buf_p;\n    return;\n  }\n  return;\n}" { (declaration "YY_BUFFER_STATE pyVar1;" type_identifier identifier ;) (declaration "YY_BUFFER_STATE *ppyVar2;" type_identifier (pointer_declarator "*ppyVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "YY_BUFFER_STATE *ppyVar4;" type_identifier (pointer_declarator "*ppyVar4" * identifier) ;) (if_statement "if (new_buffer != (YY_BUFFER_STATE)0x0) {\n    yyensure_buffer_stack();\n    sVar3 = yy_buffer_stack_top;\n    ppyVar2 = yy_buffer_stack;\n    if (yy_buffer_stack == (YY_BUFFER_STATE *)0x0) {\n      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);\n    }\n    else {\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }\n    *ppyVar4 = new_buffer;\n    yy_n_chars = new_buffer->yy_n_chars;\n    yy_c_buf_p = new_buffer->yy_buf_pos;\n    yyin = new_buffer->yy_input_file;\n    yytext = yy_c_buf_p;\n    yy_hold_char = *yy_c_buf_p;\n    return;\n  }" if (parenthesized_expression "(new_buffer != (YY_BUFFER_STATE)0x0)" ( (binary_expression "new_buffer != (YY_BUFFER_STATE)0x0" identifier != (cast_expression "(YY_BUFFER_STATE)0x0" ( (type_descriptor "YY_BUFFER_STATE" type_identifier) ) number_literal)) )) (compound_statement "{\n    yyensure_buffer_stack();\n    sVar3 = yy_buffer_stack_top;\n    ppyVar2 = yy_buffer_stack;\n    if (yy_buffer_stack == (YY_BUFFER_STATE *)0x0) {\n      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);\n    }\n    else {\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }\n    *ppyVar4 = new_buffer;\n    yy_n_chars = new_buffer->yy_n_chars;\n    yy_c_buf_p = new_buffer->yy_buf_pos;\n    yyin = new_buffer->yy_input_file;\n    yytext = yy_c_buf_p;\n    yy_hold_char = *yy_c_buf_p;\n    return;\n  }" { (expression_statement "yyensure_buffer_stack();" (call_expression "yyensure_buffer_stack()" identifier (argument_list "()" ( ))) ;) (expression_statement "sVar3 = yy_buffer_stack_top;" (assignment_expression "sVar3 = yy_buffer_stack_top" identifier = identifier) ;) (expression_statement "ppyVar2 = yy_buffer_stack;" (assignment_expression "ppyVar2 = yy_buffer_stack" identifier = identifier) ;) (if_statement "if (yy_buffer_stack == (YY_BUFFER_STATE *)0x0) {\n      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);\n    }\n    else {\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }" if (parenthesized_expression "(yy_buffer_stack == (YY_BUFFER_STATE *)0x0)" ( (binary_expression "yy_buffer_stack == (YY_BUFFER_STATE *)0x0" identifier == (cast_expression "(YY_BUFFER_STATE *)0x0" ( (type_descriptor "YY_BUFFER_STATE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);\n    }" { (expression_statement "ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3);" (assignment_expression "ppyVar4 = (YY_BUFFER_STATE *)(yy_buffer_stack_top << 3)" identifier = (cast_expression "(YY_BUFFER_STATE *)(yy_buffer_stack_top << 3)" ( (type_descriptor "YY_BUFFER_STATE *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(yy_buffer_stack_top << 3)" ( (binary_expression "yy_buffer_stack_top << 3" identifier << number_literal) )))) ;) }) (else_clause "else {\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }" else (compound_statement "{\n      ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;\n      if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }\n    }" { (expression_statement "ppyVar4 = yy_buffer_stack + yy_buffer_stack_top;" (assignment_expression "ppyVar4 = yy_buffer_stack + yy_buffer_stack_top" identifier = (binary_expression "yy_buffer_stack + yy_buffer_stack_top" identifier + identifier)) ;) (if_statement "if (*ppyVar4 != (YY_BUFFER_STATE)0x0) {\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }" if (parenthesized_expression "(*ppyVar4 != (YY_BUFFER_STATE)0x0)" ( (binary_expression "*ppyVar4 != (YY_BUFFER_STATE)0x0" (pointer_expression "*ppyVar4" * identifier) != (cast_expression "(YY_BUFFER_STATE)0x0" ( (type_descriptor "YY_BUFFER_STATE" type_identifier) ) number_literal)) )) (compound_statement "{\n        yy_buffer_stack_top = yy_buffer_stack_top + 1;\n        *yy_c_buf_p = yy_hold_char;\n        pyVar1 = *ppyVar4;\n        pyVar1->yy_buf_pos = yy_c_buf_p;\n        pyVar1->yy_n_chars = yy_n_chars;\n        ppyVar4 = ppyVar2 + sVar3 + 1;\n      }" { (expression_statement "yy_buffer_stack_top = yy_buffer_stack_top + 1;" (assignment_expression "yy_buffer_stack_top = yy_buffer_stack_top + 1" identifier = (binary_expression "yy_buffer_stack_top + 1" identifier + number_literal)) ;) (expression_statement "*yy_c_buf_p = yy_hold_char;" (assignment_expression "*yy_c_buf_p = yy_hold_char" (pointer_expression "*yy_c_buf_p" * identifier) = identifier) ;) (expression_statement "pyVar1 = *ppyVar4;" (assignment_expression "pyVar1 = *ppyVar4" identifier = (pointer_expression "*ppyVar4" * identifier)) ;) (expression_statement "pyVar1->yy_buf_pos = yy_c_buf_p;" (assignment_expression "pyVar1->yy_buf_pos = yy_c_buf_p" (field_expression "pyVar1->yy_buf_pos" identifier -> field_identifier) = identifier) ;) (expression_statement "pyVar1->yy_n_chars = yy_n_chars;" (assignment_expression "pyVar1->yy_n_chars = yy_n_chars" (field_expression "pyVar1->yy_n_chars" identifier -> field_identifier) = identifier) ;) (expression_statement "ppyVar4 = ppyVar2 + sVar3 + 1;" (assignment_expression "ppyVar4 = ppyVar2 + sVar3 + 1" identifier = (binary_expression "ppyVar2 + sVar3 + 1" (binary_expression "ppyVar2 + sVar3" identifier + identifier) + number_literal)) ;) })) }))) (expression_statement "*ppyVar4 = new_buffer;" (assignment_expression "*ppyVar4 = new_buffer" (pointer_expression "*ppyVar4" * identifier) = identifier) ;) (expression_statement "yy_n_chars = new_buffer->yy_n_chars;" (assignment_expression "yy_n_chars = new_buffer->yy_n_chars" identifier = (field_expression "new_buffer->yy_n_chars" identifier -> field_identifier)) ;) (expression_statement "yy_c_buf_p = new_buffer->yy_buf_pos;" (assignment_expression "yy_c_buf_p = new_buffer->yy_buf_pos" identifier = (field_expression "new_buffer->yy_buf_pos" identifier -> field_identifier)) ;) (expression_statement "yyin = new_buffer->yy_input_file;" (assignment_expression "yyin = new_buffer->yy_input_file" identifier = (field_expression "new_buffer->yy_input_file" identifier -> field_identifier)) ;) (expression_statement "yytext = yy_c_buf_p;" (assignment_expression "yytext = yy_c_buf_p" identifier = identifier) ;) (expression_statement "yy_hold_char = *yy_c_buf_p;" (assignment_expression "yy_hold_char = *yy_c_buf_p" identifier = (pointer_expression "*yy_c_buf_p" * identifier)) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00105f40(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00105f40(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00105f40(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (if_statement "if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }" if (parenthesized_expression "(param_1 != (undefined8 *)0x0)" ( (binary_expression "param_1 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }" { (expression_statement "FUN_001050e0();" (call_expression "FUN_001050e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar3 = DAT_00110520;" (assignment_expression "lVar3 = DAT_00110520" identifier = identifier) ;) (if_statement "if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" if (parenthesized_expression "(DAT_00110520 == 0)" ( (binary_expression "DAT_00110520 == 0" identifier == number_literal) )) (compound_statement "{\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }" { (expression_statement "plVar4 = (long *)(DAT_00110530 << 3);" (assignment_expression "plVar4 = (long *)(DAT_00110530 << 3)" identifier = (cast_expression "(long *)(DAT_00110530 << 3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00110530 << 3)" ( (binary_expression "DAT_00110530 << 3" identifier << number_literal) )))) ;) }) (else_clause "else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" else (compound_statement "{\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" { (expression_statement "lVar1 = DAT_00110530 * 8;" (assignment_expression "lVar1 = DAT_00110530 * 8" identifier = (binary_expression "DAT_00110530 * 8" identifier * number_literal)) ;) (expression_statement "plVar4 = (long *)(DAT_00110520 + lVar1);" (assignment_expression "plVar4 = (long *)(DAT_00110520 + lVar1)" identifier = (cast_expression "(long *)(DAT_00110520 + lVar1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00110520 + lVar1)" ( (binary_expression "DAT_00110520 + lVar1" identifier + identifier) )))) ;) (if_statement "if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }" if (parenthesized_expression "(*plVar4 != 0)" ( (binary_expression "*plVar4 != 0" (pointer_expression "*plVar4" * identifier) != number_literal) )) (compound_statement "{\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }" { (expression_statement "DAT_00110530 = DAT_00110530 + 1;" (assignment_expression "DAT_00110530 = DAT_00110530 + 1" identifier = (binary_expression "DAT_00110530 + 1" identifier + number_literal)) ;) (expression_statement "*DAT_00110510 = DAT_0011051c;" (assignment_expression "*DAT_00110510 = DAT_0011051c" (pointer_expression "*DAT_00110510" * identifier) = identifier) ;) (expression_statement "lVar2 = *plVar4;" (assignment_expression "lVar2 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (expression_statement "*(undefined1 **)(lVar2 + 0x10) = DAT_00110510;" (assignment_expression "*(undefined1 **)(lVar2 + 0x10) = DAT_00110510" (pointer_expression "*(undefined1 **)(lVar2 + 0x10)" * (cast_expression "(undefined1 **)(lVar2 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;" (assignment_expression "*(undefined4 *)(lVar2 + 0x1c) = DAT_00110518" (pointer_expression "*(undefined4 *)(lVar2 + 0x1c)" * (cast_expression "(undefined4 *)(lVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x1c)" ( (binary_expression "lVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar4 = (long *)(lVar3 + 8 + lVar1);" (assignment_expression "plVar4 = (long *)(lVar3 + 8 + lVar1)" identifier = (cast_expression "(long *)(lVar3 + 8 + lVar1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8 + lVar1)" ( (binary_expression "lVar3 + 8 + lVar1" (binary_expression "lVar3 + 8" identifier + number_literal) + identifier) )))) ;) })) }))) (expression_statement "*plVar4 = (long)param_1;" (assignment_expression "*plVar4 = (long)param_1" (pointer_expression "*plVar4" * identifier) = (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);" (assignment_expression "DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c)" identifier = (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "DAT_00110510 = (undefined1 *)param_1[2];" (assignment_expression "DAT_00110510 = (undefined1 *)param_1[2]" identifier = (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "DAT_001104f0 = *param_1;" (assignment_expression "DAT_001104f0 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "DAT_001106a0 = DAT_00110510;" (assignment_expression "DAT_001106a0 = DAT_00110510" identifier = identifier) ;) (expression_statement "DAT_0011051c = *DAT_00110510;" (assignment_expression "DAT_0011051c = *DAT_00110510" identifier = (pointer_expression "*DAT_00110510" * identifier)) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT << LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_00105f40(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00105f40(undefined8 *param_1)" (identifier "FUN_00105f40") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (if_statement "if (param_1 != (undefined8 *)0x0) {\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }" (if "if") (parenthesized_expression "(param_1 != (undefined8 *)0x0)" (( "(") (binary_expression "param_1 != (undefined8 *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_001050e0();\n    lVar3 = DAT_00110520;\n    if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }\n    *plVar4 = (long)param_1;\n    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);\n    DAT_00110510 = (undefined1 *)param_1[2];\n    DAT_001104f0 = *param_1;\n    DAT_001106a0 = DAT_00110510;\n    DAT_0011051c = *DAT_00110510;\n    return;\n  }" ({ "{") (expression_statement "FUN_001050e0();" (call_expression "FUN_001050e0()" (identifier "FUN_001050e0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "lVar3 = DAT_00110520;" (assignment_expression "lVar3 = DAT_00110520" (identifier "lVar3") (= "=") (identifier "DAT_00110520")) (; ";")) (if_statement "if (DAT_00110520 == 0) {\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }\n    else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" (if "if") (parenthesized_expression "(DAT_00110520 == 0)" (( "(") (binary_expression "DAT_00110520 == 0" (identifier "DAT_00110520") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      plVar4 = (long *)(DAT_00110530 << 3);\n    }" ({ "{") (expression_statement "plVar4 = (long *)(DAT_00110530 << 3);" (assignment_expression "plVar4 = (long *)(DAT_00110530 << 3)" (identifier "plVar4") (= "=") (cast_expression "(long *)(DAT_00110530 << 3)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00110530 << 3)" (( "(") (binary_expression "DAT_00110530 << 3" (identifier "DAT_00110530") (<< "<<") (number_literal "3")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" (else "else") (compound_statement "{\n      lVar1 = DAT_00110530 * 8;\n      plVar4 = (long *)(DAT_00110520 + lVar1);\n      if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }\n    }" ({ "{") (expression_statement "lVar1 = DAT_00110530 * 8;" (assignment_expression "lVar1 = DAT_00110530 * 8" (identifier "lVar1") (= "=") (binary_expression "DAT_00110530 * 8" (identifier "DAT_00110530") (* "*") (number_literal "8"))) (; ";")) (expression_statement "plVar4 = (long *)(DAT_00110520 + lVar1);" (assignment_expression "plVar4 = (long *)(DAT_00110520 + lVar1)" (identifier "plVar4") (= "=") (cast_expression "(long *)(DAT_00110520 + lVar1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00110520 + lVar1)" (( "(") (binary_expression "DAT_00110520 + lVar1" (identifier "DAT_00110520") (+ "+") (identifier "lVar1")) () ")")))) (; ";")) (if_statement "if (*plVar4 != 0) {\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }" (if "if") (parenthesized_expression "(*plVar4 != 0)" (( "(") (binary_expression "*plVar4 != 0" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        DAT_00110530 = DAT_00110530 + 1;\n        *DAT_00110510 = DAT_0011051c;\n        lVar2 = *plVar4;\n        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;\n        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;\n        plVar4 = (long *)(lVar3 + 8 + lVar1);\n      }" ({ "{") (expression_statement "DAT_00110530 = DAT_00110530 + 1;" (assignment_expression "DAT_00110530 = DAT_00110530 + 1" (identifier "DAT_00110530") (= "=") (binary_expression "DAT_00110530 + 1" (identifier "DAT_00110530") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*DAT_00110510 = DAT_0011051c;" (assignment_expression "*DAT_00110510 = DAT_0011051c" (pointer_expression "*DAT_00110510" (* "*") (identifier "DAT_00110510")) (= "=") (identifier "DAT_0011051c")) (; ";")) (expression_statement "lVar2 = *plVar4;" (assignment_expression "lVar2 = *plVar4" (identifier "lVar2") (= "=") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (; ";")) (expression_statement "*(undefined1 **)(lVar2 + 0x10) = DAT_00110510;" (assignment_expression "*(undefined1 **)(lVar2 + 0x10) = DAT_00110510" (pointer_expression "*(undefined1 **)(lVar2 + 0x10)" (* "*") (cast_expression "(undefined1 **)(lVar2 + 0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "DAT_00110510")) (; ";")) (expression_statement "*(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;" (assignment_expression "*(undefined4 *)(lVar2 + 0x1c) = DAT_00110518" (pointer_expression "*(undefined4 *)(lVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(lVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x1c)" (( "(") (binary_expression "lVar2 + 0x1c" (identifier "lVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "DAT_00110518")) (; ";")) (expression_statement "plVar4 = (long *)(lVar3 + 8 + lVar1);" (assignment_expression "plVar4 = (long *)(lVar3 + 8 + lVar1)" (identifier "plVar4") (= "=") (cast_expression "(long *)(lVar3 + 8 + lVar1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8 + lVar1)" (( "(") (binary_expression "lVar3 + 8 + lVar1" (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) (+ "+") (identifier "lVar1")) () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*plVar4 = (long)param_1;" (assignment_expression "*plVar4 = (long)param_1" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (= "=") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (; ";")) (expression_statement "DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);" (assignment_expression "DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c)" (identifier "DAT_00110518") (= "=") (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1c)" (( "(") (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "DAT_00110510 = (undefined1 *)param_1[2];" (assignment_expression "DAT_00110510 = (undefined1 *)param_1[2]" (identifier "DAT_00110510") (= "=") (cast_expression "(undefined1 *)param_1[2]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "DAT_001104f0 = *param_1;" (assignment_expression "DAT_001104f0 = *param_1" (identifier "DAT_001104f0") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "DAT_001106a0 = DAT_00110510;" (assignment_expression "DAT_001106a0 = DAT_00110510" (identifier "DAT_001106a0") (= "=") (identifier "DAT_00110510")) (; ";")) (expression_statement "DAT_0011051c = *DAT_00110510;" (assignment_expression "DAT_0011051c = *DAT_00110510" (identifier "DAT_0011051c") (= "=") (pointer_expression "*DAT_00110510" (* "*") (identifier "DAT_00110510"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 var_1)

{
  type_1 pyVar1;
  type_1 *var_5;
  size_t var_6;
  type_1 *ppyVar4;
  
  if (var_1 != (type_1)0x0) {
    var_2();
    var_6 = var_4;
    var_5 = var_3;
    if (var_3 == (type_1 *)0x0) {
      ppyVar4 = (type_1 *)(var_4 << 3);
    }
    else {
      ppyVar4 = var_3 + var_4;
      if (*ppyVar4 != (type_1)0x0) {
        var_4 = var_4 + 1;
        *yy_c_buf_p = yy_hold_char;
        pyVar1 = *ppyVar4;
        pyVar1->yy_buf_pos = yy_c_buf_p;
        pyVar1->yy_n_chars = yy_n_chars;
        ppyVar4 = var_5 + var_6 + 1;
      }
    }
    *ppyVar4 = var_1;
    yy_n_chars = var_1->yy_n_chars;
    yy_c_buf_p = var_1->yy_buf_pos;
    yyin = var_1->yy_input_file;
    yytext = yy_c_buf_p;
    yy_hold_char = *yy_c_buf_p;
    return;
  }
  return;
}


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

void MASKED(undefined8 *param_1)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  
  if (param_1 != (undefined8 *)0x0) {
    FUN_001050e0();
    lVar3 = DAT_00110520;
    if (DAT_00110520 == 0) {
      plVar4 = (long *)(DAT_00110530 << 3);
    }
    else {
      lVar1 = DAT_00110530 * 8;
      plVar4 = (long *)(DAT_00110520 + lVar1);
      if (*plVar4 != 0) {
        DAT_00110530 = DAT_00110530 + 1;
        *DAT_00110510 = DAT_0011051c;
        lVar2 = *plVar4;
        *(undefined1 **)(lVar2 + 0x10) = DAT_00110510;
        *(undefined4 *)(lVar2 + 0x1c) = DAT_00110518;
        plVar4 = (long *)(lVar3 + 8 + lVar1);
      }
    }
    *plVar4 = (long)param_1;
    DAT_00110518 = *(undefined4 *)((long)param_1 + 0x1c);
    DAT_00110510 = (undefined1 *)param_1[2];
    DAT_001104f0 = *param_1;
    DAT_001106a0 = DAT_00110510;
    DAT_0011051c = *DAT_00110510;
    return;
  }
  return;
}

