
/* DWARF original prototype: void sqlite3MaterializeView(Parse * pParse, Table * pView, Expr *
   pWhere, ExprList * pOrderBy, Expr * pLimit, int iCur, Table * pView) */

void sqlite3MaterializeView
               (Parse *pParse,Table *pView,Expr *pWhere,ExprList *pOrderBy,Expr *pLimit,int iCur,
               Table *pView_1)

{
  sqlite3 *db;
  long lVar1;
  SrcList *pSrc;
  char *pcVar2;
  Select *p;
  undefined4 in_register_0000008c;
  long in_FS_OFFSET;
  int local_6c;
  SelectDest dest;
  
  db = pParse->db;
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  if (pWhere == (Expr *)0x0) {
    local_6c = -1000000;
  }
  else {
    local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);
  }
  if (pOrderBy != (ExprList *)0x0) {
    pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0);
  }
  pSrc = sqlite3SrcListAppend(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0);
  if (pSrc != (SrcList *)0x0) {
    pcVar2 = sqlite3DbStrDup(db,pView->zName);
    pSrc->a[0].zName = pcVar2;
    pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName);
    pSrc->a[0].zDatabase = pcVar2;
  }
  p = sqlite3SelectNew(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,
                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur));
  dest.eDest = '\f';
  dest.iSdst = 0;
  dest.nSdst = 0;
  dest.zAffSdst = (char *)0x0;
  dest.iSDParm = (int)pView_1;
  sqlite3Select(pParse,p,&dest);
  if (p != (Select *)0x0) {
    clearSelect(db,p,1);
  }
  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



void FUN_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,
                 undefined8 param_6,undefined4 param_7)

{
  long lVar1;
  long lVar2;
  undefined8 uVar3;
  long in_FS_OFFSET;
  int local_6c;
  undefined1 local_68 [4];
  undefined4 local_64;
  undefined8 local_60;
  undefined8 local_58;
  long local_40;
  
  lVar1 = *param_1;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_3 == 0) {
    local_6c = -1000000;
  }
  else {
    local_6c = FUN_001234c0(lVar1,param_3);
  }
  if (param_4 != 0) {
    param_4 = FUN_00130750(lVar1,param_4,0,0);
  }
  lVar2 = FUN_00150df0(param_1,0,0,0);
  if (lVar2 != 0) {
    uVar3 = FUN_0011bd40(lVar1,*param_2);
    *(undefined8 *)(lVar2 + 0x18) = uVar3;
    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));
    *(undefined8 *)(lVar2 + 0x10) = uVar3;
  }
  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);
  local_68[0] = 0xc;
  local_60 = 0;
  local_58 = 0;
  local_64 = param_7;
  FUN_00181820(param_1,lVar2,local_68);
  if (lVar2 != 0) {
    FUN_0012ca60(lVar1,lVar2,1);
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
MOV R14,R9
PUSH R13
MOV R13,R8
PUSH R12
MOV R12,RCX
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x48
MOV RBP,qword ptr [RDI]
MOV qword ptr [RSP],RSI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x38],RAX
XOR EAX,EAX
TEST RDX,RDX
JZ 0x00195f95
MOV RSI,RDX
MOV RDI,RBP
CALL 0x001234c0
MOV dword ptr [RSP + 0xc],EAX
TEST R12,R12
JZ 0x00195ec0
MOV RSI,R12
XOR ECX,ECX
XOR EDX,EDX
MOV RDI,RBP
CALL 0x00130750
MOV R12,RAX
XOR ECX,ECX
XOR EDX,EDX
XOR ESI,ESI
MOV RDI,RBX
CALL 0x00150df0
MOV R15,RAX
TEST RAX,RAX
JZ 0x00195f05
MOV RAX,qword ptr [RSP]
MOV RDI,RBP
MOV RSI,qword ptr [RAX]
CALL 0x0011bd40
MOV RDI,RBP
MOV qword ptr [R15 + 0x18],RAX
MOVSXD RAX,dword ptr [RSP + 0xc]
SHL RAX,0x5
ADD RAX,qword ptr [RBP + 0x20]
MOV RSI,qword ptr [RAX]
CALL 0x0011bd40
MOV qword ptr [R15 + 0x10],RAX
SUB RSP,0x8
XOR ESI,ESI
XOR R9D,R9D
XOR R8D,R8D
PUSH R14
MOV RCX,R12
MOV RDX,R15
MOV RDI,RBX
PUSH 0x20000
PUSH R13
CALL 0x0013e100
MOV byte ptr [RSP + 0x30],0xc
MOV RDI,RBX
MOV qword ptr [RSP + 0x38],0x0
MOV R12,RAX
MOV EAX,dword ptr [RSP + 0xa0]
MOV qword ptr [RSP + 0x40],0x0
MOV RSI,R12
MOV dword ptr [RSP + 0x34],EAX
ADD RSP,0x20
LEA RDX,[RSP + 0x10]
CALL 0x00181820
TEST R12,R12
JZ 0x00195f76
MOV EDX,0x1
MOV RSI,R12
MOV RDI,RBP
CALL 0x0012ca60
MOV RAX,qword ptr [RSP + 0x38]
XOR RAX,qword ptr FS:[0x28]
JNZ 0x00195fa2
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV dword ptr [RSP + 0xc],0xfff0bdc0
JMP 0x00195ea9
CALL 0x0010a140
(translation_unit "void FUN_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(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_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)" identifier (parameter_list "(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "undefined1 local_68 [4];" type_identifier (array_declarator "local_68 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar1 = *param_1;" (assignment_expression "lVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(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) ))))) ;) (if_statement "if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    local_6c = -1000000;\n  }" { (expression_statement "local_6c = -1000000;" (assignment_expression "local_6c = -1000000" identifier = number_literal) ;) }) (else_clause "else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" else (compound_statement "{\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" { (expression_statement "local_6c = FUN_001234c0(lVar1,param_3);" (assignment_expression "local_6c = FUN_001234c0(lVar1,param_3)" identifier = (call_expression "FUN_001234c0(lVar1,param_3)" identifier (argument_list "(lVar1,param_3)" ( identifier , identifier )))) ;) }))) (if_statement "if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }" { (expression_statement "param_4 = FUN_00130750(lVar1,param_4,0,0);" (assignment_expression "param_4 = FUN_00130750(lVar1,param_4,0,0)" identifier = (call_expression "FUN_00130750(lVar1,param_4,0,0)" identifier (argument_list "(lVar1,param_4,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) })) (expression_statement "lVar2 = FUN_00150df0(param_1,0,0,0);" (assignment_expression "lVar2 = FUN_00150df0(param_1,0,0,0)" identifier = (call_expression "FUN_00150df0(param_1,0,0,0)" identifier (argument_list "(param_1,0,0,0)" ( identifier , number_literal , number_literal , number_literal )))) ;) (if_statement "if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }" { (expression_statement "uVar3 = FUN_0011bd40(lVar1,*param_2);" (assignment_expression "uVar3 = FUN_0011bd40(lVar1,*param_2)" identifier = (call_expression "FUN_0011bd40(lVar1,*param_2)" identifier (argument_list "(lVar1,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) )))) ;) (expression_statement "*(undefined8 *)(lVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x18) = uVar3" (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" * (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));" (assignment_expression "uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" identifier = (call_expression "FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" identifier (argument_list "(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" ( identifier , (pointer_expression "*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" * (cast_expression "(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" ( (binary_expression "(long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)" (binary_expression "(long)local_6c * 0x20" (cast_expression "(long)local_6c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + (pointer_expression "*(long *)(lVar1 + 0x20)" * (cast_expression "(long *)(lVar1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) ))))) )))) )))) ;) (expression_statement "*(undefined8 *)(lVar2 + 0x10) = uVar3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x10) = uVar3" (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);" (assignment_expression "lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" identifier = (call_expression "FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" identifier (argument_list "(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" ( identifier , number_literal , identifier , identifier , number_literal , number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "local_68[0] = 0xc;" (assignment_expression "local_68[0] = 0xc" (subscript_expression "local_68[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_64 = param_7;" (assignment_expression "local_64 = param_7" identifier = identifier) ;) (expression_statement "FUN_00181820(param_1,lVar2,local_68);" (call_expression "FUN_00181820(param_1,lVar2,local_68)" identifier (argument_list "(param_1,lVar2,local_68)" ( identifier , identifier , identifier ))) ;) (if_statement "if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0012ca60(lVar1,lVar2,1);\n  }" { (expression_statement "FUN_0012ca60(lVar1,lVar2,1);" (call_expression "FUN_0012ca60(lVar1,lVar2,1)" identifier (argument_list "(lVar1,lVar2,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(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 "/* DWARF original prototype: void sqlite3MaterializeView(Parse * pParse, Table * pView, Expr *\n   pWhere, ExprList * pOrderBy, Expr * pLimit, int iCur, Table * pView) */\n\nvoid sqlite3MaterializeView\n               (Parse *pParse,Table *pView,Expr *pWhere,ExprList *pOrderBy,Expr *pLimit,int iCur,\n               Table *pView_1)\n\n{\n  sqlite3 *db;\n  long lVar1;\n  SrcList *pSrc;\n  char *pcVar2;\n  Select *p;\n  undefined4 in_register_0000008c;\n  long in_FS_OFFSET;\n  int local_6c;\n  SelectDest dest;\n  \n  db = pParse->db;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if (pWhere == (Expr *)0x0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);\n  }\n  if (pOrderBy != (ExprList *)0x0) {\n    pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0);\n  }\n  pSrc = sqlite3SrcListAppend(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0);\n  if (pSrc != (SrcList *)0x0) {\n    pcVar2 = sqlite3DbStrDup(db,pView->zName);\n    pSrc->a[0].zName = pcVar2;\n    pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName);\n    pSrc->a[0].zDatabase = pcVar2;\n  }\n  p = sqlite3SelectNew(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,\n                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur));\n  dest.eDest = '\f';\n  dest.iSdst = 0;\n  dest.nSdst = 0;\n  dest.zAffSdst = (char *)0x0;\n  dest.iSDParm = (int)pView_1;\n  sqlite3Select(pParse,p,&dest);\n  if (p != (Select *)0x0) {\n    clearSelect(db,p,1);\n  }\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment (function_definition "void sqlite3MaterializeView\n               (Parse *pParse,Table *pView,Expr *pWhere,ExprList *pOrderBy,Expr *pLimit,int iCur,\n               Table *pView_1)\n\n{\n  sqlite3 *db;\n  long lVar1;\n  SrcList *pSrc;\n  char *pcVar2;\n  Select *p;\n  undefined4 in_register_0000008c;\n  long in_FS_OFFSET;\n  int local_6c;\n  SelectDest dest;\n  \n  db = pParse->db;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if (pWhere == (Expr *)0x0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);\n  }\n  if (pOrderBy != (ExprList *)0x0) {\n    pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0);\n  }\n  pSrc = sqlite3SrcListAppend(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0);\n  if (pSrc != (SrcList *)0x0) {\n    pcVar2 = sqlite3DbStrDup(db,pView->zName);\n    pSrc->a[0].zName = pcVar2;\n    pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName);\n    pSrc->a[0].zDatabase = pcVar2;\n  }\n  p = sqlite3SelectNew(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,\n                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur));\n  dest.eDest = '\f';\n  dest.iSdst = 0;\n  dest.nSdst = 0;\n  dest.zAffSdst = (char *)0x0;\n  dest.iSDParm = (int)pView_1;\n  sqlite3Select(pParse,p,&dest);\n  if (p != (Select *)0x0) {\n    clearSelect(db,p,1);\n  }\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "sqlite3MaterializeView\n               (Parse *pParse,Table *pView,Expr *pWhere,ExprList *pOrderBy,Expr *pLimit,int iCur,\n               Table *pView_1)" identifier (parameter_list "(Parse *pParse,Table *pView,Expr *pWhere,ExprList *pOrderBy,Expr *pLimit,int iCur,\n               Table *pView_1)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Table *pView" type_identifier (pointer_declarator "*pView" * identifier)) , (parameter_declaration "Expr *pWhere" type_identifier (pointer_declarator "*pWhere" * identifier)) , (parameter_declaration "ExprList *pOrderBy" type_identifier (pointer_declarator "*pOrderBy" * identifier)) , (parameter_declaration "Expr *pLimit" type_identifier (pointer_declarator "*pLimit" * identifier)) , (parameter_declaration "int iCur" primitive_type identifier) , (parameter_declaration "Table *pView_1" type_identifier (pointer_declarator "*pView_1" * identifier)) ))) (compound_statement "{\n  sqlite3 *db;\n  long lVar1;\n  SrcList *pSrc;\n  char *pcVar2;\n  Select *p;\n  undefined4 in_register_0000008c;\n  long in_FS_OFFSET;\n  int local_6c;\n  SelectDest dest;\n  \n  db = pParse->db;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if (pWhere == (Expr *)0x0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);\n  }\n  if (pOrderBy != (ExprList *)0x0) {\n    pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0);\n  }\n  pSrc = sqlite3SrcListAppend(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0);\n  if (pSrc != (SrcList *)0x0) {\n    pcVar2 = sqlite3DbStrDup(db,pView->zName);\n    pSrc->a[0].zName = pcVar2;\n    pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName);\n    pSrc->a[0].zDatabase = pcVar2;\n  }\n  p = sqlite3SelectNew(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,\n                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur));\n  dest.eDest = '\f';\n  dest.iSdst = 0;\n  dest.nSdst = 0;\n  dest.zAffSdst = (char *)0x0;\n  dest.iSDParm = (int)pView_1;\n  sqlite3Select(pParse,p,&dest);\n  if (p != (Select *)0x0) {\n    clearSelect(db,p,1);\n  }\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "SrcList *pSrc;" type_identifier (pointer_declarator "*pSrc" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "Select *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "undefined4 in_register_0000008c;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "SelectDest dest;" type_identifier identifier ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(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) ))))) ;) (if_statement "if (pWhere == (Expr *)0x0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);\n  }" if (parenthesized_expression "(pWhere == (Expr *)0x0)" ( (binary_expression "pWhere == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_6c = -1000000;\n  }" { (expression_statement "local_6c = -1000000;" (assignment_expression "local_6c = -1000000" identifier = number_literal) ;) }) (else_clause "else {\n    local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);\n  }" else (compound_statement "{\n    local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);\n  }" { (expression_statement "local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere);" (assignment_expression "local_6c = sqlite3SchemaToIndex(db,(Schema *)pWhere)" identifier = (call_expression "sqlite3SchemaToIndex(db,(Schema *)pWhere)" identifier (argument_list "(db,(Schema *)pWhere)" ( identifier , (cast_expression "(Schema *)pWhere" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) }))) (if_statement "if (pOrderBy != (ExprList *)0x0) {\n    pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0);\n  }" if (parenthesized_expression "(pOrderBy != (ExprList *)0x0)" ( (binary_expression "pOrderBy != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0);\n  }" { (expression_statement "pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0);" (assignment_expression "pOrderBy = (ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0)" identifier = (cast_expression "(ExprList *)exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0)" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "exprDup(db,(Expr *)pOrderBy,0,(u8 **)0x0)" identifier (argument_list "(db,(Expr *)pOrderBy,0,(u8 **)0x0)" ( identifier , (cast_expression "(Expr *)pOrderBy" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(u8 **)0x0" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ))))) ;) })) (expression_statement "pSrc = sqlite3SrcListAppend(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0);" (assignment_expression "pSrc = sqlite3SrcListAppend(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0)" identifier = (call_expression "sqlite3SrcListAppend(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0)" identifier (argument_list "(pParse,(SrcList *)0x0,(Token *)0x0,(Token *)0x0)" ( identifier , (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Token *)0x0" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Token *)0x0" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (pSrc != (SrcList *)0x0) {\n    pcVar2 = sqlite3DbStrDup(db,pView->zName);\n    pSrc->a[0].zName = pcVar2;\n    pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName);\n    pSrc->a[0].zDatabase = pcVar2;\n  }" if (parenthesized_expression "(pSrc != (SrcList *)0x0)" ( (binary_expression "pSrc != (SrcList *)0x0" identifier != (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar2 = sqlite3DbStrDup(db,pView->zName);\n    pSrc->a[0].zName = pcVar2;\n    pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName);\n    pSrc->a[0].zDatabase = pcVar2;\n  }" { (expression_statement "pcVar2 = sqlite3DbStrDup(db,pView->zName);" (assignment_expression "pcVar2 = sqlite3DbStrDup(db,pView->zName)" identifier = (call_expression "sqlite3DbStrDup(db,pView->zName)" identifier (argument_list "(db,pView->zName)" ( identifier , (field_expression "pView->zName" identifier -> field_identifier) )))) ;) (expression_statement "pSrc->a[0].zName = pcVar2;" (assignment_expression "pSrc->a[0].zName = pcVar2" (field_expression "pSrc->a[0].zName" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName);" (assignment_expression "pcVar2 = sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName)" identifier = (call_expression "sqlite3DbStrDup(db,db->aDb[local_6c].zDbSName)" identifier (argument_list "(db,db->aDb[local_6c].zDbSName)" ( identifier , (field_expression "db->aDb[local_6c].zDbSName" (subscript_expression "db->aDb[local_6c]" (field_expression "db->aDb" identifier -> field_identifier) [ identifier ]) . field_identifier) )))) ;) (expression_statement "pSrc->a[0].zDatabase = pcVar2;" (assignment_expression "pSrc->a[0].zDatabase = pcVar2" (field_expression "pSrc->a[0].zDatabase" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) })) (expression_statement "p = sqlite3SelectNew(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,\n                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur));" (assignment_expression "p = sqlite3SelectNew(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,\n                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur))" identifier = (call_expression "sqlite3SelectNew(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,\n                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur))" identifier (argument_list "(pParse,(ExprList *)0x0,pSrc,(Expr *)pOrderBy,(ExprList *)0x0,(Expr *)0x0,\n                       (ExprList *)pLimit,0x20000,(Expr *)CONCAT44(in_register_0000008c,iCur))" ( identifier , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , (cast_expression "(Expr *)pOrderBy" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(ExprList *)pLimit" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(Expr *)CONCAT44(in_register_0000008c,iCur)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(in_register_0000008c,iCur)" identifier (argument_list "(in_register_0000008c,iCur)" ( identifier , identifier )))) )))) ;) (expression_statement "dest.eDest = '\f';" (assignment_expression "dest.eDest = '\f'" (field_expression "dest.eDest" identifier . field_identifier) = (char_literal "'\f'" ' escape_sequence ')) ;) (expression_statement "dest.iSdst = 0;" (assignment_expression "dest.iSdst = 0" (field_expression "dest.iSdst" identifier . field_identifier) = number_literal) ;) (expression_statement "dest.nSdst = 0;" (assignment_expression "dest.nSdst = 0" (field_expression "dest.nSdst" identifier . field_identifier) = number_literal) ;) (expression_statement "dest.zAffSdst = (char *)0x0;" (assignment_expression "dest.zAffSdst = (char *)0x0" (field_expression "dest.zAffSdst" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dest.iSDParm = (int)pView_1;" (assignment_expression "dest.iSDParm = (int)pView_1" (field_expression "dest.iSDParm" identifier . field_identifier) = (cast_expression "(int)pView_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sqlite3Select(pParse,p,&dest);" (call_expression "sqlite3Select(pParse,p,&dest)" identifier (argument_list "(pParse,p,&dest)" ( identifier , identifier , (pointer_expression "&dest" & identifier) ))) ;) (if_statement "if (p != (Select *)0x0) {\n    clearSelect(db,p,1);\n  }" if (parenthesized_expression "(p != (Select *)0x0)" ( (binary_expression "p != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    clearSelect(db,p,1);\n  }" { (expression_statement "clearSelect(db,p,1);" (call_expression "clearSelect(db,p,1)" identifier (argument_list "(db,p,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(lVar1 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 == *(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_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "void FUN_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)" identifier (parameter_list "(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "undefined1 local_68 [4];" type_identifier (array_declarator "local_68 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar1 = *param_1;" (assignment_expression "lVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(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) ))))) ;) (if_statement "if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    local_6c = -1000000;\n  }" { (expression_statement "local_6c = -1000000;" (assignment_expression "local_6c = -1000000" identifier = number_literal) ;) }) (else_clause "else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" else (compound_statement "{\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" { (expression_statement "local_6c = FUN_001234c0(lVar1,param_3);" (assignment_expression "local_6c = FUN_001234c0(lVar1,param_3)" identifier = (call_expression "FUN_001234c0(lVar1,param_3)" identifier (argument_list "(lVar1,param_3)" ( identifier , identifier )))) ;) }))) (if_statement "if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }" { (expression_statement "param_4 = FUN_00130750(lVar1,param_4,0,0);" (assignment_expression "param_4 = FUN_00130750(lVar1,param_4,0,0)" identifier = (call_expression "FUN_00130750(lVar1,param_4,0,0)" identifier (argument_list "(lVar1,param_4,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) })) (expression_statement "lVar2 = FUN_00150df0(param_1,0,0,0);" (assignment_expression "lVar2 = FUN_00150df0(param_1,0,0,0)" identifier = (call_expression "FUN_00150df0(param_1,0,0,0)" identifier (argument_list "(param_1,0,0,0)" ( identifier , number_literal , number_literal , number_literal )))) ;) (if_statement "if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }" { (expression_statement "uVar3 = FUN_0011bd40(lVar1,*param_2);" (assignment_expression "uVar3 = FUN_0011bd40(lVar1,*param_2)" identifier = (call_expression "FUN_0011bd40(lVar1,*param_2)" identifier (argument_list "(lVar1,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) )))) ;) (expression_statement "*(undefined8 *)(lVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x18) = uVar3" (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" * (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));" (assignment_expression "uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" identifier = (call_expression "FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" identifier (argument_list "(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" ( identifier , (pointer_expression "*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" * (cast_expression "(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" ( (binary_expression "(long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)" (binary_expression "(long)local_6c * 0x20" (cast_expression "(long)local_6c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + (pointer_expression "*(long *)(lVar1 + 0x20)" * (cast_expression "(long *)(lVar1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) ))))) )))) )))) ;) (expression_statement "*(undefined8 *)(lVar2 + 0x10) = uVar3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x10) = uVar3" (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);" (assignment_expression "lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" identifier = (call_expression "FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" identifier (argument_list "(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" ( identifier , number_literal , identifier , identifier , number_literal , number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "local_68[0] = 0xc;" (assignment_expression "local_68[0] = 0xc" (subscript_expression "local_68[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_64 = param_7;" (assignment_expression "local_64 = param_7" identifier = identifier) ;) (expression_statement "FUN_00181820(param_1,lVar2,local_68);" (call_expression "FUN_00181820(param_1,lVar2,local_68)" identifier (argument_list "(param_1,lVar2,local_68)" ( identifier , identifier , identifier ))) ;) (if_statement "if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0012ca60(lVar1,lVar2,1);\n  }" { (expression_statement "FUN_0012ca60(lVar1,lVar2,1);" (call_expression "FUN_0012ca60(lVar1,lVar2,1)" identifier (argument_list "(lVar1,lVar2,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(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 (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * 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 = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) )))) ;) (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 = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , LIT , LIT , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , 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_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" (primitive_type "void") (function_declarator "FUN_00195e60(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)" (identifier "FUN_00195e60") (parameter_list "(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,\n                 undefined8 param_6,undefined4 param_7)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long in_FS_OFFSET;\n  int local_6c;\n  undefined1 local_68 [4];\n  undefined4 local_64;\n  undefined8 local_60;\n  undefined8 local_58;\n  long local_40;\n  \n  lVar1 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }\n  if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }\n  lVar2 = FUN_00150df0(param_1,0,0,0);\n  if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }\n  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);\n  local_68[0] = 0xc;\n  local_60 = 0;\n  local_58 = 0;\n  local_64 = param_7;\n  FUN_00181820(param_1,lVar2,local_68);\n  if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "int local_6c;" (primitive_type "int") (identifier "local_6c") (; ";")) (declaration "undefined1 local_68 [4];" (type_identifier "undefined1") (array_declarator "local_68 [4]" (identifier "local_68") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined8 local_60;" (type_identifier "undefined8") (identifier "local_60") (; ";")) (declaration "undefined8 local_58;" (type_identifier "undefined8") (identifier "local_58") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "lVar1 = *param_1;" (assignment_expression "lVar1 = *param_1" (identifier "lVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if (param_3 == 0) {\n    local_6c = -1000000;\n  }\n  else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_6c = -1000000;\n  }" ({ "{") (expression_statement "local_6c = -1000000;" (assignment_expression "local_6c = -1000000" (identifier "local_6c") (= "=") (number_literal "-1000000")) (; ";")) (} "}")) (else_clause "else {\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" (else "else") (compound_statement "{\n    local_6c = FUN_001234c0(lVar1,param_3);\n  }" ({ "{") (expression_statement "local_6c = FUN_001234c0(lVar1,param_3);" (assignment_expression "local_6c = FUN_001234c0(lVar1,param_3)" (identifier "local_6c") (= "=") (call_expression "FUN_001234c0(lVar1,param_3)" (identifier "FUN_001234c0") (argument_list "(lVar1,param_3)" (( "(") (identifier "lVar1") (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}")))) (if_statement "if (param_4 != 0) {\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    param_4 = FUN_00130750(lVar1,param_4,0,0);\n  }" ({ "{") (expression_statement "param_4 = FUN_00130750(lVar1,param_4,0,0);" (assignment_expression "param_4 = FUN_00130750(lVar1,param_4,0,0)" (identifier "param_4") (= "=") (call_expression "FUN_00130750(lVar1,param_4,0,0)" (identifier "FUN_00130750") (argument_list "(lVar1,param_4,0,0)" (( "(") (identifier "lVar1") (, ",") (identifier "param_4") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}"))) (expression_statement "lVar2 = FUN_00150df0(param_1,0,0,0);" (assignment_expression "lVar2 = FUN_00150df0(param_1,0,0,0)" (identifier "lVar2") (= "=") (call_expression "FUN_00150df0(param_1,0,0,0)" (identifier "FUN_00150df0") (argument_list "(param_1,0,0,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (lVar2 != 0) {\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = FUN_0011bd40(lVar1,*param_2);\n    *(undefined8 *)(lVar2 + 0x18) = uVar3;\n    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));\n    *(undefined8 *)(lVar2 + 0x10) = uVar3;\n  }" ({ "{") (expression_statement "uVar3 = FUN_0011bd40(lVar1,*param_2);" (assignment_expression "uVar3 = FUN_0011bd40(lVar1,*param_2)" (identifier "uVar3") (= "=") (call_expression "FUN_0011bd40(lVar1,*param_2)" (identifier "FUN_0011bd40") (argument_list "(lVar1,*param_2)" (( "(") (identifier "lVar1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "*(undefined8 *)(lVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x18) = uVar3" (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));" (assignment_expression "uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" (identifier "uVar3") (= "=") (call_expression "FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" (identifier "FUN_0011bd40") (argument_list "(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)))" (( "(") (identifier "lVar1") (, ",") (pointer_expression "*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" (* "*") (cast_expression "(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20))" (( "(") (binary_expression "(long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)" (binary_expression "(long)local_6c * 0x20" (cast_expression "(long)local_6c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_6c")) (* "*") (number_literal "0x20")) (+ "+") (pointer_expression "*(long *)(lVar1 + 0x20)" (* "*") (cast_expression "(long *)(lVar1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x20)" (( "(") (binary_expression "lVar1 + 0x20" (identifier "lVar1") (+ "+") (number_literal "0x20")) () ")"))))) () ")")))) () ")")))) (; ";")) (expression_statement "*(undefined8 *)(lVar2 + 0x10) = uVar3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x10) = uVar3" (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);" (assignment_expression "lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" (identifier "lVar2") (= "=") (call_expression "FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" (identifier "FUN_0013e100") (argument_list "(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "lVar2") (, ",") (identifier "param_4") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "param_5") (, ",") (number_literal "0x20000") (, ",") (identifier "param_6") () ")")))) (; ";")) (expression_statement "local_68[0] = 0xc;" (assignment_expression "local_68[0] = 0xc" (subscript_expression "local_68[0]" (identifier "local_68") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = param_7;" (assignment_expression "local_64 = param_7" (identifier "local_64") (= "=") (identifier "param_7")) (; ";")) (expression_statement "FUN_00181820(param_1,lVar2,local_68);" (call_expression "FUN_00181820(param_1,lVar2,local_68)" (identifier "FUN_00181820") (argument_list "(param_1,lVar2,local_68)" (( "(") (identifier "param_1") (, ",") (identifier "lVar2") (, ",") (identifier "local_68") () ")"))) (; ";")) (if_statement "if (lVar2 != 0) {\n    FUN_0012ca60(lVar1,lVar2,1);\n  }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0012ca60(lVar1,lVar2,1);\n  }" ({ "{") (expression_statement "FUN_0012ca60(lVar1,lVar2,1);" (call_expression "FUN_0012ca60(lVar1,lVar2,1)" (identifier "FUN_0012ca60") (argument_list "(lVar1,lVar2,1)" (( "(") (identifier "lVar1") (, ",") (identifier "lVar2") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (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 "()" (( "(") () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: void sqlite3MaterializeView(Parse * pParse, Table * pView, Expr *
   pWhere, ExprList * pOrderBy, Expr * pLimit, int iCur, Table * pView) */

void function_1
               (type_1 *pParse,type_2 *pView,type_3 *var_2,type_4 *var_4,type_3 *pLimit,int iCur,
               type_2 *pView_1)

{
  type_5 *db;
  long var_14;
  type_6 *var_7;
  char *pcVar2;
  type_7 *var_12;
  type_8 in_register_0000008c;
  long var_1;
  int local_6c;
  type_9 dest;
  
  db = pParse->db;
  var_14 = *(long *)(var_1 + 0x28);
  if (var_2 == (type_3 *)0x0) {
    local_6c = -1000000;
  }
  else {
    local_6c = var_3(db,(type_10 *)var_2);
  }
  if (var_4 != (type_4 *)0x0) {
    var_4 = (type_4 *)var_5(db,(type_3 *)var_4,0,(type_11 **)0x0);
  }
  var_7 = var_6(pParse,(type_6 *)0x0,(type_12 *)0x0,(type_12 *)0x0);
  if (var_7 != (type_6 *)0x0) {
    pcVar2 = var_8(db,pView->zName);
    var_7->a[0].zName = pcVar2;
    pcVar2 = var_8(db,db->aDb[local_6c].zDbSName);
    var_7->a[0].zDatabase = pcVar2;
  }
  var_12 = var_9(pParse,(type_4 *)0x0,var_7,(type_3 *)var_4,(type_4 *)0x0,(type_3 *)0x0,
                       (type_4 *)pLimit,0x20000,(type_3 *)var_10(in_register_0000008c,iCur));
  dest.eDest = '\f';
  dest.iSdst = 0;
  dest.nSdst = 0;
  dest.zAffSdst = (char *)0x0;
  dest.iSDParm = (int)pView_1;
  var_11(pParse,var_12,&dest);
  if (var_12 != (type_7 *)0x0) {
    var_13(db,var_12,1);
  }
  if (var_14 == *(long *)(var_1 + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_15();
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)) 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 (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (identifier) (number_literal) (number_literal) (identifier) (number_literal) (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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(long *param_1,undefined8 *param_2,long param_3,long param_4,undefined8 param_5,
                 undefined8 param_6,undefined4 param_7)

{
  long lVar1;
  long lVar2;
  undefined8 uVar3;
  long in_FS_OFFSET;
  int local_6c;
  undefined1 local_68 [4];
  undefined4 local_64;
  undefined8 local_60;
  undefined8 local_58;
  long local_40;
  
  lVar1 = *param_1;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_3 == 0) {
    local_6c = -1000000;
  }
  else {
    local_6c = FUN_001234c0(lVar1,param_3);
  }
  if (param_4 != 0) {
    param_4 = FUN_00130750(lVar1,param_4,0,0);
  }
  lVar2 = FUN_00150df0(param_1,0,0,0);
  if (lVar2 != 0) {
    uVar3 = FUN_0011bd40(lVar1,*param_2);
    *(undefined8 *)(lVar2 + 0x18) = uVar3;
    uVar3 = FUN_0011bd40(lVar1,*(undefined8 *)((long)local_6c * 0x20 + *(long *)(lVar1 + 0x20)));
    *(undefined8 *)(lVar2 + 0x10) = uVar3;
  }
  lVar2 = FUN_0013e100(param_1,0,lVar2,param_4,0,0,param_5,0x20000,param_6);
  local_68[0] = 0xc;
  local_60 = 0;
  local_58 = 0;
  local_64 = param_7;
  FUN_00181820(param_1,lVar2,local_68);
  if (lVar2 != 0) {
    FUN_0012ca60(lVar1,lVar2,1);
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

