
ExprList * __regparm3 sqlite3ExprListAppend(Parse *pParse,ExprList *pList,Expr *pExpr)

{
  ExprList *pEVar1;
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  
  pEVar1 = (ExprList *)sqlite3DbMallocRawNN((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX));
  if (pEVar1 == (ExprList *)0x0) {
    if (pList != (ExprList *)0x0) {
      sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);
    }
  }
  else {
    pEVar1->nExpr = 1;
    pEVar1->a[0].zEName = (char *)0x0;
    *(undefined4 *)&pEVar1->a[0].sortFlags = 0;
    pEVar1->a[0].u.iConstExprReg = 0;
    pEVar1->a[0].pExpr = (Expr *)pList;
  }
  return pEVar1;
}



undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_0002ef70();
  if (puVar1 == (undefined4 *)0x0) {
    if (param_2 != 0) {
      FUN_00053f30();
    }
  }
  else {
    *puVar1 = 1;
    puVar1[2] = 0;
    puVar1[3] = 0;
    puVar1[4] = 0;
    puVar1[1] = param_2;
  }
  return puVar1;
}


PUSH EDI
PUSH ESI
XOR ECX,ECX
PUSH EBX
MOV EDI,EDX
MOV EDX,0x14
MOV ESI,EAX
CALL 0x0002ef70
TEST EAX,EAX
MOV EBX,EAX
JZ 0x000556d0
MOV dword ptr [EAX],0x1
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [EAX + 0x4],EDI
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
RET
TEST EDI,EDI
JZ 0x000556c7
MOV EDX,EDI
MOV EAX,ESI
CALL 0x00053f30
JMP 0x000556c7
(translation_unit "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)FUN_0002ef70();\n  if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }\n  return puVar1;\n}\n\n" (ERROR "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)" (binary_expression "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00055690(undefined4 param_1,int param_2)" identifier (argument_list "(undefined4 param_1,int param_2)" ( identifier (ERROR "param_1" identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)FUN_0002ef70();\n  if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }\n  return puVar1;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0002ef70();" (assignment_expression "puVar1 = (undefined4 *)FUN_0002ef70()" identifier = (cast_expression "(undefined4 *)FUN_0002ef70()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ef70()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" if (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }" { (if_statement "if (param_2 != 0) {\n      FUN_00053f30();\n    }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00053f30();\n    }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" else (compound_statement "{\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" { (expression_statement "*puVar1 = 1;" (assignment_expression "*puVar1 = 1" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar1[2] = 0;" (assignment_expression "puVar1[2] = 0" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[3] = 0;" (assignment_expression "puVar1[3] = 0" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[4] = 0;" (assignment_expression "puVar1[4] = 0" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[1] = param_2;" (assignment_expression "puVar1[1] = param_2" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) }))) (return_statement "return puVar1;" return identifier ;) }))
(translation_unit "ExprList * __regparm3 sqlite3ExprListAppend(Parse *pParse,ExprList *pList,Expr *pExpr)\n\n{\n  ExprList *pEVar1;\n  undefined4 unaff_EBX;\n  undefined4 unaff_ESI;\n  \n  pEVar1 = (ExprList *)sqlite3DbMallocRawNN((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX));\n  if (pEVar1 == (ExprList *)0x0) {\n    if (pList != (ExprList *)0x0) {\n      sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);\n    }\n  }\n  else {\n    pEVar1->nExpr = 1;\n    pEVar1->a[0].zEName = (char *)0x0;\n    *(undefined4 *)&pEVar1->a[0].sortFlags = 0;\n    pEVar1->a[0].u.iConstExprReg = 0;\n    pEVar1->a[0].pExpr = (Expr *)pList;\n  }\n  return pEVar1;\n}\n\n" (ERROR "ExprList * __regparm3 sqlite3ExprListAppend(Parse *pParse,ExprList *pList,Expr *pExpr)" (binary_expression "ExprList * __regparm3 sqlite3ExprListAppend(Parse *pParse,ExprList *pList,Expr *pExpr)" identifier * (ERROR "__regparm3" identifier) (call_expression "sqlite3ExprListAppend(Parse *pParse,ExprList *pList,Expr *pExpr)" identifier (argument_list "(Parse *pParse,ExprList *pList,Expr *pExpr)" ( (binary_expression "Parse *pParse" identifier * identifier) , (binary_expression "ExprList *pList" identifier * identifier) , (binary_expression "Expr *pExpr" identifier * identifier) ))))) (compound_statement "{\n  ExprList *pEVar1;\n  undefined4 unaff_EBX;\n  undefined4 unaff_ESI;\n  \n  pEVar1 = (ExprList *)sqlite3DbMallocRawNN((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX));\n  if (pEVar1 == (ExprList *)0x0) {\n    if (pList != (ExprList *)0x0) {\n      sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);\n    }\n  }\n  else {\n    pEVar1->nExpr = 1;\n    pEVar1->a[0].zEName = (char *)0x0;\n    *(undefined4 *)&pEVar1->a[0].sortFlags = 0;\n    pEVar1->a[0].u.iConstExprReg = 0;\n    pEVar1->a[0].pExpr = (Expr *)pList;\n  }\n  return pEVar1;\n}" { (declaration "ExprList *pEVar1;" type_identifier (pointer_declarator "*pEVar1" * identifier) ;) (declaration "undefined4 unaff_EBX;" type_identifier identifier ;) (declaration "undefined4 unaff_ESI;" type_identifier identifier ;) (expression_statement "pEVar1 = (ExprList *)sqlite3DbMallocRawNN((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX));" (assignment_expression "pEVar1 = (ExprList *)sqlite3DbMallocRawNN((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX))" identifier = (cast_expression "(ExprList *)sqlite3DbMallocRawNN((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX))" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocRawNN((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX))" identifier (argument_list "((sqlite3 *)pParse,CONCAT44(unaff_ESI,unaff_EBX))" ( (cast_expression "(sqlite3 *)pParse" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (call_expression "CONCAT44(unaff_ESI,unaff_EBX)" identifier (argument_list "(unaff_ESI,unaff_EBX)" ( identifier , identifier ))) ))))) ;) (if_statement "if (pEVar1 == (ExprList *)0x0) {\n    if (pList != (ExprList *)0x0) {\n      sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);\n    }\n  }\n  else {\n    pEVar1->nExpr = 1;\n    pEVar1->a[0].zEName = (char *)0x0;\n    *(undefined4 *)&pEVar1->a[0].sortFlags = 0;\n    pEVar1->a[0].u.iConstExprReg = 0;\n    pEVar1->a[0].pExpr = (Expr *)pList;\n  }" if (parenthesized_expression "(pEVar1 == (ExprList *)0x0)" ( (binary_expression "pEVar1 == (ExprList *)0x0" identifier == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pList != (ExprList *)0x0) {\n      sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);\n    }\n  }" { (if_statement "if (pList != (ExprList *)0x0) {\n      sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);\n    }" if (parenthesized_expression "(pList != (ExprList *)0x0)" ( (binary_expression "pList != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);\n    }" { (expression_statement "sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList);" (call_expression "sqlite3ExprDeleteNN((sqlite3 *)pParse,(Expr *)pList)" identifier (argument_list "((sqlite3 *)pParse,(Expr *)pList)" ( (cast_expression "(sqlite3 *)pParse" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Expr *)pList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) }) (else_clause "else {\n    pEVar1->nExpr = 1;\n    pEVar1->a[0].zEName = (char *)0x0;\n    *(undefined4 *)&pEVar1->a[0].sortFlags = 0;\n    pEVar1->a[0].u.iConstExprReg = 0;\n    pEVar1->a[0].pExpr = (Expr *)pList;\n  }" else (compound_statement "{\n    pEVar1->nExpr = 1;\n    pEVar1->a[0].zEName = (char *)0x0;\n    *(undefined4 *)&pEVar1->a[0].sortFlags = 0;\n    pEVar1->a[0].u.iConstExprReg = 0;\n    pEVar1->a[0].pExpr = (Expr *)pList;\n  }" { (expression_statement "pEVar1->nExpr = 1;" (assignment_expression "pEVar1->nExpr = 1" (field_expression "pEVar1->nExpr" identifier -> field_identifier) = number_literal) ;) (expression_statement "pEVar1->a[0].zEName = (char *)0x0;" (assignment_expression "pEVar1->a[0].zEName = (char *)0x0" (field_expression "pEVar1->a[0].zEName" (subscript_expression "pEVar1->a[0]" (field_expression "pEVar1->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined4 *)&pEVar1->a[0].sortFlags = 0;" (assignment_expression "*(undefined4 *)&pEVar1->a[0].sortFlags = 0" (pointer_expression "*(undefined4 *)&pEVar1->a[0].sortFlags" * (cast_expression "(undefined4 *)&pEVar1->a[0].sortFlags" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar1->a[0].sortFlags" & (field_expression "pEVar1->a[0].sortFlags" (subscript_expression "pEVar1->a[0]" (field_expression "pEVar1->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = number_literal) ;) (expression_statement "pEVar1->a[0].u.iConstExprReg = 0;" (assignment_expression "pEVar1->a[0].u.iConstExprReg = 0" (field_expression "pEVar1->a[0].u.iConstExprReg" (field_expression "pEVar1->a[0].u" (subscript_expression "pEVar1->a[0]" (field_expression "pEVar1->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "pEVar1->a[0].pExpr = (Expr *)pList;" (assignment_expression "pEVar1->a[0].pExpr = (Expr *)pList" (field_expression "pEVar1->a[0].pExpr" (subscript_expression "pEVar1->a[0]" (field_expression "pEVar1->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(Expr *)pList" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (return_statement "return pEVar1;" return identifier ;) }))
(translation_unit "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)FUN_0002ef70();\n  if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }\n  return puVar1;\n}\n\n" (ERROR "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)" (binary_expression "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00055690(undefined4 param_1,int param_2)" identifier (argument_list "(undefined4 param_1,int param_2)" ( identifier (ERROR "param_1" identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)FUN_0002ef70();\n  if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }\n  return puVar1;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0002ef70();" (assignment_expression "puVar1 = (undefined4 *)FUN_0002ef70()" identifier = (cast_expression "(undefined4 *)FUN_0002ef70()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ef70()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" if (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" ( (binary_expression "puVar1 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }" { (if_statement "if (param_2 != 0) {\n      FUN_00053f30();\n    }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00053f30();\n    }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" else (compound_statement "{\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" { (expression_statement "*puVar1 = 1;" (assignment_expression "*puVar1 = 1" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar1[2] = 0;" (assignment_expression "puVar1[2] = 0" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[3] = 0;" (assignment_expression "puVar1[3] = 0" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[4] = 0;" (assignment_expression "puVar1[4] = 0" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[1] = param_2;" (assignment_expression "puVar1[1] = param_2" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) }))) (return_statement "return puVar1;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( IDENT (ERROR IDENT) , (ERROR IDENT) IDENT ))))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (return_statement return IDENT ;) }))
(ERROR "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)" (binary_expression "undefined4 * __regparm3 FUN_00055690(undefined4 param_1,int param_2)" (identifier "undefined4") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_00055690(undefined4 param_1,int param_2)" (identifier "FUN_00055690") (argument_list "(undefined4 param_1,int param_2)" (( "(") (identifier "undefined4") (ERROR "param_1" (identifier "param_1")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_2") () ")"))))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  puVar1 = (undefined4 *)FUN_0002ef70();\n  if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }\n  return puVar1;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (expression_statement "puVar1 = (undefined4 *)FUN_0002ef70();" (assignment_expression "puVar1 = (undefined4 *)FUN_0002ef70()" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)FUN_0002ef70()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002ef70()" (identifier "FUN_0002ef70") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar1 == (undefined4 *)0x0) {\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }\n  else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" (if "if") (parenthesized_expression "(puVar1 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 == (undefined4 *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (param_2 != 0) {\n      FUN_00053f30();\n    }\n  }" ({ "{") (if_statement "if (param_2 != 0) {\n      FUN_00053f30();\n    }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00053f30();\n    }" ({ "{") (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" (identifier "FUN_00053f30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" (else "else") (compound_statement "{\n    *puVar1 = 1;\n    puVar1[2] = 0;\n    puVar1[3] = 0;\n    puVar1[4] = 0;\n    puVar1[1] = param_2;\n  }" ({ "{") (expression_statement "*puVar1 = 1;" (assignment_expression "*puVar1 = 1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar1[2] = 0;" (assignment_expression "puVar1[2] = 0" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[3] = 0;" (assignment_expression "puVar1[3] = 0" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[4] = 0;" (assignment_expression "puVar1[4] = 0" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[1] = param_2;" (assignment_expression "puVar1[1] = param_2" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_2")) (; ";")) (} "}")))) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}"))

type_1 * __regparm3 sqlite3ExprListAppend(Parse *pParse,type_1 *var_4,type_4 *pExpr)

{
  type_1 *var_3;
  type_2 unaff_EBX;
  type_2 unaff_ESI;
  
  var_3 = (type_1 *)var_1((type_3 *)pParse,var_2(unaff_ESI,unaff_EBX));
  if (var_3 == (type_1 *)0x0) {
    if (var_4 != (type_1 *)0x0) {
      var_5((type_3 *)pParse,(type_4 *)var_4);
    }
  }
  else {
    var_3->nExpr = 1;
    var_3->a[0].zEName = (char *)0x0;
    *(type_2 *)&var_3->a[0].sortFlags = 0;
    var_3->a[0].u.iConstExprReg = 0;
    var_3->a[0].pExpr = (type_4 *)var_4;
  }
  return var_3;
}


(translation_unit (ERROR (binary_expression left: (identifier) (ERROR (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (ERROR (identifier)) (ERROR (identifier)) (identifier))))) (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (return_statement (identifier))))

undefined4 * __regparm3 MASKED(undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_0002ef70();
  if (puVar1 == (undefined4 *)0x0) {
    if (param_2 != 0) {
      FUN_00053f30();
    }
  }
  else {
    *puVar1 = 1;
    puVar1[2] = 0;
    puVar1[3] = 0;
    puVar1[4] = 0;
    puVar1[1] = param_2;
  }
  return puVar1;
}

