
void invokeProfileCallback(sqlite3 *db,Vdbe *p)

{
  long in_FS_OFFSET;
  sqlite3_int64 iNow;
  sqlite3_int64 iElapse;
  long local_20;
  
  local_20 = *(long *)(in_FS_OFFSET + 0x28);
  sqlite3OsCurrentTimeInt64(db->pVfs,&iNow);
  iElapse = (iNow - p->startTime) * 1000000;
  if (db->xProfile != (_func_void_void_ptr_char_ptr_u64 *)0x0) {
    (*db->xProfile)(db->pProfileArg,p->zSql,iElapse);
  }
  if ((db->mTrace & 2) != 0) {
    (*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);
  }
  p->startTime = 0;
  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



void FUN_0010f6c2(undefined8 *param_1,long param_2)

{
  long in_FS_OFFSET;
  long local_30;
  long local_28;
  long local_20;
  
  local_20 = *(long *)(in_FS_OFFSET + 0x28);
  FUN_0010caeb(*param_1,&local_30);
  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;
  if ((code *)param_1[0x1e] != (code *)0x0) {
    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));
  }
  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {
    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);
  }
  *(undefined8 *)(param_2 + 0xb8) = 0;
  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV RBX,RDI
MOV RBP,RSI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RAX
XOR EAX,EAX
LEA RSI,[RSP + 0x8]
MOV RDI,qword ptr [RDI]
CALL 0x0010caeb
MOV RDX,qword ptr [RSP + 0x8]
SUB RDX,qword ptr [RBP + 0xb8]
IMUL RDX,RDX,0xf4240
MOV qword ptr [RSP + 0x10],RDX
MOV RAX,qword ptr [RBX + 0xf0]
TEST RAX,RAX
JZ 0x0010f71f
MOV RSI,qword ptr [RBP + 0xf0]
MOV RDI,qword ptr [RBX + 0xf8]
CALL RAX
TEST byte ptr [RBX + 0x68],0x2
JZ 0x0010f73f
LEA RCX,[RSP + 0x10]
MOV RSI,qword ptr [RBX + 0xe8]
MOV RDX,RBP
MOV EDI,0x2
CALL qword ptr [RBX + 0xe0]
MOV qword ptr [RBP + 0xb8],0x0
MOV RAX,qword ptr [RSP + 0x18]
XOR RAX,qword ptr FS:[0x28]
JNZ 0x0010f761
ADD RSP,0x28
POP RBX
POP RBP
RET
CALL 0x0010c0d0
(translation_unit "void FUN_0010f6c2(undefined8 *param_1,long param_2)\n\n{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "void FUN_0010f6c2(undefined8 *param_1,long param_2)\n\n{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_0010f6c2(undefined8 *param_1,long param_2)" identifier (parameter_list "(undefined8 *param_1,long param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_28;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_20;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_20 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_20 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "FUN_0010caeb(*param_1,&local_30);" (call_expression "FUN_0010caeb(*param_1,&local_30)" identifier (argument_list "(*param_1,&local_30)" ( (pointer_expression "*param_1" * identifier) , (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;" (assignment_expression "local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000" identifier = (binary_expression "(local_30 - *(long *)(param_2 + 0xb8)) * 1000000" (parenthesized_expression "(local_30 - *(long *)(param_2 + 0xb8))" ( (binary_expression "local_30 - *(long *)(param_2 + 0xb8)" identifier - (pointer_expression "*(long *)(param_2 + 0xb8)" * (cast_expression "(long *)(param_2 + 0xb8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb8)" ( (binary_expression "param_2 + 0xb8" identifier + number_literal) ))))) )) * number_literal)) ;) (if_statement "if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }" if (parenthesized_expression "((code *)param_1[0x1e] != (code *)0x0)" ( (binary_expression "(code *)param_1[0x1e] != (code *)0x0" (cast_expression "(code *)param_1[0x1e]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }" { (expression_statement "(*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));" (call_expression "(*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0))" (parenthesized_expression "(*(code *)param_1[0x1e])" ( (pointer_expression "*(code *)param_1[0x1e]" * (cast_expression "(code *)param_1[0x1e]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) )) (argument_list "(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0))" ( (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) , (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) )))) ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xd) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xd) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd) & 2)" ( (binary_expression "*(byte *)(param_1 + 0xd) & 2" (pointer_expression "*(byte *)(param_1 + 0xd)" * (cast_expression "(byte *)(param_1 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }" { (expression_statement "(*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);" (call_expression "(*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28)" (parenthesized_expression "(*(code *)param_1[0x1c])" ( (pointer_expression "*(code *)param_1[0x1c]" * (cast_expression "(code *)param_1[0x1c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ]))) )) (argument_list "(2,param_1[0x1d],param_2,&local_28)" ( number_literal , (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_28" & identifier) ))) ;) })) (expression_statement "*(undefined8 *)(param_2 + 0xb8) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0xb8) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0xb8)" * (cast_expression "(undefined8 *)(param_2 + 0xb8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb8)" ( (binary_expression "param_2 + 0xb8" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_20 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void invokeProfileCallback(sqlite3 *db,Vdbe *p)\n\n{\n  long in_FS_OFFSET;\n  sqlite3_int64 iNow;\n  sqlite3_int64 iElapse;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  sqlite3OsCurrentTimeInt64(db->pVfs,&iNow);\n  iElapse = (iNow - p->startTime) * 1000000;\n  if (db->xProfile != (_func_void_void_ptr_char_ptr_u64 *)0x0) {\n    (*db->xProfile)(db->pProfileArg,p->zSql,iElapse);\n  }\n  if ((db->mTrace & 2) != 0) {\n    (*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);\n  }\n  p->startTime = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "void invokeProfileCallback(sqlite3 *db,Vdbe *p)\n\n{\n  long in_FS_OFFSET;\n  sqlite3_int64 iNow;\n  sqlite3_int64 iElapse;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  sqlite3OsCurrentTimeInt64(db->pVfs,&iNow);\n  iElapse = (iNow - p->startTime) * 1000000;\n  if (db->xProfile != (_func_void_void_ptr_char_ptr_u64 *)0x0) {\n    (*db->xProfile)(db->pProfileArg,p->zSql,iElapse);\n  }\n  if ((db->mTrace & 2) != 0) {\n    (*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);\n  }\n  p->startTime = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "invokeProfileCallback(sqlite3 *db,Vdbe *p)" identifier (parameter_list "(sqlite3 *db,Vdbe *p)" ( (parameter_declaration "sqlite3 *db" type_identifier (pointer_declarator "*db" * identifier)) , (parameter_declaration "Vdbe *p" type_identifier (pointer_declarator "*p" * identifier)) ))) (compound_statement "{\n  long in_FS_OFFSET;\n  sqlite3_int64 iNow;\n  sqlite3_int64 iElapse;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  sqlite3OsCurrentTimeInt64(db->pVfs,&iNow);\n  iElapse = (iNow - p->startTime) * 1000000;\n  if (db->xProfile != (_func_void_void_ptr_char_ptr_u64 *)0x0) {\n    (*db->xProfile)(db->pProfileArg,p->zSql,iElapse);\n  }\n  if ((db->mTrace & 2) != 0) {\n    (*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);\n  }\n  p->startTime = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "sqlite3_int64 iNow;" type_identifier identifier ;) (declaration "sqlite3_int64 iElapse;" type_identifier identifier ;) (declaration "long local_20;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_20 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_20 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "sqlite3OsCurrentTimeInt64(db->pVfs,&iNow);" (call_expression "sqlite3OsCurrentTimeInt64(db->pVfs,&iNow)" identifier (argument_list "(db->pVfs,&iNow)" ( (field_expression "db->pVfs" identifier -> field_identifier) , (pointer_expression "&iNow" & identifier) ))) ;) (expression_statement "iElapse = (iNow - p->startTime) * 1000000;" (assignment_expression "iElapse = (iNow - p->startTime) * 1000000" identifier = (binary_expression "(iNow - p->startTime) * 1000000" (parenthesized_expression "(iNow - p->startTime)" ( (binary_expression "iNow - p->startTime" identifier - (field_expression "p->startTime" identifier -> field_identifier)) )) * number_literal)) ;) (if_statement "if (db->xProfile != (_func_void_void_ptr_char_ptr_u64 *)0x0) {\n    (*db->xProfile)(db->pProfileArg,p->zSql,iElapse);\n  }" if (parenthesized_expression "(db->xProfile != (_func_void_void_ptr_char_ptr_u64 *)0x0)" ( (binary_expression "db->xProfile != (_func_void_void_ptr_char_ptr_u64 *)0x0" (field_expression "db->xProfile" identifier -> field_identifier) != (cast_expression "(_func_void_void_ptr_char_ptr_u64 *)0x0" ( (type_descriptor "_func_void_void_ptr_char_ptr_u64 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*db->xProfile)(db->pProfileArg,p->zSql,iElapse);\n  }" { (expression_statement "(*db->xProfile)(db->pProfileArg,p->zSql,iElapse);" (call_expression "(*db->xProfile)(db->pProfileArg,p->zSql,iElapse)" (parenthesized_expression "(*db->xProfile)" ( (pointer_expression "*db->xProfile" * (field_expression "db->xProfile" identifier -> field_identifier)) )) (argument_list "(db->pProfileArg,p->zSql,iElapse)" ( (field_expression "db->pProfileArg" identifier -> field_identifier) , (field_expression "p->zSql" identifier -> field_identifier) , identifier ))) ;) })) (if_statement "if ((db->mTrace & 2) != 0) {\n    (*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);\n  }" if (parenthesized_expression "((db->mTrace & 2) != 0)" ( (binary_expression "(db->mTrace & 2) != 0" (parenthesized_expression "(db->mTrace & 2)" ( (binary_expression "db->mTrace & 2" (field_expression "db->mTrace" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    (*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);\n  }" { (expression_statement "(*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);" (call_expression "(*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg)" (parenthesized_expression "(*(db->trace).xLegacy)" ( (pointer_expression "*(db->trace).xLegacy" * (field_expression "(db->trace).xLegacy" (parenthesized_expression "(db->trace)" ( (field_expression "db->trace" identifier -> field_identifier) )) . field_identifier)) )) (argument_list "((void *)0x2,(char *)db->pTraceArg)" ( (cast_expression "(void *)0x2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)db->pTraceArg" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "db->pTraceArg" identifier -> field_identifier)) ))) ;) })) (expression_statement "p->startTime = 0;" (assignment_expression "p->startTime = 0" (field_expression "p->startTime" identifier -> field_identifier) = number_literal) ;) (if_statement "if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_20 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_0010f6c2(undefined8 *param_1,long param_2)\n\n{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "void FUN_0010f6c2(undefined8 *param_1,long param_2)\n\n{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_0010f6c2(undefined8 *param_1,long param_2)" identifier (parameter_list "(undefined8 *param_1,long param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_28;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_20;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_20 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_20 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "FUN_0010caeb(*param_1,&local_30);" (call_expression "FUN_0010caeb(*param_1,&local_30)" identifier (argument_list "(*param_1,&local_30)" ( (pointer_expression "*param_1" * identifier) , (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;" (assignment_expression "local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000" identifier = (binary_expression "(local_30 - *(long *)(param_2 + 0xb8)) * 1000000" (parenthesized_expression "(local_30 - *(long *)(param_2 + 0xb8))" ( (binary_expression "local_30 - *(long *)(param_2 + 0xb8)" identifier - (pointer_expression "*(long *)(param_2 + 0xb8)" * (cast_expression "(long *)(param_2 + 0xb8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb8)" ( (binary_expression "param_2 + 0xb8" identifier + number_literal) ))))) )) * number_literal)) ;) (if_statement "if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }" if (parenthesized_expression "((code *)param_1[0x1e] != (code *)0x0)" ( (binary_expression "(code *)param_1[0x1e] != (code *)0x0" (cast_expression "(code *)param_1[0x1e]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }" { (expression_statement "(*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));" (call_expression "(*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0))" (parenthesized_expression "(*(code *)param_1[0x1e])" ( (pointer_expression "*(code *)param_1[0x1e]" * (cast_expression "(code *)param_1[0x1e]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) )) (argument_list "(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0))" ( (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) , (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) )))) ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xd) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xd) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd) & 2)" ( (binary_expression "*(byte *)(param_1 + 0xd) & 2" (pointer_expression "*(byte *)(param_1 + 0xd)" * (cast_expression "(byte *)(param_1 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }" { (expression_statement "(*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);" (call_expression "(*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28)" (parenthesized_expression "(*(code *)param_1[0x1c])" ( (pointer_expression "*(code *)param_1[0x1c]" * (cast_expression "(code *)param_1[0x1c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ]))) )) (argument_list "(2,param_1[0x1d],param_2,&local_28)" ( number_literal , (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_28" & identifier) ))) ;) })) (expression_statement "*(undefined8 *)(param_2 + 0xb8) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0xb8) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0xb8)" * (cast_expression "(undefined8 *)(param_2 + 0xb8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb8)" ( (binary_expression "param_2 + 0xb8" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_20 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) 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) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( LIT , (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_0010f6c2(undefined8 *param_1,long param_2)\n\n{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" (primitive_type "void") (function_declarator "FUN_0010f6c2(undefined8 *param_1,long param_2)" (identifier "FUN_0010f6c2") (parameter_list "(undefined8 *param_1,long param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  long in_FS_OFFSET;\n  long local_30;\n  long local_28;\n  long local_20;\n  \n  local_20 = *(long *)(in_FS_OFFSET + 0x28);\n  FUN_0010caeb(*param_1,&local_30);\n  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;\n  if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }\n  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }\n  *(undefined8 *)(param_2 + 0xb8) = 0;\n  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "long local_30;" (sized_type_specifier "long" (long "long")) (identifier "local_30") (; ";")) (declaration "long local_28;" (sized_type_specifier "long" (long "long")) (identifier "local_28") (; ";")) (declaration "long local_20;" (sized_type_specifier "long" (long "long")) (identifier "local_20") (; ";")) (expression_statement "local_20 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_20 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_20") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "FUN_0010caeb(*param_1,&local_30);" (call_expression "FUN_0010caeb(*param_1,&local_30)" (identifier "FUN_0010caeb") (argument_list "(*param_1,&local_30)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (expression_statement "local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;" (assignment_expression "local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000" (identifier "local_28") (= "=") (binary_expression "(local_30 - *(long *)(param_2 + 0xb8)) * 1000000" (parenthesized_expression "(local_30 - *(long *)(param_2 + 0xb8))" (( "(") (binary_expression "local_30 - *(long *)(param_2 + 0xb8)" (identifier "local_30") (- "-") (pointer_expression "*(long *)(param_2 + 0xb8)" (* "*") (cast_expression "(long *)(param_2 + 0xb8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xb8)" (( "(") (binary_expression "param_2 + 0xb8" (identifier "param_2") (+ "+") (number_literal "0xb8")) () ")"))))) () ")")) (* "*") (number_literal "1000000"))) (; ";")) (if_statement "if ((code *)param_1[0x1e] != (code *)0x0) {\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }" (if "if") (parenthesized_expression "((code *)param_1[0x1e] != (code *)0x0)" (( "(") (binary_expression "(code *)param_1[0x1e] != (code *)0x0" (cast_expression "(code *)param_1[0x1e]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]"))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));\n  }" ({ "{") (expression_statement "(*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));" (call_expression "(*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0))" (parenthesized_expression "(*(code *)param_1[0x1e])" (( "(") (pointer_expression "*(code *)param_1[0x1e]" (* "*") (cast_expression "(code *)param_1[0x1e]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")))) () ")")) (argument_list "(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0))" (( "(") (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]")) (, ",") (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0xf0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xf0)" (( "(") (binary_expression "param_2 + 0xf0" (identifier "param_2") (+ "+") (number_literal "0xf0")) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0xd) & 2) != 0) {\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0xd) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xd) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0xd) & 2" (pointer_expression "*(byte *)(param_1 + 0xd)" (* "*") (cast_expression "(byte *)(param_1 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd)" (( "(") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);\n  }" ({ "{") (expression_statement "(*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);" (call_expression "(*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28)" (parenthesized_expression "(*(code *)param_1[0x1c])" (( "(") (pointer_expression "*(code *)param_1[0x1c]" (* "*") (cast_expression "(code *)param_1[0x1c]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")))) () ")")) (argument_list "(2,param_1[0x1d],param_2,&local_28)" (( "(") (number_literal "2") (, ",") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")) (, ",") (identifier "param_2") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined8 *)(param_2 + 0xb8) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0xb8) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0xb8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0xb8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xb8)" (( "(") (binary_expression "param_2 + 0xb8" (identifier "param_2") (+ "+") (number_literal "0xb8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_20 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_20 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_20") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

void function_1(type_1 *db,type_2 *p)

{
  long var_1;
  type_3 var_3;
  type_3 iElapse;
  long var_4;
  
  var_4 = *(long *)(var_1 + 0x28);
  var_2(db->pVfs,&var_3);
  iElapse = (var_3 - p->startTime) * 1000000;
  if (db->xProfile != (type_4 *)0x0) {
    (*db->xProfile)(db->pProfileArg,p->zSql,iElapse);
  }
  if ((db->mTrace & 2) != 0) {
    (*(db->trace).xLegacy)((void *)0x2,(char *)db->pTraceArg);
  }
  p->startTime = 0;
  if (var_4 == *(long *)(var_1 + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_5();
}


(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))) (parameter_declaration type: (sized_type_specifier) 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: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (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)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (number_literal) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (pointer_expression argument: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

void MASKED(undefined8 *param_1,long param_2)

{
  long in_FS_OFFSET;
  long local_30;
  long local_28;
  long local_20;
  
  local_20 = *(long *)(in_FS_OFFSET + 0x28);
  FUN_0010caeb(*param_1,&local_30);
  local_28 = (local_30 - *(long *)(param_2 + 0xb8)) * 1000000;
  if ((code *)param_1[0x1e] != (code *)0x0) {
    (*(code *)param_1[0x1e])(param_1[0x1f],*(undefined8 *)(param_2 + 0xf0));
  }
  if ((*(byte *)(param_1 + 0xd) & 2) != 0) {
    (*(code *)param_1[0x1c])(2,param_1[0x1d],param_2,&local_28);
  }
  *(undefined8 *)(param_2 + 0xb8) = 0;
  if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

