#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ sqlite3_stmt;
typedef int /*<<< orphan*/ sqlite3;

/* Variables and functions */
int /*<<< orphan*/ DPRINTF(int, int, char *, char *, ...);
int SQLITE_DONE;
int SQLITE_OK;
int SQLITE_ROW;
int /*<<< orphan*/ free(char *);
scalar_t__ sqlite3_column_text(int /*<<< orphan*/ *, int /*<<< orphan*/);
int /*<<< orphan*/ sqlite3_errmsg(int /*<<< orphan*/ *);
int sqlite3_exec(int /*<<< orphan*/ *, char *, int /*<<< orphan*/ *,
                 int /*<<< orphan*/ *, char **);
int /*<<< orphan*/ sqlite3_finalize(int /*<<< orphan*/ *);
int /*<<< orphan*/ sqlite3_free(char *);
char *sqlite3_mprintf(char *, char *);
int sqlite3_prepare_v2(int /*<<< orphan*/ *, char *, scalar_t__,
                       int /*<<< orphan*/ **, int /*<<< orphan*/ *);
int sqlite3_step(int /*<<< orphan*/ *);
char *strdup(char *);
scalar_t__ strlen(char *);
int db_drop_indices(sqlite3 *hdl) {
  sqlite3_stmt *stmt;
  char *errmsg;
  char *query;
  char *index[256];
  int ret;
  int i;
  int n;
  DPRINTF(4, 2, "Running query '%s'\n",
          "SELECT name FROM sqlite_master WHERE type == 'index' AND name LIKE "
          "'idx_%';");
  ret = sqlite3_prepare_v2(hdl,
                           "SELECT name FROM sqlite_master WHERE type == "
                           "'index' AND name LIKE 'idx_%';",
                           strlen("SELECT name FROM sqlite_master WHERE type "
                                  "== 'index' AND name LIKE 'idx_%';") +
                               1,
                           &stmt, NULL);
  if (ret != SQLITE_OK) {
    DPRINTF(1, 2, "Could not prepare statement: %s\n", sqlite3_errmsg(hdl));
    return -1;
  }
  n = 0;
  while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
    index[n] = strdup((char *)sqlite3_column_text(stmt, 0));
    n++;
  }
  if (ret != SQLITE_DONE) {
    DPRINTF(1, 2, "Could not step: %s\n", sqlite3_errmsg(hdl));
    sqlite3_finalize(stmt);
    return -1;
  }
  sqlite3_finalize(stmt);
  for (i = 0; i < n; i++) {
    query = sqlite3_mprintf("DROP INDEX %q;", index[i]);
    free(index[i]);
    DPRINTF(4, 2, "Running query '%s'\n", query);
    ret = sqlite3_exec(hdl, query, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
      DPRINTF(1, 2, "DB error while running '%s': %s\n", query, errmsg);
      sqlite3_free(errmsg);
      return -1;
    }
    sqlite3_free(query);
  }
  return 0;
}


x86 assembly (clang, -O0):
<db_drop_indices>:
push   %rbp
mov    %rsp,%rbp
sub    $0x850,%rsp
mov    %rdi,-0x10(%rbp)
mov    $0x4,%edi
mov    $0x2,%esi
lea    0xe20(%rip),%rdx
lea    0xe2d(%rip),%rcx
mov    $0x0,%al
call   10e0 <DPRINTF@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x848(%rbp)
lea    0xe14(%rip),%rdi
call   1050 <strlen@plt>
mov    -0x848(%rbp),%rdi
mov    %rax,%rdx
add    $0x1,%rdx
lea    0xdfa(%rip),%rsi
lea    -0x18(%rbp),%rcx
xor    %eax,%eax
mov    %eax,%r8d
call   10a0 <sqlite3_prepare_v2@plt>
mov    %eax,-0x834(%rbp)
mov    -0x834(%rbp),%eax
mov    0x2dad(%rip),%rcx
cmp    (%rcx),%eax
je     1273 <db_drop_indices+0xb3>
mov    -0x10(%rbp),%rdi
call   1060 <sqlite3_errmsg@plt>
movslq %eax,%rcx
mov    $0x1,%edi
mov    $0x2,%esi
lea    0xe00(%rip),%rdx
mov    $0x0,%al
call   10e0 <DPRINTF@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1422 <db_drop_indices+0x262>
movl   $0x0,-0x83c(%rbp)
mov    -0x18(%rbp),%rdi
call   1070 <sqlite3_step@plt>
mov    %eax,-0x834(%rbp)
mov    0x2d3d(%rip),%rcx
cmp    (%rcx),%eax
jne    12d4 <db_drop_indices+0x114>
mov    -0x18(%rbp),%rdi
xor    %esi,%esi
call   1080 <sqlite3_column_text@plt>
mov    %rax,%rdi
call   10d0 <strdup@plt>
mov    %rax,%rcx
movslq -0x83c(%rbp),%rax
mov    %rcx,-0x830(%rbp,%rax,8)
ff
mov    -0x83c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x83c(%rbp)
jmp    127d <db_drop_indices+0xbd>
mov    -0x834(%rbp),%eax
mov    0x2cf7(%rip),%rcx
cmp    (%rcx),%eax
je     1322 <db_drop_indices+0x162>
mov    -0x10(%rbp),%rdi
call   1060 <sqlite3_errmsg@plt>
movslq %eax,%rcx
mov    $0x1,%edi
mov    $0x2,%esi
lea    0xd7b(%rip),%rdx
mov    $0x0,%al
call   10e0 <DPRINTF@plt>
mov    -0x18(%rbp),%rdi
call   1090 <sqlite3_finalize@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1422 <db_drop_indices+0x262>
mov    -0x18(%rbp),%rdi
call   1090 <sqlite3_finalize@plt>
movl   $0x0,-0x838(%rbp)
mov    -0x838(%rbp),%eax
cmp    -0x83c(%rbp),%eax
jge    141b <db_drop_indices+0x25b>
movslq -0x838(%rbp),%rax
mov    -0x830(%rbp,%rax,8),%rsi
ff
lea    0xd38(%rip),%rdi
call   10c0 <sqlite3_mprintf@plt>
mov    %rax,-0x28(%rbp)
movslq -0x838(%rbp),%rax
mov    -0x830(%rbp,%rax,8),%rdi
ff
call   1030 <free@plt>
mov    -0x28(%rbp),%rcx
mov    $0x4,%edi
mov    $0x2,%esi
lea    0xc71(%rip),%rdx
mov    $0x0,%al
call   10e0 <DPRINTF@plt>
mov    -0x10(%rbp),%rdi
mov    -0x28(%rbp),%rsi
xor    %eax,%eax
mov    %eax,%ecx
lea    -0x20(%rbp),%r8
mov    %rcx,%rdx
call   1040 <sqlite3_exec@plt>
mov    %eax,-0x834(%rbp)
mov    -0x834(%rbp),%eax
mov    0x2c27(%rip),%rcx
cmp    (%rcx),%eax
je     13fe <db_drop_indices+0x23e>
mov    -0x28(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    $0x1,%edi
mov    $0x2,%esi
lea    0xcc2(%rip),%rdx
mov    $0x0,%al
call   10e0 <DPRINTF@plt>
mov    -0x20(%rbp),%rdi
call   10b0 <sqlite3_free@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1422 <db_drop_indices+0x262>
mov    -0x28(%rbp),%rdi
call   10b0 <sqlite3_free@plt>
mov    -0x838(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x838(%rbp)
jmp    1335 <db_drop_indices+0x175>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x850,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<db_drop_indices>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x818,%rsp
mov    %rdi,%r13
lea    0xe35(%rip),%rdx
lea    0xe42(%rip),%rbx
xor    %ebp,%ebp
mov    $0x4,%edi
mov    $0x2,%esi
mov    %rbx,%rcx
xor    %eax,%eax
call   10d0 <DPRINTF@plt>
mov    %rsp,%rcx
mov    $0x4c,%edx
mov    %r13,%rdi
mov    %rbx,%rsi
xor    %r8d,%r8d
call   1090 <sqlite3_prepare_v2@plt>
mov    0x2de3(%rip),%rcx
cmp    (%rcx),%eax
jne    12ef <db_drop_indices+0x13f>
mov    (%rsp),%rdi
call   1060 <sqlite3_step@plt>
mov    0x2db3(%rip),%rbx
cmp    (%rbx),%eax
jne    1259 <db_drop_indices+0xa9>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    (%rsp),%rdi
xor    %esi,%esi
call   1070 <sqlite3_column_text@plt>
mov    %rax,%rdi
call   10c0 <strdup@plt>
mov    %rax,0x10(%rsp,%rbp,8)
add    $0x1,%rbp
mov    (%rsp),%rdi
call   1060 <sqlite3_step@plt>
cmp    (%rbx),%eax
je     1230 <db_drop_indices+0x80>
mov    0x2d78(%rip),%rcx
cmp    (%rcx),%eax
jne    1314 <db_drop_indices+0x164>
mov    (%rsp),%rdi
call   1080 <sqlite3_finalize@plt>
test   %ebp,%ebp
je     12e8 <db_drop_indices+0x138>
mov    %ebp,%r14d
lea    0x8(%rsp),%r12
xor    %r15d,%r15d
mov    0x10(%rsp,%r15,8),%rbp
lea    0xe09(%rip),%rdi
mov    %rbp,%rsi
call   10b0 <sqlite3_mprintf@plt>
mov    %rax,%rbx
mov    %rbp,%rdi
call   1030 <free@plt>
mov    $0x4,%edi
mov    $0x2,%esi
lea    0xd50(%rip),%rdx
mov    %rbx,%rcx
xor    %eax,%eax
call   10d0 <DPRINTF@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
xor    %edx,%edx
xor    %ecx,%ecx
mov    %r12,%r8
call   1040 <sqlite3_exec@plt>
mov    0x2d15(%rip),%rcx
cmp    (%rcx),%eax
jne    1342 <db_drop_indices+0x192>
mov    %rbx,%rdi
call   10a0 <sqlite3_free@plt>
add    $0x1,%r15
cmp    %r15,%r14
jne    1280 <db_drop_indices+0xd0>
xor    %eax,%eax
jmp    1371 <db_drop_indices+0x1c1>
mov    %r13,%rdi
call   1050 <sqlite3_errmsg@plt>
movslq %eax,%rcx
lea    0xd5f(%rip),%rdx
mov    $0x1,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   10d0 <DPRINTF@plt>
jmp    136c <db_drop_indices+0x1bc>
mov    %r13,%rdi
call   1050 <sqlite3_errmsg@plt>
movslq %eax,%rcx
lea    0xd5b(%rip),%rdx
mov    $0x1,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   10d0 <DPRINTF@plt>
mov    (%rsp),%rdi
call   1080 <sqlite3_finalize@plt>
jmp    136c <db_drop_indices+0x1bc>
mov    0x8(%rsp),%r8
lea    0xd56(%rip),%rdx
mov    $0x1,%edi
mov    $0x2,%esi
mov    %rbx,%rcx
xor    %eax,%eax
call   10d0 <DPRINTF@plt>
mov    0x8(%rsp),%rdi
call   10a0 <sqlite3_free@plt>
mov    $0xffffffff,%eax
add    $0x818,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [20 x i8] c"Running query '%s'\0A\00"
@.str.1 = [76 x i8] c"SELECT name FROM sqlite_master WHERE type == 'index' AND name LIKE 'idx_%';\00"
@SQLITE_OK = global i32 0
@.str.2 = [33 x i8] c"Could not prepare statement: %s\0A\00"
@SQLITE_ROW = global i32 0
@SQLITE_DONE = global i32 0
@.str.3 = [20 x i8] c"Could not step: %s\0A\00"
@.str.4 = [15 x i8] c"DROP INDEX %q;\00"
@.str.5 = [33 x i8] c"DB error while running '%s': %s\0A\00"
define i32 @db_drop_indices(i32* %0) {
%2 = alloca i32
%3 = alloca i32*
%4 = alloca i32*
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca [256 x i8*]
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i32* %0, i32** %3
%11 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 4, i32 2, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1, i64 0, i64 0))
%12 = load i32*, i32** %3
%13 = call i64 @strlen(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1, i64 0, i64 0))
%14 = add nsw i64 %13, 1
%15 = call i32 @sqlite3_prepare_v2(i32* %12, i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1, i64 0, i64 0), i64 %14, i32** %4, i32* null)
store i32 %15, i32* %8
%16 = load i32, i32* %8
%17 = load i32, i32* @SQLITE_OK
%18 = icmp ne i32 %16, %17
br i1 %18, label %19, label %25
19: ; preds = %1
%20 = load i32*, i32** %3
%21 = call i32 @sqlite3_errmsg(i32* %20)
%22 = sext i32 %21 to i64
%23 = inttoptr i64 %22 to i8*
%24 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 1, i32 2, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0), i8* %23)
store i32 -1, i32* %2
br label %92
25: ; preds = %1
store i32 0, i32* %10
br label %26
26: ; preds = %31, %25
%27 = load i32*, i32** %4
%28 = call i32 @sqlite3_step(i32* %27)
store i32 %28, i32* %8
%29 = load i32, i32* @SQLITE_ROW
%30 = icmp eq i32 %28, %29
br i1 %30, label %31, label %41
31: ; preds = %26
%32 = load i32*, i32** %4
%33 = call i64 @sqlite3_column_text(i32* %32, i32 0)
%34 = inttoptr i64 %33 to i8*
%35 = call i8* @strdup(i8* %34)
%36 = load i32, i32* %10
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds [256 x i8*], [256 x i8*]* %7, i64 0, i64 %37
store i8* %35, i8** %38
%39 = load i32, i32* %10
%40 = add nsw i32 %39, 1
store i32 %40, i32* %10
br label %26
41: ; preds = %26
%42 = load i32, i32* %8
%43 = load i32, i32* @SQLITE_DONE
%44 = icmp ne i32 %42, %43
br i1 %44, label %45, label %53
45: ; preds = %41
%46 = load i32*, i32** %3
%47 = call i32 @sqlite3_errmsg(i32* %46)
%48 = sext i32 %47 to i64
%49 = inttoptr i64 %48 to i8*
%50 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 1, i32 2, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0), i8* %49)
%51 = load i32*, i32** %4
%52 = call i32 @sqlite3_finalize(i32* %51)
store i32 -1, i32* %2
br label %92
53: ; preds = %41
%54 = load i32*, i32** %4
%55 = call i32 @sqlite3_finalize(i32* %54)
store i32 0, i32* %9
br label %56
56: ; preds = %88, %53
%57 = load i32, i32* %9
%58 = load i32, i32* %10
%59 = icmp slt i32 %57, %58
br i1 %59, label %60, label %91
60: ; preds = %56
%61 = load i32, i32* %9
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [256 x i8*], [256 x i8*]* %7, i64 0, i64 %62
%64 = load i8*, i8** %63
%65 = call i8* @sqlite3_mprintf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.4, i64 0, i64 0), i8* %64)
store i8* %65, i8** %6
%66 = load i32, i32* %9
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [256 x i8*], [256 x i8*]* %7, i64 0, i64 %67
%69 = load i8*, i8** %68
%70 = call i32 @free(i8* %69)
%71 = load i8*, i8** %6
%72 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 4, i32 2, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i8* %71)
%73 = load i32*, i32** %3
%74 = load i8*, i8** %6
%75 = call i32 @sqlite3_exec(i32* %73, i8* %74, i32* null, i32* null, i8** %5)
store i32 %75, i32* %8
%76 = load i32, i32* %8
%77 = load i32, i32* @SQLITE_OK
%78 = icmp ne i32 %76, %77
br i1 %78, label %79, label %85
79: ; preds = %60
%80 = load i8*, i8** %6
%81 = load i8*, i8** %5
%82 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 1, i32 2, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.5, i64 0, i64 0), i8* %80, i8* %81)
%83 = load i8*, i8** %5
%84 = call i32 @sqlite3_free(i8* %83)
store i32 -1, i32* %2
br label %92
85: ; preds = %60
%86 = load i8*, i8** %6
%87 = call i32 @sqlite3_free(i8* %86)
br label %88
88: ; preds = %85
%89 = load i32, i32* %9
%90 = add nsw i32 %89, 1
store i32 %90, i32* %9
br label %56
91: ; preds = %56
store i32 0, i32* %2
br label %92
92: ; preds = %91, %79, %45, %19
%93 = load i32, i32* %2
ret i32 %93
}

LLVM IR (-O2):
@.str = [20 x i8] c"Running query '%s'\0A\00"
@.str.1 = [76 x i8] c"SELECT name FROM sqlite_master WHERE type == 'index' AND name LIKE 'idx_%';\00"
@SQLITE_OK = global i32 0
@.str.2 = [33 x i8] c"Could not prepare statement: %s\0A\00"
@SQLITE_ROW = global i32 0
@SQLITE_DONE = global i32 0
@.str.3 = [20 x i8] c"Could not step: %s\0A\00"
@.str.4 = [15 x i8] c"DROP INDEX %q;\00"
@.str.5 = [33 x i8] c"DB error while running '%s': %s\0A\00"
define i32 @db_drop_indices(i32* %0) {
%2 = alloca i32*
%3 = alloca i8*
%4 = alloca [256 x i8*]
%5 = bitcast i32** %2 to i8*
%6 = bitcast i8** %3 to i8*
%7 = bitcast [256 x i8*]* %4 to i8*
%8 = tail call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 4, i32 2, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1, i64 0, i64 0))
%9 = call i32 @sqlite3_prepare_v2(i32* %0, i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1, i64 0, i64 0), i64 76, i32** %2, i32* null)
%10 = load i32, i32* @SQLITE_OK
%11 = icmp eq i32 %9, %10
br i1 %11, label %12, label %17
12: ; preds = %1
%13 = load i32*, i32** %2
%14 = call i32 @sqlite3_step(i32* %13)
%15 = load i32, i32* @SQLITE_ROW
%16 = icmp eq i32 %14, %15
br i1 %16, label %22, label %36
17: ; preds = %1
%18 = call i32 @sqlite3_errmsg(i32* %0)
%19 = sext i32 %18 to i64
%20 = inttoptr i64 %19 to i8*
%21 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 1, i32 2, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0), i8* %20)
br label %73
22: ; preds = %12, %22
%23 = phi i64 [ %29, %22 ], [ 0, %12 ]
%24 = load i32*, i32** %2
%25 = call i64 @sqlite3_column_text(i32* %24, i32 0)
%26 = inttoptr i64 %25 to i8*
%27 = call i8* @strdup(i8* %26)
%28 = getelementptr inbounds [256 x i8*], [256 x i8*]* %4, i64 0, i64 %23
store i8* %27, i8** %28
%29 = add nuw i64 %23, 1
%30 = load i32*, i32** %2
%31 = call i32 @sqlite3_step(i32* %30)
%32 = load i32, i32* @SQLITE_ROW
%33 = icmp eq i32 %31, %32
br i1 %33, label %22, label %34
34: ; preds = %22
%35 = trunc i64 %29 to i32
br label %36
36: ; preds = %34, %12
%37 = phi i32 [ 0, %12 ], [ %35, %34 ]
%38 = phi i32 [ %14, %12 ], [ %31, %34 ]
%39 = load i32, i32* @SQLITE_DONE
%40 = icmp eq i32 %38, %39
br i1 %40, label %48, label %41
41: ; preds = %36
%42 = call i32 @sqlite3_errmsg(i32* %0)
%43 = sext i32 %42 to i64
%44 = inttoptr i64 %43 to i8*
%45 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 1, i32 2, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0), i8* %44)
%46 = load i32*, i32** %2
%47 = call i32 @sqlite3_finalize(i32* %46)
br label %73
48: ; preds = %36
%49 = load i32*, i32** %2
%50 = call i32 @sqlite3_finalize(i32* %49)
%51 = icmp eq i32 %37, 0
br i1 %51, label %73, label %52
52: ; preds = %48
%53 = zext i32 %37 to i64
br label %54
54: ; preds = %52, %69
%55 = phi i64 [ 0, %52 ], [ %71, %69 ]
%56 = getelementptr inbounds [256 x i8*], [256 x i8*]* %4, i64 0, i64 %55
%57 = load i8*, i8** %56
%58 = call i8* @sqlite3_mprintf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.4, i64 0, i64 0), i8* %57)
%59 = call i32 @free(i8* %57)
%60 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 4, i32 2, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i8* %58)
%61 = call i32 @sqlite3_exec(i32* %0, i8* %58, i32* null, i32* null, i8** %3)
%62 = load i32, i32* @SQLITE_OK
%63 = icmp eq i32 %61, %62
br i1 %63, label %69, label %64
64: ; preds = %54
%65 = load i8*, i8** %3
%66 = call i32 (i32, i32, i8*, i8*, ...) @DPRINTF(i32 1, i32 2, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.5, i64 0, i64 0), i8* %58, i8* %65)
%67 = load i8*, i8** %3
%68 = call i32 @sqlite3_free(i8* %67)
br label %73
69: ; preds = %54
%70 = call i32 @sqlite3_free(i8* %58)
%71 = add nuw nsw i64 %55, 1
%72 = icmp eq i64 %71, %53
br i1 %72, label %73, label %54
73: ; preds = %69, %48, %64, %41, %17
%74 = phi i32 [ -1, %17 ], [ -1, %41 ], [ -1, %64 ], [ 0, %48 ], [ 0, %69 ]
ret i32 %74
}