Function at 0x512be0
Capabilities:
Reference sql statements
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x21c
push ebx
push ebp
mov ebp, dword [esp + 0x228]
push esi
mov esi, dword [ebp]
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x14]
mov bl, byte [ecx + 0x59]
lea eax, [ebp + 0x114]
push edi
xor edi, edi
push eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], esi
mov byte [esp + 0x44], bl
mov dword [esp + 0xa8], edi
mov dword [esp + 0x108], eax
call fcn.00527590
add esp, 4
cmp dword [ebp + 0x74], 7
je 0x51302b
mov dword [ebp + 0x74], edi
mov dword [ebp + 0xf8], edi
cmp dword [esi + 0xd8], edi
mov dword [esi + 0x144], edi
jne 0x51658b
mov edx, dword [ebp + 0x70]
mov dword [esp + 0x20], edx
jmp 0x512c64
mov bl, byte [esp + 0x40]
mov ecx, dword [esp + 0x14]
cmp byte [ecx + 0x1e], 0
jne 0x51302b
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x230]
mov edx, dword [ebp + 0x14]
lea eax, [eax + eax*4]
lea edi, [edx + eax*4]
mov eax, dword [ecx + 0xe8]
test eax, eax
je 0x512cbf
mov edx, dword [esp + 0xa4]
cmp dword [ecx + 0xf0], edx
jne 0x512cb5
mov ecx, dword [ecx + 0xec]
push ecx
call eax
add esp, 4
test eax, eax
jne 0x5163b6
xor edx, edx
add edx, 1
mov dword [esp + 0xa4], edx
movzx edx, byte [edi]
mov al, byte [edx + 0x5b3b28]
test al, 2
je 0x512ced
mov eax, dword [edi + 8]
mov ecx, dword [ebp + 0x4c]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
push esi
mov dword [esp + 0x20], esi
call fcn.005108c0
add esp, 4
mov word [esi + 0x1c], 1
jmp 0x512d62
test al, 4
je 0x512d38
test al, 8
mov ecx, dword [edi + 4]
mov ebp, dword [ebp + 0x4c]
lea edx, [ecx + ecx*4]
lea ecx, [ebp + edx*8]
mov dword [esp + 0x18], ecx
je 0x512d28
test al, 0x20
mov ecx, dword [edi + 8]
lea edx, [ecx + ecx*4]
lea ecx, [ebp + edx*8]
mov dword [esp + 0x54], ecx
je 0x512d62
mov eax, dword [edi + 0xc]
lea edx, [eax + eax*4]
lea eax, [ebp + edx*8]
mov dword [esp + 0x1c], eax
jmp 0x512d62
test al, 0x10
je 0x512d62
mov eax, dword [edi + 0xc]
lea ecx, [eax + eax*4]
lea edx, [ebp + ecx*8]
jmp 0x512d5e
test al, 8
je 0x512d4e
mov eax, dword [edi + 8]
mov ecx, dword [ebp + 0x4c]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*8]
mov dword [esp + 0x54], edx
jmp 0x512d62
test al, 0x10
je 0x512d62
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp + 0x4c]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*8]
mov dword [esp + 0x5c], edx
mov al, byte [edi]
movzx edx, al
lea ecx, [edx - 1]
cmp ecx, 0x8d
mov dword [esp + 0x24], edx
ja case.0x512d81.12
movzx ecx, byte [ecx + 0x516748]
jmp dword [ecx*4 + 0x5165b0]
mov edx, dword [esp + 0x14]
cmp dword [edx + 0xd8], 0
jne 0x516582
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov eax, dword [esp + 0x20]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x230]
mov edx, dword [eax + 0xe8]
mov dword [eax + edx*4 + 0x84], ecx
add dword [eax + 0xe8], 1
mov eax, dword [edi + 8]
sub eax, 1
mov dword [esp + 0x20], eax
jmp case.0x512d81.12
mov eax, dword [esp + 0x230]
add dword [eax + 0xe8], 0xffffffff
mov ecx, dword [eax + 0xe8]
mov eax, dword [eax + ecx*4 + 0x84]
sub eax, 1
mov dword [esp + 0x20], eax
jmp case.0x512d81.12
mov ecx, dword [esp + 0x1c]
mov word [ecx + 0x1c], 4
mov eax, dword [edi + 4]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x512d81.12
mov eax, dword [esp + 0x1c]
mov word [eax + 0x1c], 4
mov edi, dword [edi + 0x10]
mov ecx, dword [edi]
mov dword [eax], ecx
mov edx, dword [edi + 4]
mov dword [eax + 4], edx
jmp case.0x512d81.12
mov eax, dword [esp + 0x1c]
mov word [eax + 0x1c], 8
mov ecx, dword [edi + 0x10]
fld qword [ecx]
fstp qword [eax + 8]
jmp case.0x512d81.12
mov edx, dword [edi + 0x10]
mov eax, edx
mov byte [edi], 0x1b
lea esi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x512e56
sub eax, esi
cmp bl, 1
mov dword [edi + 4], eax
je 0x512f0a
mov esi, dword [esp + 0x1c]
push 0
push 1
push 0xffffffffffffffff
push edx
push esi
call fcn.00510dd0
movzx edx, bl
push edx
push esi
call fcn.005105c0
add esp, 0x1c
test eax, eax
jne 0x51302b
push esi
call fcn.00511130
add esp, 4
test eax, eax
jne 0x51302b
mov dword [esi + 0x24], eax
mov ax, word [esi + 0x1c]
and ax, 0xffbf
or ax, 0x80
mov word [esi + 0x1c], ax
cmp byte [edi + 1], 0xff
jne 0x512ec9
mov ecx, dword [edi + 0x10]
push ecx
call fcn.0050dc90
add esp, 4
mov eax, dword [esp + 0x14]
mov byte [edi + 1], 0xff
mov edx, dword [esi + 0x14]
mov dword [edi + 0x10], edx
mov esi, dword [esi + 0x18]
mov dword [edi + 4], esi
cmp esi, dword [eax + 0x50]
jle case.0x512d81.12
mov ebp, dword [esp + 0x230]
push 0
lea ecx, [ebp + 0xf4]
push str.string_or_blob_too_big
push ecx
call fcn.005118f0
mov esi, 0x12
jmp 0x513052
mov ecx, dword [esp + 0x14]
cmp eax, dword [ecx + 0x50]
jg 0x512ee6
mov eax, dword [esp + 0x1c]
mov word [eax + 0x1c], 0xa2
mov edx, dword [edi + 0x10]
mov dword [eax + 0x14], edx
mov ecx, dword [edi + 4]
mov dword [eax + 0x18], ecx
mov byte [eax + 0x1f], bl
jmp case.0x512d81.12
mov edx, dword [edi + 4]
mov eax, dword [edi + 0x10]
mov esi, dword [esp + 0x1c]
push 0
push 0
push edx
push eax
push esi
call fcn.00510dd0
add esp, 0x14
mov byte [esi + 0x1f], bl
jmp case.0x512d81.12
mov edi, dword [edi + 4]
mov esi, dword [esp + 0x230]
mov eax, dword [esi + 0x38]
sub edi, 1
lea edi, [edi + edi*4]
add edi, edi
add edi, edi
add edi, edi
add eax, edi
push eax
call fcn.00510cf0
add esp, 4
test eax, eax
jne 0x512ee6
mov ecx, dword [esi + 0x38]
mov edx, dword [esp + 0x1c]
push 0x80
add ecx, edi
push ecx
push edx
call fcn.00510d20
add esp, 0xc
jmp case.0x512d81.12
mov ecx, dword [edi + 4]
mov edi, dword [edi + 8]
mov eax, dword [esp + 0x230]
mov eax, dword [eax + 0x4c]
lea ecx, [ecx + ecx*4]
lea esi, [eax + ecx*8]
lea edx, [edi + edi*4]
mov edi, dword [eax + edx*8 + 0x24]
lea eax, [eax + edx*8]
push esi
push eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], eax
mov dword [eax + 0x24], 0
call fcn.00510da0
mov dword [esi + 0x24], edi
jmp 0x516393
mov ecx, dword [edi + 4]
mov eax, dword [esp + 0x230]
mov eax, dword [eax + 0x4c]
mov edi, dword [edi + 8]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*8]
lea edx, [edi + edi*4]
push pe_nt_image_headers32
lea esi, [eax + edx*8]
push ecx
push esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], esi
call fcn.00510d20
add esp, 0xc
test word [esi + 0x1c], 0x100
je case.0x512d81.12
mov eax, esi
push eax
call fcn.00511190
add esp, 4
test eax, eax
je case.0x512d81.12
mov ebp, dword [esp + 0x230]
mov edx, dword [esp + 0x14]
push 0
lea eax, [ebp + 0xf4]
push str.out_of_memory
push eax
mov byte [edx + 0x1e], 1
call fcn.005118f0
mov esi, 7
add esp, 0xc
mov dword [ebp + 0x74], esi
push ebp
mov esi, 1
call fcn.00510010
add esp, 4
mov ecx, dword [esp + 0x104]
push ecx
call fcn.005275e0
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x21c
ret
mov ecx, dword [esp + 0x230]
mov eax, dword [ecx + 0x4c]
mov ecx, dword [edi + 4]
mov edi, dword [edi + 8]
lea edx, [ecx + ecx*4]
lea ecx, [eax + edx*8]
lea edx, [edi + edi*4]
push pe_nt_image_headers32
lea eax, [eax + edx*8]
push ecx
push eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
call fcn.00510d20
add esp, 0xc
jmp case.0x512d81.12
mov ebx, dword [esp + 0x18]
movzx eax, word [ebx + 0x1c]
mov ebp, dword [esp + 0x54]
mov cl, byte [ebp + 0x1c]
or cl, al
test cl, 1
je 0x5130e3
mov edx, dword [esp + 0x1c]
push edx
call fcn.00510c00
add esp, 4
jmp case.0x512d81.12
test eax, 0x800
je 0x5130f3
push ebx
call fcn.005106c0
add esp, 4
test byte [ebx + 0x1c], 0x12
jne 0x513110
movzx eax, byte [esp + 0x40]
push eax
push ebx
call fcn.00510770
add esp, 8
test eax, eax
jne 0x51302b
test word [ebp + 0x1c], 0x800
je 0x513121
push ebp
call fcn.005106c0
add esp, 4
test byte [ebp + 0x1c], 0x12
jne 0x51313e
movzx ecx, byte [esp + 0x40]
push ecx
push ebp
call fcn.00510770
add esp, 8
test eax, eax
jne 0x51302b
mov eax, dword [ebx + 0x18]
add eax, dword [ebp + 0x18]
cdq
mov ecx, edx
mov edx, dword [esp + 0x14]
mov esi, eax
mov eax, dword [edx + 0x50]
cdq
cmp ecx, edx
jg 0x512ee6
jl 0x513163
cmp esi, eax
ja 0x512ee6
mov edi, dword [esp + 0x1c]
mov ax, word [edi + 0x1c]
and ax, 0xffe2
xor ecx, ecx
or ax, 2
cmp edi, ebp
sete cl
lea edx, [esi + 2]
mov word [edi + 0x1c], ax
push ecx
push edx
push edi
call fcn.005105f0
add esp, 0xc
test eax, eax
jne 0x51302b
cmp edi, ebp
je 0x5131ac
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
mov edx, dword [edi + 0x14]
push eax
push ecx
push edx
call fcn.004be710
add esp, 0xc
mov eax, dword [ebx + 0x18]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx + 0x14]
add edx, dword [ebp + 0x18]
push eax
push ecx
push edx
call fcn.004be710
mov eax, dword [edi + 0x14]
mov dl, byte [esp + 0x4c]
mov byte [esi + eax], 0
mov ecx, dword [edi + 0x14]
mov byte [esi + ecx + 1], 0
add esp, 0xc
or word [edi + 0x1c], 0x20
mov dword [edi + 0x18], esi
mov byte [edi + 0x1f], dl
jmp case.0x512d81.12
mov ebp, dword [esp + 0x54]
mov eax, dword [esp + 0x18]
movzx edx, word [ebp + 0x1c]
movzx ecx, word [eax + 0x1c]
movzx ebx, cx
movzx edx, dx
or ebx, edx
test bl, 1
jne 0x513395
movzx edx, word [ebp + 0x1c]
and cl, dl
test cl, 4
je 0x5132b0
mov edi, dword [esp + 0x24]
mov ecx, dword [eax]
mov esi, dword [eax + 4]
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
add edi, 0xffffffb2
cmp edi, 3
ja case.default.0x51322d
jmp dword [edi*4 + 0x5167d8]
add eax, ecx
adc edx, esi
jmp 0x514441
sub eax, ecx
sbb edx, esi
jmp 0x514441
push esi
push ecx
push edx
push eax
call fcn.004ba2b0
jmp 0x514441
mov edi, ecx
or edi, esi
je 0x513395
mov edi, ecx
and edi, esi
cmp edi, 0xffffffff
jne 0x51327a
test eax, eax
jne 0x51327a
cmp edx, 0x80000000
jne 0x51327a
mov ecx, 1
xor esi, esi
push esi
push ecx
push edx
push eax
call fcn.004bf7d0
jmp 0x514441
mov edi, ecx
or edi, esi
je 0x513395
mov edi, ecx
and edi, esi
cmp edi, 0xffffffff
jne 0x5132a2
mov ecx, 1
xor esi, esi
push esi
push ecx
push edx
push eax
call fcn.004ca950
jmp 0x514441
push eax
call fcn.00510a70
fstp qword [esp + 0x50]
push ebp
call fcn.00510a70
movzx eax, byte [edi]
add eax, 0xffffffb2
add esp, 8
cmp eax, 3
ja case.default.0x5132ce
jmp dword [eax*4 + 0x5167e8]
fadd qword [esp + 0x4c]
jmp 0x513346
fsub qword [esp + 0x4c]
jmp 0x513346
fmul qword [esp + 0x4c]
jmp 0x513346
fldz
fld qword [esp + 0x4c]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x513391
fdivp st(1)
jmp 0x513346
fld qword [esp + 0x4c]
call fcn.004bec26
mov esi, eax
mov edi, edx
call fcn.004bec26
mov ecx, esi
or ecx, edi
je 0x513395
mov ecx, esi
and ecx, edi
cmp ecx, 0xffffffff
jne 0x513328
mov esi, 1
xor edi, edi
push edi
push esi
push edx
push eax
call fcn.004ca950
mov dword [esp + 0x164], eax
mov dword [esp + 0x168], edx
fild qword [esp + 0x164]
sub esp, 8
fst qword [esp + 0x54]
fstp qword [esp]
call fcn.00511a70
add esp, 8
test eax, eax
jne 0x513395
mov eax, dword [esp + 0x1c]
fld qword [esp + 0x4c]
mov cx, word [eax + 0x1c]
fstp qword [eax + 8]
and cx, 0xffe8
or cx, 8
test bl, 8
mov word [eax + 0x1c], cx
jne case.0x512d81.12
mov edx, eax
push edx
call fcn.00510af0
add esp, 4
jmp case.0x512d81.12
fstp st(0)
fstp st(0)
mov edx, dword [esp + 0x1c]
push edx
call fcn.00510c00
add esp, 4
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
movzx esi, byte [edi + 3]
mov ebx, dword [ecx + 0x24]
mov eax, dword [edi + 8]
mov ecx, dword [ecx + 0x4c]
lea eax, [eax + eax*4]
xor edx, edx
test esi, esi
lea ecx, [ecx + eax*8]
jle 0x5133d9
mov dword [ebx + edx*4], ecx
call fcn.00512920
add edx, 1
add ecx, 0x28
cmp edx, esi
jl 0x5133c7
cmp byte [edi + 1], 0xfb
jne 0x5133f6
mov edx, dword [edi + 0x10]
mov dword [esp + 0x184], edx
mov dword [esp + 0x188], 0
jmp 0x513409
mov eax, dword [edi + 0x10]
mov dword [esp + 0x188], eax
mov eax, dword [eax]
mov dword [esp + 0x184], eax
mov eax, dword [edi + 0xc]
mov edx, dword [esp + 0x230]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x4c]
lea ebp, [eax + ecx*8]
mov ecx, dword [esp + 0x14]
xor eax, eax
lea edx, [esp + 0x18c]
push ebp
push edx
mov dword [esp + 0x24], ebp
mov word [esp + 0x1b0], 1
mov dword [esp + 0x1a4], ecx
mov dword [esp + 0x1b4], eax
mov dword [esp + 0x1b8], eax
call fcn.00510da0
mov eax, dword [esp + 0x1b0]
and eax, 0xffe1
or eax, 1
mov word [esp + 0x1b0], ax
mov eax, dword [esp + 0x18c]
add esp, 8
mov dword [esp + 0x1b8], 0
cmp byte [eax + 3], 0
je 0x51348f
mov ecx, dword [edi - 4]
mov dword [esp + 0x1bc], ecx
mov eax, dword [eax + 0x10]
push ebx
lea edx, [esp + 0x188]
push esi
push edx
call eax
mov ecx, dword [esp + 0x20]
add esp, 0xc
cmp byte [ecx + 0x1e], 0
jne 0x516488
mov eax, dword [esp + 0x188]
test eax, eax
je 0x5134d5
mov edx, dword [edi + 4]
push edx
push eax
call fcn.0050f2f0
mov eax, dword [esp + 0x190]
add esp, 8
mov dword [edi + 0x10], eax
mov byte [edi + 1], 0xf9
cmp dword [esp + 0x1b8], 0
je 0x513513
lea ecx, [esp + 0x18c]
push 0
push ecx
call fcn.00509000
mov edx, dword [esp + 0x238]
add esp, 4
push eax
add edx, 0xf4
push edx
call fcn.005118f0
mov eax, dword [esp + 0x1c4]
add esp, 0xc
mov dword [esp + 0x10], eax
movzx ecx, byte [esp + 0x40]
push ecx
lea edx, [esp + 0x190]
push edx
call fcn.005105c0
lea eax, [esp + 0x194]
push eax
push ebp
call fcn.00510da0
push ebp
call fcn.00510cf0
add esp, 0x14
test eax, eax
jne 0x512ee6
jmp case.0x512d81.12
mov eax, dword [esp + 0x54]
mov cl, byte [eax + 0x1c]
mov ebx, dword [esp + 0x18]
or cl, byte [ebx + 0x1c]
test cl, 1
je 0x51356f
mov edx, dword [esp + 0x1c]
push edx
call fcn.00510c00
add esp, 4
jmp case.0x512d81.12
push eax
call fcn.005109d0
push ebx
mov esi, eax
mov ebp, edx
call fcn.005109d0
mov ecx, eax
movzx eax, byte [edi]
add esp, 8
sub eax, 0x4a
je 0x5135b6
sub eax, 1
je 0x5135b0
sub eax, 1
mov edx, ebp
mov eax, esi
je 0x5135a5
call fcn.00506c00
mov esi, eax
mov ebp, edx
jmp 0x5135ba
call fcn.004c0f80
mov esi, eax
mov ebp, edx
jmp 0x5135ba
or esi, ecx
or ebp, edx
jmp 0x5135ba
and esi, ecx
and ebp, edx
mov eax, dword [esp + 0x1c]
mov cx, word [eax + 0x1c]
and cx, 0xffe4
or cx, 4
mov dword [eax], esi
mov dword [eax + 4], ebp
mov word [eax + 0x1c], cx
jmp case.0x512d81.12
mov esi, dword [esp + 0x18]
push esi
call fcn.00510b20
mov eax, dword [edi + 8]
cdq
add esp, 4
add dword [esi], eax
adc dword [esi + 4], edx
jmp case.0x512d81.12
mov esi, dword [esp + 0x18]
call fcn.00512a60
test byte [esi + 0x1c], 8
je 0x51360c
push esi
call fcn.00510af0
add esp, 4
movzx ebx, word [esi + 0x1c]
test bl, 0xc
jne 0x513624
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
test bl, 4
je 0x513650
cmp dword [edi + 0xc], 0
je 0x513641
mov eax, 1
xor ecx, ecx
add eax, dword [esi]
adc ecx, dword [esi + 4]
mov ebp, eax
mov edx, ecx
jmp 0x5136aa
xor eax, eax
xor ecx, ecx
add eax, dword [esi]
adc ecx, dword [esi + 4]
mov ebp, eax
mov edx, ecx
jmp 0x5136aa
fld qword [esi + 8]
call fcn.004bec26
mov ebp, eax
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], edx
fild qword [esp + 0x9c]
fcomp qword [esi + 8]
fnstsw ax
test ah, 5
jp 0x51368d
add ebp, 1
adc edx, 0
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], edx
cmp dword [edi + 0xc], 0
je 0x5136aa
fild qword [esp + 0x9c]
fcomp qword [esi + 8]
fnstsw ax
test ah, 0x44
jp 0x5136aa
add ebp, 1
adc edx, 0
and ebx, 0xffe4
or ebx, 4
mov dword [esi], ebp
mov dword [esi + 4], edx
mov word [esi + 0x1c], bx
jmp case.0x512d81.12
mov esi, dword [esp + 0x18]
call fcn.00512a60
test byte [esi + 0x1c], 8
je 0x5136d9
push esi
call fcn.00510af0
add esp, 4
movzx eax, word [esi + 0x1c]
test al, 4
jne 0x5136f8
mov edi, dword [edi + 8]
test edi, edi
je 0x51649d
add edi, 0xffffffff
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
and eax, 0xffe4
or eax, 4
mov word [esi + 0x1c], ax
jmp case.0x512d81.12
mov edx, dword [esp + 0x18]
test byte [edx + 0x1c], 4
je case.0x512d81.12
mov eax, edx
push eax
call fcn.00510b50
add esp, 4
jmp case.0x512d81.12
mov ecx, dword [esp + 0x18]
movzx ecx, word [ecx + 0x1c]
test cl, 1
jne case.0x512d81.12
mov esi, dword [esp + 0x18]
movzx eax, cl
shr al, 3
and eax, 2
or eax, ecx
test al, 2
mov word [esi + 0x1c], ax
jne 0x513760
test al, 0xc
je 0x513760
movzx edx, bl
push edx
push esi
call fcn.00510770
add esp, 8
and word [esi + 0x1c], 0xfff3
movzx eax, word [esi + 0x1c]
test eax, 0x800
je 0x513789
push esi
call fcn.005106c0
add esp, 4
and word [esi + 0x1c], 0xffe3
mov dword [esp + 0x10], eax
jmp case.0x512d81.12
and word [esi + 0x1c], 0xffe3
mov dword [esp + 0x10], 0
jmp case.0x512d81.12
mov eax, dword [esp + 0x18]
movzx eax, word [eax + 0x1c]
test al, 1
jne case.0x512d81.12
test al, 0x10
jne 0x5137dd
test al, 2
jne 0x5137d1
test al, 0xc
je 0x5137d1
mov esi, dword [esp + 0x18]
movzx ecx, bl
push ecx
push esi
call fcn.00510770
add esp, 8
and word [esi + 0x1c], 0xfff3
jmp 0x5137e1
mov esi, dword [esp + 0x18]
and word [esi + 0x1c], 0xfff3
jmp 0x5137e1
mov esi, dword [esp + 0x18]
mov dx, word [esi + 0x1c]
and dx, 0xfff0
or dx, 0x10
mov word [esi + 0x1c], dx
jmp case.0x512d81.12
mov eax, dword [esp + 0x18]
test byte [eax + 0x1c], 0xd
jne case.0x512d81.12
mov ecx, eax
push ecx
call fcn.00510b80
add esp, 4
jmp case.0x512d81.12
mov edx, dword [esp + 0x18]
test byte [edx + 0x1c], 1
jne case.0x512d81.12
mov eax, edx
push eax
call fcn.00510b20
add esp, 4
jmp case.0x512d81.12
mov ecx, dword [esp + 0x18]
test byte [ecx + 0x1c], 1
jne case.0x512d81.12
mov edx, ecx
push edx
call fcn.00510b50
add esp, 4
jmp case.0x512d81.12
mov esi, dword [esp + 0x18]
mov al, byte [esi + 0x1c]
mov ebp, dword [esp + 0x5c]
or al, byte [ebp + 0x1c]
test al, 1
je 0x5138c9
mov al, byte [edi + 3]
test al, 0x10
je 0x513937
mov ecx, 4
mov word [esp + 0x220], cx
movzx eax, word [esi + 0x1c]
not eax
and eax, 1
cdq
mov dword [esp + 0x204], eax
mov word [esp + 0x1f8], cx
movzx eax, word [ebp + 0x1c]
not eax
and eax, 1
mov dword [esp + 0x208], edx
cdq
lea esi, [esp + 0x204]
lea ebp, [esp + 0x1dc]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1dc], eax
mov dword [esp + 0x1e0], edx
mov dword [esp + 0x5c], ebp
mov bl, byte [edi + 3]
and bl, 0x67
je 0x5138f0
mov edx, dword [esp + 0x40]
push edx
mov al, bl
mov ecx, esi
call fcn.00512af0
mov eax, dword [esp + 0x44]
push eax
mov al, bl
mov ecx, ebp
call fcn.00512af0
add esp, 8
mov ebx, 0x800
test word [esi + 0x1c], bx
je 0x513904
push esi
call fcn.005106c0
add esp, 4
test word [ebp + 0x1c], bx
je 0x513913
push ebp
call fcn.005106c0
add esp, 4
mov ecx, dword [edi + 0x10]
push ecx
push esi
push ebp
call fcn.005114e0
movzx ecx, byte [edi]
add ecx, 0xffffffbd
add esp, 0xc
cmp ecx, 4
ja case.default.0x513930
jmp dword [ecx*4 + 0x5167f8]
test al, al
jns 0x513968
mov edi, dword [edi + 8]
mov edx, dword [esp + 0x230]
mov eax, dword [edx + 0x4c]
lea ecx, [edi + edi*4]
lea eax, [eax + ecx*8]
mov cx, word [eax + 0x1c]
and cx, 0xffe1
or cx, 1
mov dword [esp + 0x1c], eax
mov word [eax + 0x1c], cx
jmp case.0x512d81.12
test al, 8
je case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
xor edx, edx
test eax, eax
sete dl
mov eax, edx
jmp 0x5139bb
xor ecx, ecx
test eax, eax
setne cl
jmp 0x5139b9
xor edx, edx
test eax, eax
setl dl
mov eax, edx
jmp 0x5139bb
xor ecx, ecx
test eax, eax
setle cl
jmp 0x5139b9
xor edx, edx
test eax, eax
setg dl
mov eax, edx
jmp 0x5139bb
xor ecx, ecx
test eax, eax
setge cl
mov eax, ecx
test byte [edi + 3], 0x80
je 0x513b2b
mov edi, dword [edi + 8]
mov ecx, dword [esp + 0x230]
mov ecx, dword [ecx + 0x4c]
lea edx, [edi + edi*4]
lea ecx, [ecx + edx*8]
mov dx, word [ecx + 0x1c]
and dx, 0xffe4
or dx, 4
mov word [ecx + 0x1c], dx
cdq
mov dword [esp + 0x1c], ecx
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x512d81.12
mov eax, dword [esp + 0x18]
test byte [eax + 0x1c], 1
je 0x513a09
mov esi, 2
jmp 0x513a1f
push eax
call fcn.005109d0
add esp, 4
or eax, edx
je 0x513a1d
mov esi, 1
jmp 0x513a1f
xor esi, esi
mov eax, dword [esp + 0x54]
test byte [eax + 0x1c], 1
je 0x513a30
mov eax, 2
jmp 0x513a46
push eax
call fcn.005109d0
add esp, 4
or eax, edx
je 0x513a44
mov eax, 1
jmp 0x513a46
xor eax, eax
cmp byte [edi], 0x3d
jne 0x513a58
lea eax, [eax + esi*2]
movzx eax, byte [esi + eax + 0x576ed4]
jmp 0x513a63
lea ecx, [eax + esi*2]
movzx eax, byte [esi + ecx + 0x576ee0]
cmp eax, 2
jne 0x514440
mov eax, dword [esp + 0x1c]
mov dx, word [eax + 0x1c]
and dx, 0xffe1
or dx, 1
mov word [eax + 0x1c], dx
jmp case.0x512d81.12
mov ecx, dword [esp + 0x18]
test byte [ecx + 0x1c], 1
jne case.0x512d81.12
mov esi, ecx
push esi
call fcn.00510b20
mov edx, dword [esi]
add esp, 4
or edx, dword [esi + 4]
jne 0x513ab6
mov eax, 1
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x512d81.12
xor eax, eax
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x512d81.12
mov eax, dword [esp + 0x18]
test byte [eax + 0x1c], 1
jne case.0x512d81.12
mov esi, eax
push esi
call fcn.00510b20
mov ecx, dword [esi]
mov edx, dword [esi + 4]
not ecx
not edx
add esp, 4
mov dword [esi], ecx
mov dword [esi + 4], edx
jmp case.0x512d81.12
mov eax, dword [esp + 0x18]
test byte [eax + 0x1c], 1
je 0x513afe
mov eax, dword [edi + 0xc]
jmp 0x513b2b
push eax
call fcn.00510a70
fcomp qword [0x556e90]
add esp, 4
fnstsw ax
test ah, 0x44
jnp 0x513b1b
mov eax, 1
jmp 0x513b1d
xor eax, eax
cmp byte [edi], 0x49
jne 0x513b2b
xor ecx, ecx
test eax, eax
sete cl
mov eax, ecx
test eax, eax
je case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov eax, dword [edi + 0xc]
jmp 0x513b50
mov edx, dword [esp + 0x18]
test byte [edx + 0x1c], 1
jne 0x512d99
add dword [esp + 0x18], 0x28
sub eax, 1
test eax, eax
jg 0x513b50
jmp case.0x512d81.12
mov eax, dword [esp + 0x18]
test byte [eax + 0x1c], 1
jne case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov edx, dword [edi + 8]
mov eax, dword [edi + 0xc]
mov esi, dword [esp + 0x230]
mov ecx, dword [edi + 4]
mov dword [esp + 0x24], edx
mov edx, dword [esi + 0x4c]
xor ebx, ebx
lea eax, [eax + eax*4]
lea eax, [edx + eax*8]
mov word [esp + 0xc8], bx
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xd0], ebx
mov dx, word [eax + 0x1c]
and dx, 0xffe1
or dx, 1
mov word [eax + 0x1c], dx
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0x30]
mov ebp, dword [eax + ecx*4]
cmp dword [ebp], ebx
je 0x513c58
push ebp
call fcn.0050f350
add esp, 4
cmp eax, ebx
mov dword [esp + 0x10], eax
jne 0x51653d
cmp byte [ebp + 0x1c], bl
mov eax, dword [ebp]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x30], eax
je 0x513c0c
mov dword [esp + 0x60], ebx
jmp 0x513c6d
mov ecx, dword [ebp + 0x68]
cmp ecx, dword [esi + 0x54]
jne 0x513c24
mov edx, dword [ebp + 0x6c]
mov dword [esp + 0x60], edx
mov eax, dword [ebp + 0x78]
mov dword [esp + 0x48], eax
jmp 0x513c6d
cmp byte [ebp + 0x22], 0
je 0x513c48
lea ecx, [esp + 0x1d4]
push ecx
push eax
call fcn.0051e000
mov edx, dword [esp + 0x1dc]
mov dword [esp + 0x68], edx
add esp, 8
jmp 0x513c6d
lea ecx, [esp + 0x60]
push ecx
push eax
call fcn.0051e090
add esp, 8
jmp 0x513c6d
mov eax, dword [ebp + 0x34]
mov dword [esp + 0x60], eax
mov ecx, dword [ebp + 0x38]
mov dword [esp + 0x48], ecx
mov dword [ebp + 0x68], ebx
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x60]
cmp eax, ebx
mov edx, dword [ebp + 0x50]
mov dword [esp + 0x34], edx
je case.0x512d81.12
mov ecx, dword [esp + 0x14]
cmp eax, dword [ecx + 0x50]
ja 0x512ee6
mov edx, dword [ebp + 0x68]
mov eax, dword [ebp + 0x70]
mov ecx, esi
cmp edx, dword [ecx + 0x54]
mov dword [esp + 0x44], eax
jne 0x513caa
mov eax, dword [ebp + 0x74]
mov dword [esp + 0x38], eax
jmp 0x513e46
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x48]
test esi, esi
lea eax, [eax + edx*4]
mov dword [ebp + 0x74], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x60]
mov dword [ebp + 0x6c], eax
mov ecx, dword [ecx + 0x54]
mov dword [ebp + 0x68], ecx
jne 0x513d15
cmp byte [ebp + 0x22], 0
je 0x513ce4
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x7c]
push edx
push eax
call fcn.00519a40
jmp 0x513cf3
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x7c]
push ecx
push edx
call fcn.00519ab0
mov esi, eax
mov eax, dword [esp + 0x84]
add esp, 8
cmp eax, dword [esp + 0x60]
jb 0x513d0e
mov dword [esp + 0x48], esi
mov dword [ebp + 0x78], esi
jmp 0x513d15
mov dword [ebp + 0x78], 0
mov al, byte [esi]
cmp al, 0x80
jae 0x513d29
movzx ecx, al
mov dword [esp + 0x64], ecx
mov ebx, 1
jmp 0x513d3d
lea ecx, [esp + 0x64]
push ecx
push esi
call fcn.005126d0
mov ecx, dword [esp + 0x6c]
add esp, 8
mov ebx, eax
cmp dword [esp + 0x48], 0
jne 0x513d8e
cmp dword [esp + 0x7c], ecx
jae 0x513d8e
xor esi, esi
mov word [esp + 0xc8], si
mov dword [esp + 0xbc], esi
movzx eax, byte [ebp + 0x22]
lea edx, [esp + 0xac]
push edx
push eax
push ecx
mov ecx, dword [esp + 0x3c]
push esi
push ecx
call fcn.00510f60
add esp, 0x14
cmp eax, esi
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov esi, dword [esp + 0xc0]
mov ecx, dword [esp + 0x64]
lea edx, [ecx + esi]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x34]
add ebx, esi
test edx, edx
jbe 0x513e04
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x38]
sub eax, esi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x34], edx
cmp ebx, dword [esp + 0x10]
jae 0x513df3
mov dword [eax + esi], ecx
mov al, byte [ebx]
cmp al, 0x80
jae 0x513dcc
movzx eax, al
mov dword [esi], eax
mov eax, 1
jmp 0x513dd6
push esi
push ebx
call fcn.005126d0
add esp, 8
mov ecx, dword [esi]
push ecx
add ebx, eax
call fcn.0050f4b0
mov ecx, dword [esp + 0x68]
add esp, 4
add ecx, eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], ecx
jmp 0x513dfa
mov dword [eax + esi], 0
add esi, 4
sub dword [esp + 0x34], 1
jne 0x513db1
lea edx, [esp + 0xac]
push edx
call fcn.00510910
mov edx, dword [esp + 0x14]
add esp, 4
cmp ebx, edx
mov word [esp + 0xc8], 1
ja 0x513fae
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
cmp eax, ecx
ja 0x513fae
cmp ebx, edx
jne 0x513e46
cmp eax, ecx
jne 0x513fae
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x24]
mov eax, dword [ebx + esi*4]
test eax, eax
je 0x513f4b
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x513ed5
mov edi, dword [esp + 0x3c]
add eax, ecx
test byte [edi + 0x1c], 0x40
je 0x513eb7
lea edx, [esp + 0xac]
push edx
mov edx, dword [esp + 0x48]
mov edx, dword [edx + esi*4]
push edx
push eax
call fcn.0050f590
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0xb8]
push ecx
push edi
mov dword [esp + 0xd0], eax
call fcn.005111a0
add esp, 0x14
test eax, eax
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov al, byte [esp + 0x40]
mov byte [edi + 0x1f], al
jmp 0x513f6d
mov edx, dword [esp + 0x44]
mov edx, dword [edx + esi*4]
push edi
push edx
push eax
call fcn.0050f590
mov al, byte [esp + 0x4c]
add esp, 0xc
mov byte [edi + 0x1f], al
jmp 0x513f6d
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + esi*4]
push ecx
call fcn.0050f4b0
mov edx, dword [esp + 0x40]
mov edi, eax
push edx
lea eax, [esp + 0xb4]
push eax
call fcn.00510da0
movzx edx, byte [ebp + 0x22]
mov eax, dword [ebx + esi*4]
lea ecx, [esp + 0xb8]
push ecx
mov ecx, dword [esp + 0x40]
push edx
push edi
push eax
push ecx
call fcn.00510f60
add esp, 0x20
test eax, eax
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x3c]
mov ecx, dword [edx + eax*4]
mov edx, dword [esp + 0xc0]
push edi
push ecx
push edx
call fcn.0050f590
mov al, byte [esp + 0x4c]
add esp, 0xc
mov byte [edi + 0x1f], al
jmp 0x513f6d
cmp byte [edi + 1], 0xf8
jne 0x513f69
mov ecx, dword [edi + 0x10]
mov edi, dword [esp + 0x3c]
push 0x80
push ecx
push edi
call fcn.00510d20
add esp, 0xc
jmp 0x513f6d
mov edi, dword [esp + 0x3c]
cmp dword [esp + 0xd0], 0
je 0x513f9c
mov dx, word [edi + 0x1c]
and dx, 0xfe7f
or dx, 0x20
mov word [edi + 0x1c], dx
mov eax, dword [esp + 0xc0]
mov dword [edi + 0x14], eax
mov ecx, dword [esp + 0xd0]
mov dword [edi + 0x24], ecx
push edi
call fcn.00511190
add esp, 4
mov dword [esp + 0x10], eax
jmp case.0x512d81.12
mov dword [esp + 0x10], 0xb
jmp case.0x512d81.12
mov eax, dword [edi + 4]
mov ebx, dword [edi + 0x10]
mov edi, dword [edi + 8]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x230]
mov ecx, dword [eax + 0x4c]
lea eax, [ecx + edx*8]
lea edx, [edi + edi*4]
lea ebp, [eax + edx*8 - 0x28]
cmp eax, ebp
mov edi, eax
ja case.0x512d81.12
xor esi, esi
test word [edi + 0x1c], 0x800
je 0x513ff8
push edi
call fcn.005106c0
add esp, 4
mov eax, dword [esp + 0x40]
push eax
mov eax, 0x66666667
imul esi
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, byte [ecx + ebx]
mov ecx, edi
call fcn.00512af0
add edi, 0x28
add esp, 4
add esi, 0x28
cmp edi, ebp
jbe 0x513fe7
jmp case.0x512d81.12
mov edx, dword [edi + 0x10]
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 4]
lea eax, [eax + eax*4]
mov dword [esp + 0x4c], edx
mov edx, dword [ecx + 0x4c]
movzx ecx, byte [ecx + 0x100]
lea ebp, [edx + eax*8]
mov eax, dword [edi + 8]
xor esi, esi
lea eax, [eax + eax*4]
lea eax, [ebp + eax*8 - 0x28]
cmp ebp, eax
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x38], ebp
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
ja 0x51413b
mov eax, 0xffffffe8
sub eax, ebp
mov dword [esp + 0x24], eax
lea esp, [esp]
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x5140c3
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
lea ecx, [eax + ebp + 0x18]
push edx
mov eax, 0x66666667
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, byte [ecx + esi]
mov ecx, ebp
call fcn.00512af0
add esp, 4
test word [ebp + 0x1c], 0x800
je 0x5140da
cmp dword [ebp + 0x18], 0
jle 0x5140da
push ebp
call fcn.005106c0
add esp, 4
mov edx, dword [esp + 0x34]
push edx
push ebp
call fcn.0050f3d0
mov esi, eax
push esi
call fcn.0050f4b0
mov ebx, eax
cdq
add dword [esp + 0x94], eax
push 0
push esi
adc dword [esp + 0xa0], edx
call fcn.005127b0
add dword [esp + 0x50], eax
add esp, 0x14
test word [ebp + 0x1c], 0x800
je 0x51411e
mov eax, dword [ebp]
add dword [esp + 0x44], eax
jmp 0x51412a
test ebx, ebx
je 0x51412a
mov dword [esp + 0x44], 0
add ebp, 0x28
cmp ebp, dword [esp + 0x30]
jbe 0x514090
mov esi, dword [esp + 0x3c]
mov eax, esi
cdq
push edx
push eax
call fcn.005127b0
mov ebx, eax
add esi, ebx
mov eax, esi
cdq
push edx
push eax
mov dword [esp + 0x4c], esi
call fcn.005127b0
add esp, 0x10
cmp ebx, eax
jge 0x514165
add esi, 1
mov dword [esp + 0x3c], esi
mov eax, dword [esp + 0x44]
cdq
mov ebx, eax
mov dword [esp + 0xf0], edx
mov eax, esi
cdq
mov ebp, eax
mov ecx, edx
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x50]
sub ebp, ebx
sbb ecx, dword [esp + 0xf0]
add ebp, dword [esp + 0x88]
cdq
adc ecx, dword [esp + 0x8c]
mov dword [esp + 0xec], ebx
cmp ecx, edx
ja 0x512ee6
jb 0x5141b2
cmp ebp, eax
ja 0x512ee6
mov edi, dword [edi + 0xc]
mov ecx, dword [esp + 0x230]
mov edx, dword [ecx + 0x4c]
push 0
lea eax, [edi + edi*4]
lea eax, [edx + eax*8]
push ebp
push eax
mov dword [esp + 0x28], eax
call fcn.005105f0
add esp, 0xc
test eax, eax
jne 0x51302b
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
cmp eax, 0x80
mov ecx, dword [ebx + 0x14]
mov dword [esp + 0x48], ecx
jae 0x5141fc
mov byte [ecx], al
mov edi, 1
jmp 0x514208
push eax
push ecx
call fcn.005124b0
add esp, 8
mov edi, eax
mov esi, dword [esp + 0x38]
cmp esi, dword [esp + 0x30]
ja 0x514251
mov eax, dword [esp + 0x34]
push eax
push esi
call fcn.0050f3d0
add esp, 8
cmp eax, 0x80
jae 0x514235
mov ecx, dword [esp + 0x48]
mov byte [edi + ecx], al
mov eax, 1
jmp 0x514246
mov edx, dword [esp + 0x48]
push eax
lea eax, [edi + edx]
push eax
call fcn.005124b0
add esp, 8
add esi, 0x28
add edi, eax
cmp esi, dword [esp + 0x30]
jbe 0x514212
mov esi, dword [esp + 0x38]
cmp esi, dword [esp + 0x30]
ja 0x514286
jmp 0x514260
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x48]
push ecx
mov edx, ebp
push esi
sub edx, edi
push edx
lea ecx, [edi + eax]
push ecx
call fcn.0050f4d0
add esi, 0x28
add esp, 0x10
add edi, eax
cmp esi, dword [esp + 0x30]
jbe 0x514260
cmp dword [esp + 0x44], 0
mov dword [ebx + 0x18], ebp
mov word [ebx + 0x1c], 0x50
mov dword [ebx + 0x20], 0
je 0x5142b6
mov edx, dword [esp + 0xec]
mov eax, dword [esp + 0xf0]
mov dword [ebx], edx
mov dword [ebx + 4], eax
mov word [ebx + 0x1c], 0x850
mov byte [ebx + 0x1f], 1
jmp case.0x512d81.12
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x1c], 0
je 0x5142d6
cmp dword [eax + 0x90], 1
jle case.0x512d81.12
mov edi, dword [edi + 4]
mov edx, dword [eax + 8]
lea ecx, [edi + edi*2]
mov esi, dword [edx + ecx*8 + 4]
push esi
call fcn.0051b8f0
add esp, 4
test eax, eax
jne case.0x512d81.12
push esi
call fcn.00519330
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x234]
add esp, 4
mov dword [eax + 0x14c], 1
jmp case.0x512d81.12
mov esi, dword [esp + 0x14]
mov bl, byte [edi + 4]
mov al, byte [edi + 8]
mov ebp, 1
cmp dword [esi + 0x90], ebp
jle 0x514372
test bl, bl
je 0x514372
cmp byte [esi + 0x1c], 0
jne 0x514372
test al, al
mov eax, str.rollback
jne 0x514346
mov eax, str.commit
mov ecx, dword [esp + 0x230]
push 0
push str._transaction___SQL_statements_in_progress
push eax
add ecx, 0xf4
push str.cannot
push ecx
call fcn.005118f0
add esp, 0x14
mov dword [esp + 0x10], ebp
jmp case.0x512d81.12
cmp bl, byte [esi + 0x1c]
jne 0x5164aa
test bl, bl
jne 0x514386
mov eax, str.cannot_start_a_transaction_within_a_transaction
jmp 0x514394
test al, al
mov eax, str.cannot_rollback___no_transaction_is_active
jne 0x514394
mov eax, str.cannot_commit___no_transaction_is_active
mov edx, dword [esp + 0x230]
push 0
push eax
add edx, 0xf4
push edx
call fcn.005118f0
add esp, 0xc
mov dword [esp + 0x10], ebp
jmp case.0x512d81.12
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 8]
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*8 + 4]
test eax, eax
je case.0x512d81.12
mov ecx, dword [edi + 8]
push ecx
push eax
call fcn.00518d40
add esp, 8
cmp eax, 5
mov dword [esp + 0x10], eax
je 0x516506
test eax, eax
je case.0x512d81.12
cmp eax, 8
jne 0x51653d
jmp case.0x512d81.12
mov eax, dword [edi + 4]
test eax, eax
mov edi, dword [edi + 0xc]
jge 0x514412
or edx, 0xffffffff
sub edx, eax
mov eax, edx
neg edi
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0xf4]
push ecx
mov ecx, dword [eax + 8]
mov edx, dword [ecx + edx*8 + 4]
add edi, 1
push edi
push edx
call fcn.0051ae60
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x100]
add esp, 0xc
cdq
mov ecx, dword [esp + 0x1c]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov ax, word [ecx + 0x1c]
and ax, 0xffe4
or ax, 4
mov word [ecx + 0x1c], ax
jmp case.0x512d81.12
mov eax, dword [edi + 4]
mov ebp, dword [esp + 0x14]
mov edx, dword [ebp + 8]
mov ebx, dword [esp + 0x5c]
lea ecx, [eax + eax*2]
push ebx
lea esi, [edx + ecx*8]
call fcn.00510b20
mov eax, dword [ebx]
mov ecx, dword [edi + 8]
mov edx, dword [esi + 4]
push eax
add ecx, 1
push ecx
push edx
call fcn.0051af80
mov dword [esp + 0x20], eax
mov eax, dword [edi + 8]
add esp, 0x10
test eax, eax
jne 0x5144a7
mov eax, dword [esi + 0x14]
mov ecx, dword [ebx]
mov dword [eax], ecx
or dword [ebp + 0xc], 0x10
jmp 0x5144b4
cmp eax, 1
jne 0x5144b4
mov edx, dword [esi + 0x14]
mov al, byte [ebx]
mov byte [edx + 0x58], al
cmp dword [edi + 4], 1
jne case.0x512d81.12
mov ecx, ebp
push ecx
call fcn.0050fdd0
add esp, 4
jmp case.0x512d81.12
mov eax, dword [edi + 4]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 8]
mov eax, dword [ecx + edx*8 + 4]
xor esi, esi
cmp eax, esi
je 0x51457b
lea edx, [esp + 0x80]
push edx
push 1
push eax
call fcn.0051ae60
add esp, 0xc
cmp eax, esi
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov eax, dword [esp + 0x80]
cmp eax, dword [edi + 8]
je case.0x512d81.12
mov ebx, dword [esp + 0x230]
mov ecx, dword [ebx + 0xf4]
push ecx
call fcn.0050dc90
mov esi, dword [esp + 0x18]
push str.database_schema_has_changed
push esi
call fcn.00511850
mov dword [ebx + 0xf4], eax
mov edi, dword [edi + 4]
mov eax, dword [esi + 8]
lea edx, [edi + edi*2]
mov ecx, dword [eax + edx*8 + 0x14]
mov edx, dword [ecx]
add esp, 0xc
cmp edx, dword [esp + 0x80]
je 0x514565
push edi
push esi
call fcn.00520860
add esp, 8
push esi
call fcn.0050fdd0
add esp, 4
mov dword [esp + 0x10], 0x11
jmp case.0x512d81.12
mov dword [esp + 0x10], esi
mov dword [esp + 0x80], esi
jmp 0x514508
cmp al, 9
mov ecx, dword [edi + 4]
mov esi, dword [edi + 0xc]
mov ebx, dword [esp + 0x14]
mov ebx, dword [ebx + 8]
mov edx, dword [edi + 8]
mov dword [esp + 0x4c], ecx
lea ecx, [esi + esi*2]
lea ecx, [ebx + ecx*8]
mov ebx, dword [ecx + 4]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x230]
mov dword [esp + 0x38], edx
jne 0x5145d6
mov eax, dword [ecx + 0x14]
mov al, byte [eax + 0x58]
cmp al, byte [ebx + 0x100]
mov dword [esp + 0x24], 1
jae 0x5145de
mov byte [ebx + 0x100], al
jmp 0x5145de
mov dword [esp + 0x24], 0
cmp byte [edi + 3], 0
je 0x514601
lea ecx, [edx + edx*4]
mov edx, dword [ebx + 0x4c]
lea ebp, [edx + ecx*8]
push ebp
mov dword [esp + 0x58], ebp
call fcn.00510b20
mov eax, dword [ebp]
add esp, 4
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x4c]
push 1
push esi
lea ecx, [edi - 0x14]
push edx
mov eax, ebx
call fcn.00512970
mov ebp, eax
add esp, 0xc
test ebp, ebp
je 0x51302b
mov eax, dword [ebp]
mov edx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x3c]
mov byte [ebp + 0x1c], 1
mov ecx, dword [edi + 0x10]
push ecx
mov ecx, dword [esp + 0x3c]
push edx
push eax
push ecx
call fcn.0051dfc0
add esp, 0x14
cmp byte [edi + 1], 0xfa
mov dword [esp + 0x10], eax
jne 0x51466c
mov ecx, dword [edi + 0x10]
mov dword [ebp + 0x4c], ecx
add ecx, 5
mov dword [ebp + 0x48], ecx
mov edx, dword [ebx]
mov ecx, dword [edx + 8]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ebp + 0x4c]
mov dl, byte [edx + 0x59]
mov byte [ecx + 4], dl
jmp 0x514679
lea ecx, [ebp + 0x23]
mov dword [ebp + 0x4c], 0
mov dword [ebp + 0x48], ecx
test eax, eax
je 0x5146b5
cmp eax, 5
je 0x516521
cmp eax, 0x10
jne 0x51653d
cmp byte [edi + 1], 0xfa
mov dword [ebp], 0
setne al
test al, al
sete dl
mov byte [ebp + 0x21], al
mov byte [ebp + 0x22], dl
mov dword [esp + 0x10], 0
jmp case.0x512d81.12
mov eax, dword [ebp]
push eax
call fcn.0051e3c0
add esp, 4
test al, 0xf0
jne 0x5146ff
mov ecx, eax
and ecx, 7
cmp ecx, 5
je 0x5146d4
cmp ecx, 2
jne 0x5146ff
mov cl, al
shr eax, 1
and cl, 1
and al, 1
test cl, cl
mov byte [ebp + 0x21], cl
mov byte [ebp + 0x22], al
je 0x5146ed
cmp byte [edi + 1], 0xfa
je 0x5146ff
test al, al
je case.0x512d81.12
cmp byte [edi + 1], 0xfa
je case.0x512d81.12
mov dword [esp + 0x10], 0xb
jmp 0x51653d
mov eax, dword [edi + 4]
mov ebx, dword [esp + 0x230]
push 1
push 0xffffffffffffffff
push eax
mov ecx, edi
mov eax, ebx
call fcn.00512970
mov ebp, eax
add esp, 0xc
test ebp, ebp
je 0x51302b
mov edx, dword [esp + 0x14]
lea esi, [ebp + 0x30]
push esi
push 0x41e
push 0x1f4
push 1
push 0
push edx
mov byte [ebp + 0x1c], 1
call fcn.0050acf0
add esp, 0x18
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51480f
mov eax, dword [esi]
push 1
push eax
call fcn.00518d40
add esp, 8
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51480f
cmp dword [edi + 0x10], eax
je 0x5147ec
mov edx, dword [esi]
push 2
lea ecx, [esp + 0x128]
push ecx
push edx
call fcn.0051d8c0
add esp, 0xc
test eax, eax
mov dword [esp + 0x10], eax
jne 0x5147d9
mov eax, dword [ebp]
mov ecx, dword [edi + 0x10]
mov edx, dword [esp + 0x124]
push eax
mov eax, dword [esi]
push ecx
push 1
push edx
push eax
call fcn.0051dfc0
mov edi, dword [edi + 0x10]
mov dword [ebp + 0x4c], edi
mov ecx, dword [ebx]
mov edx, dword [ecx + 8]
mov dword [esp + 0x24], eax
mov eax, dword [edx + 0x14]
mov cl, byte [eax + 0x59]
mov byte [edi + 4], cl
mov edx, dword [ebp + 0x4c]
add esp, 0x14
add edx, 5
mov dword [ebp + 0x48], edx
mov byte [ebp + 0x21], 0
cmp byte [ebp + 0x21], 0
sete al
mov byte [ebp + 0x22], al
jmp case.0x512d81.12
mov eax, dword [ebp]
mov ecx, dword [esi]
push eax
push 0
push 1
push 1
push ecx
call fcn.0051dfc0
lea edx, [ebp + 0x23]
add esp, 0x14
mov dword [esp + 0x10], eax
mov byte [ebp + 0x21], 1
mov dword [ebp + 0x48], edx
cmp byte [ebp + 0x21], 0
sete al
mov byte [ebp + 0x22], al
jmp case.0x512d81.12
mov eax, dword [edi + 4]
push 0
push 0xffffffffffffffff
push eax
mov eax, dword [esp + 0x23c]
lea ecx, [edi - 0x14]
call fcn.00512970
add esp, 0xc
test eax, eax
je 0x51302b
mov byte [eax + 0x1c], 1
mov byte [eax + 0x1e], 1
mov cl, byte [edi + 8]
lea edx, [eax + 0x23]
mov byte [eax + 0x1f], cl
mov dword [eax + 0x48], edx
mov byte [eax + 0x21], 1
mov byte [eax + 0x22], 0
jmp case.0x512d81.12
mov esi, dword [esp + 0x230]
mov edi, dword [edi + 4]
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + edi*4]
push ecx
push esi
call fcn.0050ebc0
mov edx, dword [esi + 0x30]
mov dword [edx + edi*4], 0
jmp 0x516393
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 4]
mov ecx, dword [ecx + 0x30]
mov ebp, dword [ecx + eax*4]
cmp dword [ebp], 0
je case.0x512d81.12
cmp edx, 6
mov byte [ebp + 0x1c], 0
je 0x5148b3
cmp edx, 0x40
je 0x5148b3
xor eax, eax
jmp 0x5148b8
mov eax, 1
mov edx, dword [ebp + 0x48]
mov byte [edx], al
cmp byte [ebp + 0x21], 0
je 0x514924
mov eax, dword [esp + 0x5c]
push eax
call fcn.005109d0
add esp, 4
cmp dword [edi + 8], 0
mov esi, eax
mov ebx, edx
jne 0x5148ed
mov dword [ebp + 0x28], esi
mov dword [ebp + 0x2c], ebx
mov byte [ebp + 0x19], 0
mov byte [ebp + 0x20], 1
jmp case.0x512d81.12
mov edx, dword [ebp]
lea ecx, [esp + 0x58]
push ecx
push 0
push ebx
push esi
push 0
push 0
push edx
call fcn.0051c3f0
add esp, 0x1c
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
cmp dword [esp + 0x58], eax
mov dword [ebp + 8], esi
sete al
mov dword [ebp + 0xc], ebx
mov byte [ebp + 0x19], al
jmp 0x514994
mov ecx, dword [ebp + 0x4c]
mov dx, word [edi + 0x10]
mov eax, dword [edi + 0xc]
mov dword [esp + 0x128], ecx
mov ecx, dword [esp + 0x230]
mov word [esp + 0x12c], dx
mov edx, dword [ecx + 0x4c]
lea ecx, [esp + 0x58]
push ecx
push 0
lea eax, [eax + eax*4]
push 0
lea eax, [edx + eax*8]
push 0
lea edx, [esp + 0x138]
push edx
mov dword [esp + 0x144], eax
mov eax, dword [ebp]
push 0
push eax
mov byte [esp + 0x14a], 0
mov byte [esp + 0x14b], 0
call fcn.0051c3f0
add esp, 0x1c
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
mov byte [ebp + 0x19], al
mov eax, dword [esp + 0x24]
mov edx, dword [ebp + 0x48]
xor ecx, ecx
cmp eax, 0x75
mov byte [ebp + 0x20], 0
mov dword [ebp + 0x68], ecx
mov byte [edx], cl
je 0x5149f0
cmp eax, 6
je 0x5149f0
cmp dword [esp + 0x58], ecx
jl 0x5149c6
mov ecx, dword [ebp]
lea eax, [esp + 0x58]
push eax
push ecx
call fcn.0051e270
jmp 0x514a04
mov edx, dword [ebp]
push edx
call fcn.00519b70
add esp, 4
mov dword [esp + 0x58], eax
cmp dword [esp + 0x58], 0
je case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
cmp dword [esp + 0x58], ecx
jge 0x514a18
mov ecx, dword [ebp]
lea eax, [esp + 0x58]
push eax
push ecx
call fcn.0051e150
add esp, 8
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
mov byte [ebp + 0x19], al
jmp 0x5149d6
mov dword [esp + 0x58], ecx
jmp case.0x512d81.12
mov esi, dword [esp + 0x230]
mov edx, dword [edi + 4]
mov esi, dword [esi + 0x30]
mov esi, dword [esi + edx*4]
xor ecx, ecx
cmp dword [esi], ecx
je 0x514a8c
cmp al, 0x7a
jne 0x514a42
mov eax, dword [esi + 0x4c]
mov byte [eax + 6], 1
lea ecx, [esp + 0x110]
push ecx
mov ecx, dword [esp + 0x60]
mov eax, dword [ecx + 0x18]
cdq
push 0
push edx
mov edx, dword [ecx + 0x14]
push eax
mov eax, dword [esi]
push 0
push edx
push eax
call fcn.0051c3f0
mov ecx, dword [esi + 0x4c]
add esp, 0x1c
test eax, eax
mov dword [esp + 0x10], eax
mov byte [ecx + 6], 0
jne case.0x512d81.12
xor ecx, ecx
cmp dword [esp + 0x110], ecx
mov byte [esi + 0x20], al
sete cl
mov dword [esi + 0x68], eax
cmp byte [edi], 0x7a
jne 0x514a98
test ecx, ecx
jmp 0x513b2d
test ecx, ecx
jne case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov eax, dword [edi + 0x10]
mov esi, dword [esp + 0x5c]
mov ebp, dword [edi + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x230]
mov ecx, dword [eax + 0x4c]
push esi
lea ebx, [ecx + edx*8]
call fcn.00510b20
mov edx, dword [esi]
mov ecx, dword [esp + 0x234]
mov eax, dword [esi + 4]
mov dword [esp + 0x100], edx
mov edx, dword [ecx + 0x30]
mov esi, dword [edx + ebp*4]
mov ebp, dword [esi]
add esp, 4
test ebp, ebp
mov dword [esp + 0x100], eax
je case.0x512d81.12
mov eax, dword [ebx + 0x14]
mov ebx, dword [ebx + 0x18]
push eax
mov dword [esp + 0x28], eax
call fcn.0050fb10
mov ecx, dword [esp + 0x28]
sub ebx, eax
lea eax, [esp + 0x70]
push eax
push 0
mov eax, ebx
cdq
push edx
push eax
push 0
push ecx
push ebp
mov dword [esi + 0x68], 0
call fcn.0051c3f0
add esp, 0x20
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
cmp dword [esp + 0x6c], eax
jge 0x514b6b
lea edx, [esp + 0x6c]
push edx
push ebp
call fcn.0051e150
add esp, 8
cmp dword [esp + 0x6c], 0
mov dword [esp + 0x10], eax
je 0x514b6b
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x6c]
push eax
push ecx
push ebx
push 0
push esi
call fcn.0050fc80
add esp, 0x14
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
cmp dword [esp + 0x6c], eax
jle 0x514ba2
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
lea edx, [esp + 0x16c]
push edx
push ebp
call fcn.0050fb70
add esp, 8
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
mov ecx, dword [esp + 0x16c]
cmp ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0x170]
jne 0x514bee
cmp edx, dword [esp + 0x100]
jne 0x514bee
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov eax, dword [esp + 0x5c]
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 4]
mov edx, dword [ecx + 0x30]
mov esi, dword [edx + eax*4]
mov eax, dword [esi]
test eax, eax
je case.0x512d81.12
mov ebp, dword [esp + 0x5c]
mov edx, dword [ebp + 4]
mov ecx, dword [ebp]
lea ebx, [esp + 0x144]
push ebx
push 0
push edx
push ecx
push 0
push 0
push eax
call fcn.0051c3f0
mov dword [esp + 0x2c], eax
mov eax, dword [ebp]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x160]
mov ecx, dword [ebp + 4]
add esp, 0x1c
test eax, eax
sete dl
mov dword [esi + 0xc], ecx
mov byte [esi + 0x19], dl
mov byte [esi + 0x1c], 0
mov dword [esi + 0x68], 0
jmp 0x513b2b
mov edi, dword [edi + 4]
mov edx, dword [esp + 0x230]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + edi*4]
mov esi, dword [eax + 0x58]
mov ecx, dword [esp + 0x1c]
mov dword [ecx], esi
mov eax, dword [eax + 0x5c]
mov dword [ecx + 4], eax
mov edx, dword [edx + 0x30]
mov eax, dword [edx + edi*4]
add dword [eax + 0x58], 1
adc dword [eax + 0x5c], 0
jmp 0x51444a
mov esi, dword [esp + 0x230]
mov ecx, dword [edi + 4]
mov edx, dword [esi + 0x30]
xor ebp, ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
mov ebx, dword [edx + ecx*4]
mov eax, dword [ebx]
cmp eax, ebp
je 0x514ec3
push eax
mov dword [esp + 0x28], ebp
call fcn.0051e3c0
and al, 3
add esp, 4
cmp al, 1
jne 0x5146ff
cmp byte [ebx + 0x1b], 0
jne 0x514df2
cmp byte [ebx + 0x1d], 0
je 0x514cf5
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x28], eax
mov ecx, dword [ebx + 0x14]
mov dword [esp + 0x2c], ecx
jmp 0x514d55
mov eax, dword [ebx]
lea edx, [esp + 0x70]
push edx
push eax
call fcn.0051c370
add esp, 8
cmp eax, ebp
mov dword [esp + 0x10], eax
jne 0x51653d
cmp dword [esp + 0x70], ebp
je 0x514d25
mov dword [esp + 0x28], 1
mov dword [esp + 0x2c], ebp
jmp 0x514d55
mov edx, dword [ebx]
lea ecx, [esp + 0x28]
push ecx
push edx
call fcn.0051e000
add esp, 8
cmp dword [esp + 0x28], 0xffffffff
jne 0x514d4c
cmp dword [esp + 0x2c], 0x7fffffff
jne 0x514d4c
mov byte [ebx + 0x1b], 1
jmp 0x514d55
add dword [esp + 0x28], 1
adc dword [esp + 0x2c], ebp
mov edi, dword [edi + 0xc]
cmp edi, ebp
je 0x514db8
mov ecx, dword [esi + 0x4c]
lea eax, [edi + edi*4]
lea esi, [ecx + eax*8]
push esi
call fcn.00510b20
mov eax, dword [esi]
mov ecx, dword [esi + 4]
add esp, 4
cmp eax, 0xffffffff
jne 0x514d84
cmp ecx, 0x7fffffff
je 0x516535
cmp byte [ebx + 0x1b], 0
jne 0x516535
mov edx, dword [esp + 0x2c]
add eax, 1
adc ecx, ebp
cmp edx, ecx
jg 0x514dab
jl 0x514da3
cmp dword [esp + 0x28], eax
jae 0x514dab
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x28]
mov dword [esi], eax
mov ecx, dword [esp + 0x2c]
mov dword [esi + 4], ecx
cmp dword [esp + 0x2c], 0x7fffffff
ja 0x514de4
jb 0x514dcb
cmp dword [esp + 0x28], 0xffffffff
jae 0x514de4
mov byte [ebx + 0x1d], 1
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
add edx, 1
adc eax, ebp
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x14], eax
jmp 0x514de8
mov byte [ebx + 0x1d], 0
cmp byte [ebx + 0x1b], 0
je 0x514eb4
mov ebp, dword [esp + 0x14]
mov eax, dword [ebp + 0x38]
mov edx, dword [ebp + 0x3c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
xor edi, edi
test edi, edi
jne 0x514e2b
mov ecx, eax
and ecx, 0xffffff
xor esi, esi
cmp ecx, eax
jne 0x514e2b
cmp esi, edx
jne 0x514e2b
add eax, 1
adc edx, esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
jmp 0x514e58
lea ecx, [esp + 0x28]
push ecx
push 8
call fcn.0052b860
mov eax, dword [esp + 0x30]
add esp, 8
cmp edi, 5
jge 0x514e54
and eax, 0xffffff
xor edx, edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
jmp 0x514e58
mov edx, dword [esp + 0x2c]
mov ecx, eax
or ecx, edx
je 0x514e89
lea ecx, [esp + 0x70]
push ecx
push 0
push edx
mov edx, dword [ebx]
push eax
push 0
push 0
push edx
call fcn.0051c3f0
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [esp + 0x44]
add esp, 0x1c
mov dword [esp + 0x24], ecx
add edi, 1
jmp 0x514e8d
mov ecx, dword [esp + 0x24]
cmp edi, 0x64
jge 0x514ea0
test ecx, ecx
jne 0x514ea0
cmp dword [esp + 0x70], ecx
je 0x514e06
test ecx, ecx
mov dword [ebp + 0x38], eax
mov dword [ebp + 0x3c], edx
jne 0x514eb4
cmp dword [esp + 0x70], ecx
je 0x516535
mov byte [ebx + 0x19], 0
mov byte [ebx + 0x20], 0
mov dword [ebx + 0x68], 0
mov eax, dword [esp + 0x1c]
mov cx, word [eax + 0x1c]
mov edx, dword [esp + 0x28]
and cx, 0xffe4
or cx, 4
mov word [eax + 0x1c], cx
mov ecx, dword [esp + 0x2c]
mov dword [eax], edx
mov dword [eax + 4], ecx
jmp case.0x512d81.12
test byte [edi + 3], 1
mov edx, dword [esp + 0x230]
mov ecx, dword [edi + 8]
mov eax, dword [edx + 0x4c]
mov ebx, dword [edx + 0x30]
lea ecx, [ecx + ecx*4]
lea esi, [eax + ecx*8]
mov ecx, dword [edi + 0xc]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*8]
mov ecx, dword [edi + 4]
mov ebp, dword [ebx + ecx*4]
mov ecx, dword [eax + 4]
mov ebx, dword [eax]
mov dword [esp + 0x10c], ecx
je 0x514f28
add dword [edx + 0x104], 1
test byte [edi + 3], 2
je 0x514f3d
mov edx, dword [eax]
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x30], edx
mov edx, dword [eax + 4]
mov dword [ecx + 0x34], edx
cmp byte [ebp + 0x1d], 0
je 0x514f58
mov ecx, dword [eax + 4]
cmp ecx, dword [ebp + 0x14]
jl 0x514f58
jg 0x514f54
mov edx, dword [eax]
cmp edx, dword [ebp + 0x10]
jb 0x514f58
mov byte [ebp + 0x1d], 0
movzx eax, word [esi + 0x1c]
test al, 1
je 0x514f68
xor ecx, ecx
mov dword [esi + 0x14], ecx
mov dword [esi + 0x18], ecx
cmp byte [ebp + 0x1e], 0
je 0x51500e
cmp byte [ebp + 0x1f], 0
jne 0x514f84
mov eax, dword [ebp + 0x38]
push eax
call fcn.0050dc90
add esp, 4
mov ecx, dword [esp + 0x10c]
mov dword [ebp + 0x40], ebx
mov dword [ebp + 0x44], ecx
mov eax, dword [esi + 0x18]
mov dword [ebp + 0x34], eax
mov ecx, dword [esi + 0x14]
cmp ecx, dword [esi + 0x24]
je 0x514fe8
cmp byte [ebp + 0x1f], 0
jne 0x514fe8
add eax, 2
push eax
call fcn.0050db80
add esp, 4
test eax, eax
mov dword [ebp + 0x38], eax
je 0x51302b
mov edx, dword [ebp + 0x34]
mov ecx, dword [esi + 0x14]
push edx
push ecx
push eax
call fcn.004be710
mov edx, dword [ebp + 0x38]
mov eax, dword [ebp + 0x34]
mov byte [edx + eax], 0
mov ecx, dword [ebp + 0x38]
mov edx, dword [ebp + 0x34]
mov byte [ecx + edx + 1], 0
add esp, 0xc
mov byte [ebp + 0x1c], 0
jmp 0x515047
cmp byte [ebp + 0x1f], 0
mov dword [ebp + 0x38], ecx
jne 0x515008
mov ax, word [esi + 0x1c]
and ax, 0xffbf
or ax, 0x100
mov word [esi + 0x1c], ax
mov dword [esi + 0x24], 0
mov byte [ebp + 0x1c], 0
jmp 0x515047
test eax, 0x800
je 0x515019
mov eax, dword [esi]
jmp 0x51501b
xor eax, eax
movzx ecx, byte [edi + 3]
mov edx, dword [esi + 0x18]
and ecx, 8
push ecx
mov ecx, dword [esp + 0x110]
push eax
mov eax, dword [esi + 0x14]
push edx
mov edx, dword [ebp]
push eax
push ecx
push ebx
push 0
push edx
call fcn.0051e600
add esp, 0x20
mov dword [esp + 0x10], eax
cmp dword [esp + 0x10], 0
mov byte [ebp + 0x19], 0
mov byte [ebp + 0x20], 0
mov dword [ebp + 0x68], 0
jne case.0x512d81.12
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xb8]
test ecx, ecx
je case.0x512d81.12
mov eax, dword [edi + 0x10]
test eax, eax
je case.0x512d81.12
mov edx, dword [esp + 0x10c]
mov ebp, dword [ebp + 4]
push edx
push ebx
push eax
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 8]
mov eax, dword [eax + 0xb4]
lea edx, [ebp + ebp*2]
mov edx, dword [esi + edx*8]
push edx
mov dl, byte [edi + 3]
and dl, 4
neg dl
sbb edx, edx
and edx, 5
add edx, 0x12
push edx
push eax
call ecx
add esp, 0x18
jmp case.0x512d81.12
mov edx, dword [esp + 0x230]
mov ebx, dword [esp + 0x14]
cmp dword [ebx + 0xb8], 0
mov ecx, dword [edi + 4]
mov eax, dword [edx + 0x30]
mov esi, dword [eax + ecx*4]
je 0x5150f3
cmp dword [edi + 0x10], 0
je 0x5150f3
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov dword [esp + 0x114], ecx
mov dword [esp + 0x118], edx
push esi
call fcn.0050f350
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
mov eax, dword [esi]
push eax
call fcn.0051e7f0
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
mov byte [esi + 0x1d], 0
mov dword [esi + 0x68], 0
jne 0x515163
mov ecx, dword [ebx + 0xb8]
test ecx, ecx
je 0x515163
mov eax, dword [edi + 0x10]
test eax, eax
je 0x515163
mov edx, dword [esp + 0x118]
mov esi, dword [esi + 4]
push edx
mov edx, dword [esp + 0x118]
push edx
mov edx, dword [ebx + 8]
push eax
lea eax, [esi + esi*2]
mov eax, dword [edx + eax*8]
mov edx, dword [ebx + 0xb4]
push eax
push 9
push edx
call ecx
add esp, 0x18
test byte [edi + 8], 1
je case.0x512d81.12
mov eax, dword [esp + 0x230]
add dword [eax + 0x104], 1
jmp case.0x512d81.12
cmp dword [edi + 4], 0
je 0x5151a1
mov eax, dword [esp + 0x230]
mov ecx, dword [eax + 0x104]
mov edx, dword [esp + 0x14]
push ecx
push edx
call fcn.0050fdb0
add esp, 8
mov eax, dword [esp + 0x230]
mov dword [eax + 0x104], 0
jmp case.0x512d81.12
mov eax, dword [edi + 8]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x230]
mov edx, dword [eax + 0x4c]
lea ebp, [edx + ecx*8]
mov ecx, dword [edi + 4]
mov edx, dword [eax + 0x30]
mov esi, dword [edx + ecx*4]
mov edi, dword [esi]
push esi
mov dword [esp + 0x20], ebp
call fcn.0050f350
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
cmp byte [esi + 0x22], al
je 0x515234
lea eax, [esp + 0x154]
push eax
push edi
call fcn.0051e000
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x50]
mov ecx, dword [esp + 0x160]
cdq
add esp, 8
cmp ecx, edx
jg 0x512ee6
mov ecx, dword [esp + 0x154]
jl 0x51522c
cmp ecx, eax
ja 0x512ee6
mov eax, ecx
mov dword [esp + 0x68], eax
jmp 0x515253
lea edx, [esp + 0x68]
push edx
push edi
call fcn.0051e090
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x1c]
add esp, 8
cmp eax, dword [ecx + 0x50]
ja 0x512ee6
push 0
push eax
push ebp
call fcn.005105f0
add esp, 0xc
test eax, eax
jne 0x51302b
mov ax, word [ebp + 0x1c]
mov edx, dword [esp + 0x68]
and ax, 0xfff0
or ax, 0x10
mov dword [ebp + 0x18], edx
mov word [ebp + 0x1c], ax
cmp byte [esi + 0x22], 0
je 0x5152a5
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x68]
push ecx
push edx
push 0
push edi
call fcn.005199f0
mov dword [esp + 0x20], eax
add esp, 0x10
mov byte [ebp + 0x1f], 1
jmp case.0x512d81.12
mov eax, dword [ebp + 0x14]
mov ecx, dword [esp + 0x68]
push eax
push ecx
push 0
push edi
call fcn.0051e110
mov dword [esp + 0x20], eax
add esp, 0x10
mov byte [ebp + 0x1f], 1
jmp case.0x512d81.12
mov eax, dword [esp + 0x230]
mov edx, dword [edi + 4]
mov ecx, dword [eax + 0x30]
mov esi, dword [ecx + edx*4]
push esi
call fcn.0050f350
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
cmp byte [esi + 0x19], al
je 0x515306
mov edx, dword [esi + 8]
mov dword [esp + 0x90], edx
mov eax, dword [esi + 0xc]
mov dword [esp + 0x94], eax
jmp 0x51533f
cmp byte [esi + 0x1e], 0
je 0x515322
mov ecx, dword [esi + 0x40]
mov dword [esp + 0x90], ecx
mov edx, dword [esi + 0x44]
mov dword [esp + 0x94], edx
jmp 0x51533f
cmp byte [esi + 0x1c], 0
jne case.0x512d81.12
mov ecx, dword [esi]
lea eax, [esp + 0x90]
push eax
push ecx
call fcn.0051e000
add esp, 8
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov dword [eax], edx
mov dx, word [eax + 0x1c]
and dx, 0xffe4
or dx, 4
mov dword [eax + 4], ecx
mov word [eax + 0x1c], dx
jmp case.0x512d81.12
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x230]
mov edx, dword [ecx + 0x30]
mov eax, dword [edx + eax*4]
mov byte [eax + 0x1c], 1
mov byte [eax + 0x19], 0
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 4]
mov edx, dword [ecx + 0x30]
mov esi, dword [edx + eax*4]
mov eax, dword [esi]
lea ecx, [esp + 0x98]
push ecx
push eax
call fcn.0051c370
mov dl, byte [esp + 0xa0]
add esp, 8
mov byte [esi + 0x1c], dl
mov byte [esi + 0x20], 0
mov dword [esi + 0x68], 0
cmp dword [esp + 0x98], 0
mov dword [esp + 0x10], eax
je case.0x512d81.12
mov edi, dword [edi + 8]
test edi, edi
jle case.0x512d81.12
add edi, 0xffffffff
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 4]
mov edx, dword [ecx + 0x30]
mov esi, dword [edx + eax*4]
mov eax, dword [esi]
test eax, eax
je 0x515439
lea ecx, [esp + 0x74]
push ecx
push eax
call fcn.0051c330
add esp, 8
cmp dword [esp + 0x74], 0
mov byte [esi + 0x20], 0
sete dl
mov byte [esi + 0x1a], dl
mov dword [esi + 0x68], 0
mov dword [esp + 0x10], eax
mov al, byte [esp + 0x74]
mov byte [esi + 0x1c], al
cmp dword [esp + 0x74], 0
jmp 0x513b2d
mov dword [esp + 0x74], 1
mov al, byte [esp + 0x74]
mov byte [esi + 0x1c], al
cmp dword [esp + 0x74], 0
jmp 0x513b2d
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0xd8], 0
jne 0x516582
mov eax, dword [esp + 0x230]
mov edx, dword [edi + 4]
mov ecx, dword [eax + 0x30]
mov esi, dword [ecx + edx*4]
test esi, esi
je case.0x512d81.12
cmp byte [esi + 0x1c], 0
mov eax, dword [esi]
jne 0x5154d7
mov dword [esp + 0x84], 1
cmp byte [edi], 0x67
jne 0x5154a3
lea edx, [esp + 0x84]
push edx
push eax
call fcn.0051e150
jmp 0x5154b1
lea ecx, [esp + 0x84]
push ecx
push eax
call fcn.0051e270
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x8c]
add esp, 8
test eax, eax
mov byte [esi + 0x1c], al
mov dword [esi + 0x68], 0
jne 0x5154d7
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
mov byte [esi + 0x19], 0
jmp case.0x512d81.12
mov eax, dword [esp + 0x230]
mov edx, dword [edi + 4]
mov ecx, dword [eax + 0x30]
mov esi, dword [ecx + edx*4]
mov ebx, dword [esi]
test ebx, ebx
je case.0x512d81.12
mov ecx, dword [esp + 0x54]
test word [ecx + 0x1c], 0x800
je 0x51551f
push ecx
call fcn.005106c0
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov ecx, dword [esp + 0x54]
mov edx, dword [edi + 0xc]
mov eax, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x14]
push edx
push 0
push 0
push 0x55462d
cdq
push edx
push eax
push ecx
push ebx
call fcn.0051e600
add esp, 0x20
mov dword [esp + 0x10], eax
mov dword [esi + 0x68], 0
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 4]
mov edx, dword [ecx + 0x30]
mov ebx, dword [edx + eax*4]
mov esi, dword [ebx]
test esi, esi
je case.0x512d81.12
mov eax, dword [ebx + 0x4c]
mov cx, word [edi + 0xc]
mov edi, dword [edi + 8]
mov dword [esp + 0x138], eax
mov eax, dword [esp + 0x230]
mov word [esp + 0x13c], cx
mov ecx, dword [eax + 0x4c]
lea eax, [esp + 0x11c]
push eax
push 0
push 0
lea edx, [edi + edi*4]
lea edx, [ecx + edx*8]
push 0
lea ecx, [esp + 0x148]
push ecx
push 0
push esi
mov byte [esp + 0x15a], 0
mov byte [esp + 0x15b], 0
mov dword [esp + 0x15c], edx
call fcn.0051c3f0
add esp, 0x1c
test eax, eax
mov dword [esp + 0x10], eax
jne 0x5155e8
cmp dword [esp + 0x11c], eax
jne 0x5155e8
push esi
call fcn.0051e7f0
add esp, 4
mov dword [esp + 0x10], eax
mov dword [ebx + 0x68], 0
jmp case.0x512d81.12
mov eax, dword [esp + 0x230]
mov ecx, dword [eax + 0x30]
mov edx, dword [edi + 4]
mov eax, dword [ecx + edx*4]
mov ecx, dword [eax]
test ecx, ecx
je case.0x512d81.12
cmp byte [eax + 0x1c], 0
jne case.0x512d81.12
lea edx, [esp + 0x15c]
push edx
push ecx
call fcn.0050fb70
add esp, 8
test eax, eax
mov dword [esp + 0x10], eax
jne 0x51653d
mov eax, dword [esp + 0x1c]
mov cx, word [eax + 0x1c]
mov edx, dword [esp + 0x15c]
and cx, 0xffe4
or cx, 4
mov word [eax + 0x1c], cx
mov ecx, dword [esp + 0x160]
mov dword [eax], edx
mov dword [eax + 4], ecx
jmp case.0x512d81.12
mov eax, dword [esp + 0x230]
mov edx, dword [edi + 4]
mov ecx, dword [eax + 0x30]
mov esi, dword [ecx + edx*4]
cmp dword [esi], 0
je case.0x512d81.12
mov edx, dword [esi + 0x4c]
mov dword [esp + 0x148], edx
mov ax, word [edi + 0x10]
mov edx, dword [esp + 0x230]
mov word [esp + 0x14c], ax
mov byte [esp + 0x14e], 0
mov byte [esp + 0x14f], 0
mov eax, dword [edi + 0xc]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x4c]
mov edx, dword [esi + 0x48]
lea ecx, [eax + ecx*8]
mov dword [esp + 0x150], ecx
mov al, byte [edi + 3]
lea ecx, [esp + 0x78]
push ecx
push 0
mov byte [edx], al
push 0
lea edx, [esp + 0x154]
push edx
push esi
call fcn.0050fc80
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x48]
mov byte [eax], 0
mov eax, dword [esp + 0x8c]
add esp, 0x14
cmp byte [edi], 0x28
jne 0x5156f7
neg eax
jmp 0x5156fa
add eax, 1
test eax, eax
mov dword [esp + 0x78], eax
jle case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x8c]
xor edx, edx
test eax, eax
je 0x515767
cmp dword [eax + 0x44], 0xbdf20da3
jne 0x515740
cmp byte [eax + 0x101], 2
jae 0x515740
cmp dword [eax + 0x70], 0
jl 0x515740
add edx, 1
mov eax, dword [eax + 8]
test eax, eax
jne 0x515725
cmp edx, 1
jle 0x515767
mov ecx, dword [esp + 0x230]
mov dword [esp + 0x10], 6
mov dword [ecx + 0x7c], 2
jmp case.0x512d81.12
mov esi, dword [edi + 0xc]
mov eax, dword [edi + 4]
mov ecx, dword [ecx + 8]
lea esi, [esi + esi*2]
add esi, esi
lea edx, [esp + 0xf8]
push edx
add esi, esi
add esi, esi
mov edx, dword [ecx + esi + 4]
push eax
push edx
call fcn.0051ed40
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x104]
mov ebx, eax
mov ax, word [ecx + 0x1c]
and ax, 0xffe4
or ax, 4
mov word [ecx + 0x1c], ax
mov eax, ebp
cdq
add esp, 0xc
test ebx, ebx
mov dword [esp + 0x10], ebx
mov dword [ecx], eax
mov dword [ecx + 4], edx
jne case.0x512d81.12
test ebp, ebp
je case.0x512d81.12
mov ecx, dword [edi + 4]
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
push ecx
add eax, esi
push ebp
push eax
call fcn.005219b0
add esp, 0xc
jmp case.0x512d81.12
mov ecx, dword [edi + 4]
mov edi, dword [edi + 8]
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [eax + 8]
lea edx, [edi + edi*2]
mov edx, dword [ecx + edx*8 + 4]
push edx
call fcn.0051ea70
mov dword [esp + 0x18], eax
jmp 0x516393
mov edi, dword [edi + 4]
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 8]
sub al, 0x32
neg al
lea ecx, [edi + edi*2]
lea ecx, [edx + ecx*8]
mov ecx, dword [ecx + 4]
sbb eax, eax
and eax, 0xfffffffd
add eax, 5
push eax
lea eax, [esp + 0x138]
push eax
push ecx
call fcn.0051d8c0
add esp, 0xc
test eax, eax
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov eax, dword [esp + 0x134]
mov ecx, dword [esp + 0x1c]
cdq
mov dword [ecx + 4], edx
mov dx, word [ecx + 0x1c]
and dx, 0xffe4
or dx, 4
mov dword [ecx], eax
mov word [ecx + 0x1c], dx
jmp case.0x512d81.12
cmp dword [edi + 8], 0
mov eax, dword [edi + 4]
jne 0x51588d
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 8]
lea ecx, [eax + eax*2]
mov ecx, dword [edx + ecx*8 + 0x14]
test byte [ecx + 0x5a], 1
je case.0x512d81.12
cmp eax, 1
mov ecx, str.sqlite_temp_master
je 0x51589c
mov ecx, str.sqlite_master
mov edx, dword [esp + 0x230]
mov ebp, dword [esp + 0x14]
add edx, 0xf4
mov dword [esp + 0x1cc], edx
mov edx, dword [edi + 0x10]
push edx
push ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x1d0], eax
lea eax, [eax + eax*2]
mov dword [esp + 0x1cc], ebp
mov edx, dword [ecx + eax*8]
push edx
push str.SELECT_name__rootpage__sql_FROM__q._s_WHERE__s
push ebp
call fcn.0050d8d0
mov esi, eax
add esp, 0x14
test esi, esi
je 0x51302b
push 0
lea eax, [esp + 0x1c8]
push eax
push fcn.0050ba90
push esi
push ebp
mov byte [ebp + 0x80], 1
call fcn.0050b740
mov edi, eax
add esp, 0x14
cmp edi, 4
mov dword [esp + 0x10], eax
jne 0x51591f
mov edi, dword [esp + 0x1d0]
mov dword [esp + 0x10], edi
push esi
call fcn.0050dc90
add esp, 4
cmp edi, 7
mov byte [ebp + 0x80], 0
je 0x51302b
jmp case.0x512d81.12
mov edi, dword [edi + 4]
mov ecx, dword [esp + 0x14]
push edi
push ecx
call fcn.0052c020
mov dword [esp + 0x18], eax
jmp 0x516393
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x14]
push edx
push eax
push ecx
call fcn.00520b20
add esp, 0xc
jmp case.0x512d81.12
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x14]
push edx
push eax
push ecx
call fcn.005207d0
add esp, 0xc
jmp case.0x512d81.12
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x14]
push edx
push eax
push ecx
call fcn.0052d5c0
add esp, 0xc
jmp case.0x512d81.12
mov ebx, dword [edi + 8]
lea edx, [ebx*4 + 4]
push edx
call fcn.0050db80
add esp, 4
test eax, eax
mov dword [esp + 0x34], eax
je 0x51302b
mov eax, dword [esp + 0x230]
mov ecx, dword [edi + 0xc]
mov eax, dword [eax + 0x4c]
lea ecx, [ecx + ecx*4]
lea ebp, [eax + ecx*8]
mov ecx, dword [edi + 4]
lea edx, [ecx + ecx*4]
lea eax, [eax + edx*8]
xor esi, esi
test ebx, ebx
mov dword [esp + 0x18], eax
jle 0x515a10
mov dword [esp + 0x38], eax
jmp 0x5159f0
mov eax, dword [esp + 0x38]
push eax
call fcn.005109d0
mov ecx, dword [esp + 0x38]
add dword [esp + 0x3c], 0x28
mov dword [ecx + esi*4], eax
add esi, 1
add esp, 4
cmp esi, ebx
jl 0x5159f0
mov eax, dword [esp + 0x34]
mov dword [eax + esi*4], 0
mov ecx, dword [ebp]
lea edx, [esp + 0xa8]
push edx
push ecx
push ebx
push eax
movzx eax, byte [edi + 3]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + edx*8 + 4]
push edx
call fcn.0051da30
mov esi, eax
mov eax, dword [esp + 0xbc]
cdq
sub dword [ebp], eax
mov eax, dword [esp + 0x2c]
push eax
sbb dword [ebp + 4], edx
call fcn.00510c00
add esp, 0x18
cmp dword [esp + 0xa8], 0
je 0x515a7f
mov ecx, dword [esp + 0x18]
push fcn.0050dc90
push 1
push 0xffffffffffffffff
push esi
push ecx
call fcn.00510dd0
add esp, 0x14
movzx edx, byte [esp + 0x40]
mov eax, dword [esp + 0x18]
push edx
push eax
call fcn.005105c0
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.0050dc90
add esp, 0xc
jmp case.0x512d81.12
mov edx, dword [esp + 0x18]
push edx
call fcn.005109d0
push edx
push eax
mov eax, dword [esp + 0x23c]
add eax, 0x58
push eax
call fcn.0052cc60
add esp, 0x10
cmp eax, 7
je 0x51302b
jmp case.0x512d81.12
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0xd8], 0
jne 0x516582
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x230]
lea edx, [eax + eax*4]
mov eax, dword [ecx + 0x4c]
lea eax, [eax + edx*8]
mov dx, word [eax + 0x1c]
and dx, 0xffe4
push eax
add ecx, 0x58
or dx, 4
push ecx
mov dword [esp + 0x24], eax
mov word [eax + 0x1c], dx
call fcn.0052cd10
add esp, 8
cmp eax, 0x65
jne case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov edi, dword [esp + 0x230]
mov esi, dword [edi + 0x64]
cmp esi, dword [edi + 0x68]
mov ebx, dword [esp + 0x14]
lea eax, [esi + 1]
mov dword [edi + 0x64], eax
jl 0x515b6b
mov ecx, dword [edi + 0x6c]
mov dword [edi + 0x68], eax
lea eax, [esi + esi*2 + 3]
add eax, eax
add eax, eax
add eax, eax
push eax
push ecx
push ebx
call fcn.00511780
add esp, 0xc
test eax, eax
mov dword [edi + 0x6c], eax
je 0x51302b
mov eax, dword [edi + 0x6c]
mov ecx, dword [ebx + 0x30]
lea edx, [esi + esi*2]
lea eax, [eax + edx*8]
mov dword [eax], ecx
mov edx, dword [ebx + 0x34]
mov dword [eax + 4], edx
mov ecx, dword [edi + 0x104]
mov dword [eax + 8], ecx
mov edx, dword [edi + 0x58]
lea ecx, [edi + 0x58]
mov dword [eax + 0xc], edx
mov edx, dword [ecx + 4]
mov dword [eax + 0x10], edx
mov edx, dword [ecx + 8]
push ecx
mov dword [eax + 0x14], edx
call fcn.0052cc50
add esp, 4
jmp case.0x512d81.12
mov edi, dword [esp + 0x230]
add dword [edi + 0x64], 0xffffffff
mov eax, dword [edi + 0x64]
mov ecx, dword [edi + 0x6c]
lea eax, [eax + eax*2]
mov edx, dword [ecx + eax*8]
lea esi, [ecx + eax*8]
mov eax, dword [esp + 0x14]
mov dword [eax + 0x30], edx
mov ecx, dword [esi + 4]
mov dword [eax + 0x34], ecx
mov edx, dword [esi + 8]
mov dword [edi + 0x104], edx
add edi, 0x58
push edi
call fcn.0052cd70
mov eax, dword [esi + 0xc]
mov dword [edi], eax
mov ecx, dword [esi + 0x10]
mov dword [edi + 4], ecx
mov edx, dword [esi + 0x14]
add esp, 4
mov dword [edi + 8], edx
jmp case.0x512d81.12
mov edi, dword [esp + 0x18]
push edi
call fcn.00510b20
mov esi, dword [esp + 0x58]
push esi
call fcn.00510b20
mov eax, dword [esi]
mov esi, dword [esi + 4]
mov ecx, dword [edi + 4]
add esp, 8
cmp ecx, esi
jg case.0x512d81.12
jl 0x515c32
mov edx, edi
mov ecx, dword [edx]
cmp ecx, eax
jae case.0x512d81.12
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov dword [ecx + 4], esi
jmp case.0x512d81.12
mov edx, dword [esp + 0x18]
cmp dword [edx + 4], 0
jl case.0x512d81.12
jg 0x513b33
mov eax, edx
cmp dword [eax], 0
jbe case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 4], 0
jg case.0x512d81.12
jl 0x513b33
mov edx, ecx
cmp dword [edx], 0
jae case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
or ecx, dword [eax + 4]
jne case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov eax, dword [edi + 8]
mov ebp, dword [esp + 0x230]
movzx esi, byte [edi + 3]
mov ebx, dword [ebp + 0x24]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 0x4c]
lea ecx, [eax + edx*8]
xor edx, edx
test esi, esi
jle 0x515cf2
lea ebx, [ebx]
mov dword [ebx + edx*4], ecx
call fcn.00512920
add edx, 1
add ecx, 0x28
cmp edx, esi
jl 0x515ce0
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x10]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 0x4c]
mov dword [esp + 0xac], ecx
lea eax, [eax + edx*8]
mov dword [esp + 0xdc], eax
mov ecx, 1
add dword [eax + 0x18], ecx
xor eax, eax
mov word [esp + 0xd0], cx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xc8], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xc4], ecx
cmp byte [eax + 3], 0
je 0x515d66
mov edx, dword [edi - 4]
mov dword [esp + 0xe4], edx
mov edx, dword [eax + 0x14]
push ebx
lea ecx, [esp + 0xb0]
push esi
push ecx
call edx
add esp, 0xc
cmp dword [esp + 0xe0], 0
je 0x515daf
lea eax, [esp + 0xb4]
push 0
push eax
call fcn.00509000
add esp, 4
push eax
add ebp, 0xf4
push ebp
call fcn.005118f0
mov ecx, dword [esp + 0xec]
add esp, 0xc
mov dword [esp + 0x10], ecx
lea edx, [esp + 0xb4]
push edx
call fcn.00510910
add esp, 4
jmp case.0x512d81.12
mov eax, dword [edi + 4]
mov ebx, dword [esp + 0x230]
mov ecx, dword [ebx + 0x4c]
mov edx, dword [edi + 0x10]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
push edx
push esi
call fcn.00510850
add esp, 8
cmp eax, 1
mov dword [esp + 0x10], eax
jne 0x515e08
push 0
push esi
call fcn.00509000
add esp, 4
push eax
add ebx, 0xf4
push ebx
call fcn.005118f0
add esp, 0xc
movzx eax, byte [esp + 0x40]
push eax
push esi
call fcn.005105c0
push esi
call fcn.00510cf0
add esp, 0xc
test eax, eax
jne 0x512ee6
jmp case.0x512d81.12
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x230]
push ecx
add edx, 0xf4
push edx
call fcn.0052cef0
mov dword [esp + 0x18], eax
jmp 0x516393
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 8]
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*8 + 4]
push eax
call fcn.0051bce0
add esp, 4
cmp eax, 0x65
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], 0
jmp case.0x512d81.12
cmp dword [edi + 4], 0
jne 0x515ea1
mov eax, dword [esp + 0x14]
push eax
call fcn.0050fdd0
add esp, 4
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov byte [ecx + 0xff], 1
jmp case.0x512d81.12
mov dl, byte [edi + 0xc]
mov eax, dword [edi + 4]
mov byte [esp + 0x120], dl
mov ecx, dword [esp + 0x120]
mov edx, dword [edi + 8]
push ecx
mov ecx, dword [esp + 0x18]
push edx
mov edx, dword [ecx + 8]
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*8 + 4]
push eax
call fcn.0051b9f0
add esp, 0xc
cmp eax, 6
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov ecx, dword [edi + 0x10]
mov edx, dword [esp + 0x230]
push 0
push ecx
add edx, 0xf4
push str.database_table_is_locked:
push edx
call fcn.005118f0
add esp, 0x10
jmp case.0x512d81.12
mov eax, dword [edi + 0x10]
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.00520040
mov dword [esp + 0x18], eax
jmp 0x516393
mov edx, dword [esp + 0x230]
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 4]
add edx, 0xf4
push edx
mov edx, dword [esp + 0x18]
push eax
push ecx
push edx
call fcn.0051fca0
add esp, 0x10
mov dword [esp + 0x10], eax
jmp case.0x512d81.12
mov esi, dword [esp + 0x230]
mov edx, dword [esp + 0x14]
mov byte [esi + 0x101], 2
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 4]
push eax
push ecx
push edx
call fcn.0051fe60
add esp, 0xc
mov dword [esp + 0x10], eax
mov byte [esi + 0x101], 0
jmp case.0x512d81.12
mov esi, dword [edi + 0x10]
mov dword [esp + 0x30], 0
mov ebx, dword [esi]
mov ecx, dword [ebx + 0x18]
lea eax, [esp + 0x30]
push eax
push esi
call ecx
add esp, 8
test eax, eax
mov dword [esp + 0x10], eax
jne case.0x512d81.12
mov edx, dword [esp + 0x30]
push eax
mov dword [edx], esi
mov eax, dword [edi + 4]
push 0xffffffffffffffff
push eax
mov eax, dword [esp + 0x23c]
lea ecx, [edi - 0x14]
call fcn.00512970
mov ecx, dword [esp + 0x3c]
add esp, 0xc
test eax, eax
je 0x515fee
mov dword [eax + 0x60], ecx
mov edx, dword [esp + 0x30]
mov ecx, dword [edx]
mov edx, dword [ecx]
mov dword [eax + 0x64], edx
jmp case.0x512d81.12
mov eax, dword [esp + 0x14]
mov byte [eax + 0x1e], 1
mov edx, dword [ebx + 0x1c]
push ecx
call edx
add esp, 4
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 0xc]
mov edx, dword [ecx + 0x4c]
mov esi, dword [ecx + 0x30]
mov ebp, dword [ecx + 0x24]
lea eax, [eax + eax*4]
lea eax, [edx + eax*8]
mov edx, dword [edi + 4]
mov ebx, dword [esi + edx*4]
mov edx, dword [ebx + 0x60]
mov edx, dword [edx]
mov edx, dword [edx]
mov esi, dword [eax + 0x28]
mov dword [esp + 0x24], edx
mov edx, dword [eax]
mov dword [esp + 0x4c], edx
xor edx, edx
test esi, esi
jle 0x516053
lea ecx, [eax + 0x50]
mov dword [ebp + edx*4], ecx
call fcn.00512920
add edx, 1
add ecx, 0x28
cmp edx, esi
jl 0x516040
mov eax, dword [esp + 0x230]
mov edx, dword [esp + 0x4c]
push ebp
mov byte [eax + 0x101], 1
mov ecx, dword [edi + 0x10]
mov eax, dword [ebx + 0x60]
push esi
push ecx
mov ecx, dword [esp + 0x30]
push edx
mov edx, dword [ecx + 0x20]
push eax
call edx
mov ecx, dword [esp + 0x244]
add esp, 0x14
test eax, eax
mov dword [esp + 0x10], eax
mov byte [ecx + 0x101], 0
jne 0x5160b0
mov edx, dword [ebx + 0x60]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x28]
push edx
call ecx
add esp, 4
test eax, eax
je 0x5160b0
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
mov byte [ebx + 0x1c], 0
jmp case.0x512d81.12
mov eax, dword [esp + 0x230]
mov edx, dword [edi + 4]
mov ecx, dword [eax + 0x30]
mov eax, dword [ecx + edx*4]
cmp byte [eax + 0x1c], 0
jne case.0x512d81.12
mov eax, dword [eax + 0x60]
mov edx, dword [eax]
mov ecx, dword [edx]
lea edx, [esp + 0x174]
push edx
push eax
mov eax, dword [ecx + 0x30]
call eax
mov edx, dword [esp + 0x17c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
mov cx, word [eax + 0x1c]
and cx, 0xffe4
add esp, 8
or cx, 4
mov word [eax + 0x1c], cx
mov ecx, dword [esp + 0x178]
mov dword [eax], edx
mov dword [eax + 4], ecx
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov edx, dword [edi + 4]
mov eax, dword [ecx + 0x30]
mov ebp, dword [eax + edx*4]
cmp byte [ebp + 0x1c], 0
mov eax, dword [edi + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [ecx + 0x4c]
lea esi, [eax + edx*8]
je 0x51614c
push esi
call fcn.00510c00
add esp, 4
jmp case.0x512d81.12
mov ecx, dword [ebp + 0x60]
mov edx, dword [ecx]
mov ebx, dword [edx]
push 0x40
lea eax, [esp + 0xb0]
push 0
push eax
call fcn.004b7bc0
lea ecx, [esp + 0xc0]
push esi
push ecx
call fcn.00510da0
mov edx, dword [esp + 0xe4]
mov eax, dword [edi + 8]
and edx, 0xffe1
or edx, 1
push eax
mov word [esp + 0xe8], dx
mov edx, dword [ebp + 0x60]
mov eax, dword [ebx + 0x2c]
lea ecx, [esp + 0xc4]
push ecx
push edx
call eax
movzx ecx, byte [esp + 0x60]
push ecx
lea edx, [esp + 0xd8]
push edx
mov dword [esp + 0x38], eax
call fcn.005105c0
lea eax, [esp + 0xdc]
push eax
push esi
call fcn.00510da0
push esi
call fcn.00510cf0
add esp, 0x34
test eax, eax
jne 0x512ee6
jmp case.0x512d81.12
mov edx, dword [esp + 0x230]
mov ecx, dword [edi + 4]
mov eax, dword [edx + 0x30]
mov esi, dword [eax + ecx*4]
cmp byte [esi + 0x1c], 0
jne case.0x512d81.12
mov ecx, dword [esi + 0x60]
mov edx, dword [ecx]
mov ebx, dword [edx]
mov ebp, dword [esp + 0x230]
mov byte [ebp + 0x101], 1
mov eax, dword [esi + 0x60]
mov ecx, dword [ebx + 0x24]
push eax
call ecx
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
mov byte [ebp + 0x101], 0
jne 0x513b33
mov edx, dword [esi + 0x60]
mov eax, dword [ebx + 0x28]
push edx
call eax
add esp, 4
test eax, eax
jne case.0x512d81.12
mov edi, dword [edi + 8]
sub edi, 1
mov dword [esp + 0x20], edi
jmp case.0x512d81.12
mov esi, dword [edi + 0x10]
mov edi, dword [edi + 4]
mov edx, dword [esp + 0x230]
mov eax, dword [edx + 0x4c]
lea ecx, [edi + edi*4]
test byte [eax + ecx*8 + 0x1c], 0x12
lea edi, [eax + ecx*8]
jne 0x51627d
movzx ecx, bl
push ecx
push edi
call fcn.00510770
add esp, 8
test eax, eax
jne 0x51302b
push esi
call fcn.0051f460
mov eax, dword [edi + 0x14]
mov edx, dword [esi]
mov ecx, dword [edx + 0x4c]
push eax
push esi
call ecx
mov edx, dword [esp + 0x20]
push esi
push edx
mov dword [esp + 0x24], eax
call fcn.0051f470
add esp, 0x14
jmp case.0x512d81.12
mov ebx, dword [edi + 0x10]
mov eax, dword [ebx]
cmp dword [eax + 0x34], 0
mov esi, dword [edi + 8]
mov dword [esp + 0x4c], eax
jne 0x5162e1
mov eax, dword [esp + 0x230]
push 0
add eax, 0xf4
push str.read_only_table
push eax
call fcn.005118f0
add esp, 0xc
mov dword [esp + 0x10], 1
jmp case.0x512d81.12
mov ecx, dword [esp + 0x230]
mov eax, dword [edi + 0xc]
mov ebp, dword [ecx + 0x24]
lea edx, [eax + eax*4]
mov eax, dword [ecx + 0x4c]
lea ecx, [eax + edx*8]
xor edx, edx
test esi, esi
jle 0x516313
lea ecx, [ecx]
call fcn.00512920
mov dword [ebp + edx*4], ecx
add edx, 1
add ecx, 0x28
cmp edx, esi
jl 0x516300
push ebx
call fcn.0051f460
mov edx, dword [esp + 0x50]
mov eax, dword [edx + 0x34]
lea ecx, [esp + 0x180]
push ecx
push ebp
push esi
push ebx
call eax
mov esi, dword [esp + 0x28]
push ebx
push esi
mov dword [esp + 0x2c], eax
call fcn.0051f470
add esp, 0x1c
cmp dword [edi + 4], 0
je 0x516360
cmp dword [esp + 0x10], 0
jne 0x516360
mov ecx, dword [esp + 0x17c]
mov edx, dword [esp + 0x180]
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], edx
mov eax, dword [esp + 0x230]
add dword [eax + 0x104], 1
jmp case.0x512d81.12
mov edi, dword [edi + 0x10]
test edi, edi
je case.0x512d81.12
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x94]
test eax, eax
je case.0x512d81.12
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x98]
push edi
push edx
call eax
add esp, 8
add dword [esp + 0x20], 1
cmp dword [esp + 0x10], 0
je 0x512c60
mov ebp, dword [esp + 0x230]
mov esi, dword [esp + 0x10]
jmp 0x513055
mov esi, 9
jmp 0x513055
mov eax, dword [edi + 4]
mov ebx, dword [esp + 0x230]
mov ecx, dword [esp + 0x20]
mov dword [ebx + 0x74], eax
mov dword [ebx + 0x70], ecx
mov edx, dword [edi + 8]
mov dword [ebx + 0x7c], edx
mov edi, dword [edi + 0x10]
test edi, edi
je 0x5163f3
push 0
lea eax, [ebx + 0xf4]
push edi
push eax
call fcn.005118f0
add esp, 0xc
push ebx
call fcn.00510010
mov esi, 5
add esp, 4
cmp eax, esi
je 0x51652d
mov esi, dword [ebx + 0x74]
neg esi
sbb esi, esi
and esi, 0xffffff9c
add esi, 0x65
jmp 0x513066
mov esi, dword [esp + 0x230]
mov ecx, dword [esi + 0x54]
add ecx, 2
or ecx, 1
mov dword [esi + 0x54], ecx
mov eax, dword [edi + 4]
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x4c]
lea ebx, [eax + edx*8]
xor ebp, ebp
mov dword [esi + 0xf8], ebx
cmp dword [edi + 8], ebp
jle 0x516462
push ebx
call fcn.00510720
add esp, 4
mov ecx, ebx
call fcn.00512920
add ebp, 1
add ebx, 0x28
cmp ebp, dword [edi + 8]
jl 0x516447
mov ecx, dword [esp + 0x14]
cmp byte [ecx + 0x1e], 0
jne 0x51302b
add dword [esi + 0x50], 1
mov edx, dword [esp + 0x20]
add edx, 1
mov dword [esi + 0x70], edx
mov esi, 0x64
jmp 0x513066
lea eax, [esp + 0x18c]
push eax
call fcn.00510910
add esp, 4
jmp 0x51302b
mov dword [esp + 0x10], 0x14
jmp 0x51653d
cmp dword [edi + 8], 0
je 0x5164d6
push esi
call fcn.0050a4a0
mov edi, dword [esp + 0x234]
add esp, 4
mov byte [esi + 0x1c], 1
mov esi, dword [edi + 0x74]
neg esi
sbb esi, esi
and esi, 0xffffff9c
add esi, 0x65
jmp 0x513066
mov edi, dword [esp + 0x230]
push edi
mov byte [esi + 0x1c], bl
call fcn.00510010
add esp, 4
cmp eax, 5
jne 0x5164c4
mov ecx, dword [esp + 0x20]
mov dl, 1
sub dl, bl
mov dword [edi + 0x70], ecx
mov byte [esi + 0x1c], dl
mov esi, eax
mov dword [edi + 0x74], esi
jmp 0x513066
mov eax, dword [esp + 0x230]
mov ecx, dword [esp + 0x20]
mov esi, 5
mov dword [eax + 0x70], ecx
mov dword [eax + 0x74], esi
jmp 0x513066
mov edx, dword [esp + 0x20]
mov dword [ebx + 0x70], edx
mov esi, 5
mov dword [ebx + 0x74], esi
jmp 0x513066
mov dword [esp + 0x10], 0xd
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x1e], 0
je 0x51654f
mov dword [esp + 0x10], 7
mov ecx, dword [esp + 0x10]
push 0
push ecx
call fcn.0050a560
mov edx, dword [esp + 0x238]
add esp, 4
push eax
add edx, 0xf4
push edx
call fcn.005118f0
mov ebp, dword [esp + 0x23c]
mov esi, dword [esp + 0x1c]
jmp 0x513052
mov ebp, dword [esp + 0x230]
xor edi, edi
mov esi, 9
push edi
push esi
mov dword [ebp + 0x74], esi
call fcn.0050a560
add esp, 4
push eax
lea eax, [ebp + 0xf4]
push eax
call fcn.005118f0
jmp 0x513052