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

Disassembly:
sub esp, 0x2e8
mov eax, dword [0x59a024]
xor eax, esp
mov dword [esp + 0x2e4], eax
push ebx
mov ebx, dword [esp + 0x2f0]
mov ecx, dword [ebx + 8]
push ebp
mov ebp, dword [ebx + 4]
push esi
mov esi, dword [ebx]
mov al, byte [esi + 0x3e]
mov edx, dword [esi + 0x20]
push edi
xor edi, edi
mov byte [esp + 0x4f], al
mov eax, dword [esi + 0x24]
push ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], esi
mov byte [esp + 0x57], 0
mov dword [esp + 0xc4], edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x9c], edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xb4], edi
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], eax
call fcn.004d0000
add esp, 4
cmp dword [ebx + 0x50], 7
je 0x52a412
mov dword [ebx + 0x50], edi
mov dword [ebx + 0x88], edi
mov dword [ebx + 0x8c], edi
mov dword [ebx + 0x14], edi
mov ecx, dword [esi + 0xf0]
mov dword [esi + 0x1c4], edi
test ecx, ecx
jne 0x52a433
cmp dword [esi + 0x124], edi
je 0x525b4a
mov ecx, dword [esi + 0x12c]
mov eax, dword [ebx + 0x7c]
xor edx, edx
div ecx
sub ecx, edx
mov dword [esp + 0x98], ecx
mov eax, dword [ebx + 0x4c]
lea edx, [eax + eax*4]
mov eax, ebp
lea ebp, [eax + edx*4]
cmp byte [esi + 0x41], 0
jne 0x52a412
mov cl, byte [ebp]
inc dword [esp + 0x68]
movzx eax, cl
lea edx, [eax - 1]
cmp edx, 0x9e
ja case.0x525b78.63
jmp dword [edx*4 + 0x52a534]
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
lea ecx, [edx + ecx*8]
mov eax, 4
mov word [ecx + 8], ax
mov edx, ebp
sub edx, dword [esp + 0x48]
mov eax, 0x66666667
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x52a1ff
mov ebp, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [ebp + ebp*4]
lea eax, [edx + ecx*8]
mov ecx, dword [eax]
mov edx, dword [esp + 0x48]
lea ecx, [ecx + ecx*4]
lea ebp, [edx + ecx*4]
mov ecx, 0x80
mov word [eax + 8], cx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea ecx, [eax + edx*8]
mov eax, dword [ebp + 0xc]
dec eax
cdq
mov dword [ecx + 4], edx
mov edx, 4
mov dword [ecx], eax
mov word [ecx + 8], dx
cmp dword [ebp + 8], 0
jne 0x52a1ff
jmp case.0x525b78.63
mov ebp, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x48]
lea eax, [ebp + ebp*4]
lea eax, [ecx + eax*8]
mov ecx, dword [eax]
lea ecx, [ecx + ecx*4]
mov ecx, dword [edx + ecx*4 + 8]
lea ecx, [ecx + ecx*4]
lea ebp, [edx + ecx*4 - 0x14]
mov edx, 0x80
mov word [eax + 8], dx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x48]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
mov esi, dword [ecx]
mov edx, 4
sub ebp, edi
mov word [ecx + 8], dx
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov dword [ecx], eax
lea eax, [esi + esi*4]
mov dword [ecx + 4], edx
lea ebp, [edi + eax*4]
jmp case.0x525b78.63
mov eax, dword [ebp + 0xc]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
test byte [edx + ecx*8 + 8], 1
je case.0x525b78.63
mov ecx, ebp
sub ecx, dword [esp + 0x48]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov esi, edx
shr esi, 0x1f
add esi, edx
cmp dword [ebp + 4], 0
jne 0x52a225
mov edi, dword [ebx + 0xb0]
test edi, edi
je 0x52a225
mov eax, dword [edi + 4]
dec dword [ebx + 0xb8]
mov esi, dword [esp + 0x14]
mov dword [ebx + 0xb0], eax
mov eax, dword [ebx + 0x5c]
add dword [esi + 0x54], eax
mov dword [esi + 0x50], eax
call fcn.00515f70
cmp dword [ebp + 8], 4
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x24]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], edx
jne 0x525d02
mov ecx, dword [ebx + 4]
lea eax, [eax + eax*4]
mov eax, dword [ecx + eax*4 + 8]
dec eax
mov ebp, dword [ebx + 4]
mov edx, dword [ebx + 8]
lea eax, [eax + eax*4]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x18], edx
lea ebp, [ebp + eax*4]
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, eax
mov eax, dword [ebp + 4]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx]
mov dword [eax], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 4], ecx
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edx, 8
mov word [eax + 8], dx
mov ecx, dword [ebp + 0x10]
fld qword [ecx]
fstp qword [eax]
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edi, dword [ebp + 0x10]
mov esi, eax
mov eax, edi
mov byte [ebp], 0x19
call fcn.004bf8c0
cmp byte [esp + 0x4f], 1
mov dword [ebp + 4], eax
je 0x525df2
push 0
push 1
push edi
or eax, 0xffffffff
mov ecx, esi
call fcn.004da840
add esp, 0xc
mov dword [esp + 0x10], eax
cmp eax, 0x12
je 0x5266bd
movzx ecx, byte [esp + 0x4f]
mov eax, esi
call fcn.004da750
test eax, eax
jne 0x52a412
mov edx, 0x800
or word [esi + 8], dx
mov dword [esi + 0x18], eax
cmp byte [ebp + 1], 0xff
jne 0x525de2
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0x14]
call fcn.004bf680
mov byte [ebp + 1], 0xff
mov eax, dword [esi + 0x10]
mov dword [ebp + 0x10], eax
mov ecx, dword [esi + 0xc]
mov dword [ebp + 4], ecx
mov edx, dword [ebp + 4]
mov eax, dword [esp + 0x14]
cmp edx, dword [eax + 0x58]
jg 0x5266bd
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, 0xa02
mov word [eax + 8], cx
mov edx, dword [ebp + 0x10]
mov dword [eax + 0x10], edx
mov ecx, dword [ebp + 4]
mov dl, byte [esp + 0x4f]
mov dword [eax + 0xc], ecx
mov byte [eax + 0xa], dl
cmp byte [ebp + 3], 0
je case.0x525b78.63
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x18]
lea ecx, [ecx + ecx*4]
mov esi, dword [edx + ecx*8]
or esi, dword [edx + ecx*8 + 4]
je case.0x525b78.63
mov ecx, 0xa10
mov word [eax + 8], cx
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov esi, dword [ebp + 0xc]
sub esi, dword [ebp + 8]
mov edx, dword [ebp + 4]
neg edx
sbb edx, edx
and edx, 0x100
inc edx
mov edi, eax
movzx eax, dx
mov dword [esp + 0x2c], eax
mov word [edi + 8], ax
test esi, esi
jle case.0x525b78.63
jmp 0x525e90
add edi, 0x28
mov eax, edi
call fcn.004c4740
mov ax, word [esp + 0x2c]
dec esi
mov word [edi + 8], ax
test esi, esi
jg 0x525e90
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*8]
mov cx, word [eax + 8]
mov edx, 0xff7f
and cx, dx
or cx, 1
mov word [eax + 8], cx
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov esi, eax
mov eax, dword [ebp + 0x10]
push 0
push 0
push eax
mov eax, dword [ebp + 4]
mov ecx, esi
call fcn.004da840
mov cl, byte [esp + 0x5b]
add esp, 0xc
mov byte [esi + 0xa], cl
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x3c]
lea esi, [eax + edx*8 - 0x28]
mov ecx, esi
call fcn.004c4840
test eax, eax
jne 0x5266bd
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
push 0x800
push esi
push eax
call fcn.004c4890
add esp, 0xc
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 8]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea edi, [ecx + edx*8]
lea esi, [ecx + eax*8]
push edi
mov eax, esi
call fcn.004c48f0
mov ecx, 0x1000
add esp, 4
test word [esi + 8], cx
je 0x525f7a
mov eax, esi
call fcn.004d6150
test eax, eax
jne 0x52a412
add edi, 0x28
add esi, 0x28
sub dword [esp + 0x20], 1
jne 0x525f55
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
mov edx, dword [ebp + 0xc]
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov eax, dword [ebp + 8]
mov dword [esp + 0x20], edx
lea edx, [eax + eax*4]
lea esi, [ecx + edx*8]
lea esp, [esp]
push 0x1000
push edi
push esi
call fcn.004c4890
mov eax, 0x1000
add esp, 0xc
test word [esi + 8], ax
je 0x525fd9
mov eax, esi
call fcn.004d6150
test eax, eax
jne 0x52a412
mov eax, dword [esp + 0x20]
mov ecx, eax
dec eax
mov dword [esp + 0x20], eax
test ecx, ecx
je case.0x525b78.63
add esi, 0x28
add edi, 0x28
jmp 0x525fb0
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
lea edx, [eax + eax*4]
lea eax, [ecx + edx*8]
push 0x1000
push eax
mov eax, dword [ebp + 8]
lea edx, [eax + eax*4]
lea eax, [ecx + edx*8]
push eax
call fcn.004c4890
add esp, 0xc
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov edx, dword [eax + ecx*8 + 4]
mov ecx, dword [eax + ecx*8]
push edx
push ecx
mov ecx, dword [ebp + 8]
lea edx, [ecx + ecx*4]
lea eax, [eax + edx*8]
call fcn.004c47a0
add esp, 8
jmp case.0x525b78.63
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0x124]
test eax, eax
je 0x526076
mov ecx, dword [esp + 0x68]
cmp ecx, dword [esp + 0x98]
jb 0x526076
mov edx, dword [esi + 0x128]
push edx
call eax
add esp, 4
test eax, eax
jne 0x529359
push 0
mov eax, ebx
call fcn.004e20c0
add esp, 4
mov dword [esp + 0x10], eax
test eax, eax
jne case.0x525b78.63
push 1
push ebx
call fcn.005042d0
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne case.0x525b78.63
mov ecx, dword [ebx + 0x48]
add ecx, 2
or ecx, 1
mov dword [ebx + 0x48], ecx
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea edi, [eax + edx*8]
mov dword [ebx + 0x14], edi
cmp dword [ebp + 8], 0
mov dword [esp + 0x2c], 0
jle 0x526102
nop
mov ecx, 0x1000
test word [edi + 8], cx
je 0x5260ea
mov eax, edi
call fcn.004d6150
test eax, eax
jne 0x52a412
mov eax, edi
call fcn.004cf550
mov eax, dword [esp + 0x2c]
inc eax
add edi, 0x28
cmp eax, dword [ebp + 8]
mov dword [esp + 0x2c], eax
jl 0x5260d0
cmp byte [esi + 0x41], 0
jne 0x52a412
sub ebp, dword [esp + 0x48]
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
lea ecx, [edx + eax + 1]
mov dword [ebx + 0x4c], ecx
mov dword [esp + 0x10], 0x64
jmp 0x52a4f2
mov eax, dword [ebp + 4]
mov edi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea ecx, [edi + eax*8]
mov eax, dword [ebp + 8]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 0xc]
lea esi, [edi + edx*8]
mov dl, byte [esi + 8]
lea eax, [eax + eax*4]
lea edi, [edi + eax*8]
movzx eax, word [ecx + 8]
or dl, al
mov dword [esp + 0x28], ecx
mov dword [esp + 0x1c], esi
test dl, 1
je 0x526174
mov eax, edi
call fcn.004c4740
jmp case.0x525b78.63
test eax, 0x4000
je 0x526192
mov esi, ecx
call fcn.004cf4b0
test eax, eax
jne 0x52a412
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov eax, 0x4000
test word [esi + 8], ax
je 0x5261b2
call fcn.004cf4b0
test eax, eax
jne 0x52a412
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
test byte [ecx + 8], 0x12
jne 0x5261d9
mov edx, dword [esp + 0x4f]
push 0
push edx
mov esi, ecx
call fcn.004da770
add esp, 8
test eax, eax
jne 0x52a412
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
test byte [esi + 8], 0x12
jne 0x5261fe
mov eax, dword [esp + 0x4f]
push 0
push eax
call fcn.004da770
add esp, 8
test eax, eax
jne 0x52a412
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov eax, dword [esi + 0xc]
add eax, dword [ecx + 0xc]
cdq
mov ecx, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x104], eax
mov eax, dword [edx + 0x58]
cdq
cmp ecx, edx
jg 0x5266bd
jl 0x52622d
cmp dword [esp + 0x104], eax
ja 0x5266bd
xor eax, eax
cmp edi, esi
sete al
push eax
mov eax, dword [esp + 0x108]
add eax, 2
push edi
call fcn.004cf360
add esp, 8
test eax, eax
jne 0x52a412
mov cx, word [edi + 8]
mov edx, 0xbe02
and cx, dx
or cx, 2
mov word [edi + 8], cx
cmp edi, esi
je 0x52627c
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov edx, dword [edi + 0x10]
push eax
push ecx
push edx
call fcn.0040dc50
add esp, 0xc
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x10]
mov eax, dword [esi + 0xc]
add eax, dword [edi + 0x10]
push ecx
push edx
push eax
call fcn.0040dc50
mov ecx, dword [edi + 0x10]
mov eax, dword [esp + 0x110]
mov byte [eax + ecx], 0
mov edx, dword [edi + 0x10]
mov byte [edx + eax + 1], 0
mov dl, byte [esp + 0x5b]
mov ecx, 0x200
add esp, 0xc
or word [edi + 8], cx
mov dword [edi + 0xc], eax
mov byte [edi + 0xa], dl
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov eax, edi
call fcn.004c5d00
movzx ecx, ax
mov eax, dword [ebp + 8]
lea edx, [eax + eax*4]
lea esi, [esi + edx*8]
mov eax, esi
mov dword [esp + 0x1c], ecx
call fcn.004c5d00
mov edx, dword [esp + 0x18]
movzx eax, ax
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0xc]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*8]
mov cl, byte [esi + 8]
or cl, byte [edi + 8]
mov dword [esp + 0x28], eax
test cl, 1
jne 0x526536
mov dl, byte [esp + 0x20]
and dl, byte [esp + 0x1c]
test dl, 4
je 0x52643a
mov edx, dword [esi]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 4]
mov dword [esp + 0x64], edx
movzx edx, byte [ebp]
add edx, 0xffffffa7
mov byte [esp + 0x3f], 1
cmp edx, 3
ja case.default.0x52634f
jmp dword [edx*4 + 0x52a7b0]
push ecx
push eax
lea eax, [esp + 0x68]
push eax
call fcn.004c0570
add esp, 0xc
test eax, eax
jne 0x52643f
jmp 0x526410
push ecx
push eax
lea edx, [esp + 0x68]
call fcn.004c0610
add esp, 8
test eax, eax
jne 0x52643f
jmp 0x526410
push ecx
push eax
lea ecx, [esp + 0x68]
push ecx
call fcn.004c0660
add esp, 0xc
test eax, eax
jne 0x52643f
jmp 0x526410
mov edx, eax
or edx, ecx
je 0x526536
mov edx, eax
and edx, ecx
cmp edx, 0xffffffff
jne 0x5263ca
cmp dword [esp + 0x60], 0
jne 0x5263ca
cmp dword [esp + 0x64], 0x80000000
je 0x52643f
push ecx
mov ecx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x6c]
push eax
push ecx
call fcn.00555140
jmp 0x526408
mov edx, eax
or edx, ecx
je 0x526536
mov edx, eax
and edx, ecx
cmp edx, 0xffffffff
jne 0x5263f7
mov eax, 1
xor ecx, ecx
push ecx
mov ecx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x6c]
push eax
push ecx
call fcn.005551f0
mov dword [esp + 0x64], edx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [eax], edx
mov dx, word [eax + 8]
mov dword [eax + 4], ecx
mov ecx, 0xbe04
and dx, cx
or dx, 4
mov word [eax + 8], dx
jmp case.0x525b78.63
mov byte [esp + 0x3f], 0
mov eax, edi
call fcn.004c4570
fstp qword [esp + 0x2c]
mov eax, esi
call fcn.004c4570
movzx eax, byte [ebp]
add eax, 0xffffffa7
cmp eax, 3
ja case.default.0x52645d
jmp dword [eax*4 + 0x52a7c0]
fadd qword [esp + 0x2c]
jmp 0x5264d9
fsub qword [esp + 0x2c]
jmp 0x5264d9
fmul qword [esp + 0x2c]
jmp 0x5264d9
fldz
fld qword [esp + 0x2c]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x526532
fdivp st(1)
jmp 0x5264d9
fld qword [esp + 0x2c]
call fcn.00554d56
mov esi, eax
mov edi, edx
call fcn.00554d56
mov ecx, esi
or ecx, edi
je 0x526536
mov ecx, esi
and ecx, edi
cmp ecx, 0xffffffff
jne 0x5264bb
mov esi, 1
xor edi, edi
push edi
push esi
push edx
push eax
call fcn.005551f0
mov dword [esp + 0x154], eax
mov dword [esp + 0x158], edx
fild qword [esp + 0x154]
sub esp, 8
fst qword [esp + 0x34]
fstp qword [esp]
call fcn.004bf880
add esp, 8
test eax, eax
jne 0x526536
mov esi, dword [esp + 0x28]
fld qword [esp + 0x2c]
mov dx, word [esi + 8]
fstp qword [esi]
mov eax, 0xbe08
and dx, ax
mov al, byte [esp + 0x20]
or al, byte [esp + 0x1c]
or dx, 8
mov word [esi + 8], dx
test al, 8
jne case.0x525b78.63
cmp byte [esp + 0x3f], 0
jne case.0x525b78.63
call fcn.004c45c0
jmp case.0x525b78.63
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x28]
call fcn.004c4740
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
test eax, eax
je case.0x525b78.63
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
push 0
push 0
lea eax, [edx + ecx*8]
call fcn.004c47a0
add esp, 8
jmp case.0x525b78.63
movzx eax, byte [ebp + 3]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
lea eax, [eax*4 + 0x1c]
push 0
push eax
call fcn.004cb940
mov ecx, eax
add esp, 8
test ecx, ecx
je 0x52a412
mov dword [ecx], 0
mov edx, dword [ebp + 0x10]
mov dword [ecx + 4], edx
mov edx, ebp
sub edx, dword [esp + 0x48]
mov eax, 0x66666667
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dl, byte [esp + 0x2c]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0xc], ebx
mov byte [ecx + 0x1a], dl
mov byte [ebp + 1], 0xec
mov dword [ebp + 0x10], ecx
mov byte [ebp], 0x25
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x18]
mov esi, dword [ebp + 0x10]
lea eax, [eax + eax*4]
lea eax, [edi + eax*8]
mov dword [esp + 0x28], eax
cmp dword [esi], eax
je 0x526609
movzx ecx, byte [esi + 0x1a]
sub ecx, 1
mov dword [esi], eax
js 0x526609
lea edx, [esi + ecx*4 + 0x1c]
mov eax, dword [ebp + 8]
add eax, ecx
lea eax, [eax + eax*4]
lea eax, [edi + eax*8]
mov dword [edx], eax
dec ecx
sub edx, 4
test ecx, ecx
jge 0x5265f4
mov eax, dword [esi]
mov cx, word [eax + 8]
mov edi, dword [esp + 0x14]
mov edx, 0xbe01
and cx, dx
or cx, 1
mov word [eax + 8], cx
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov byte [esi + 0x19], 0
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], ecx
movzx ecx, byte [esi + 0x1a]
mov edx, dword [esi + 4]
mov edx, dword [edx + 0xc]
lea eax, [esi + 0x1c]
push eax
push ecx
push esi
call edx
mov eax, dword [edi + 0x20]
mov ecx, dword [edi + 0x24]
add esp, 0xc
cmp byte [esi + 0x19], 0
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], ecx
je 0x526694
cmp dword [esi + 0x14], 0
je 0x526683
mov edx, dword [esi]
push edx
call fcn.004daf90
push eax
push 0x5970d8
mov edi, ebx
call fcn.004e1c90
mov eax, dword [esi + 0x14]
add esp, 0xc
mov dword [esp + 0x10], eax
mov ecx, dword [ebp + 4]
mov edx, dword [esi + 0x10]
push ecx
push edx
push ebx
call fcn.004c4c60
add esp, 0xc
mov eax, dword [esp + 0x28]
test byte [eax + 8], 0x12
je case.0x525b78.63
movzx ecx, byte [esp + 0x4f]
mov eax, dword [esi]
call fcn.004da750
mov ecx, dword [esi]
call fcn.004c4840
test eax, eax
je case.0x525b78.63
push str.string_or_blob_too_big
mov edi, ebx
call fcn.004e1c90
mov esi, dword [esp + 0x18]
add esp, 4
mov dword [esp + 0x10], 0x12
jmp 0x52a469
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
mov eax, dword [ebp + 8]
lea esi, [edx + ecx*8]
lea eax, [eax + eax*4]
lea ecx, [edx + eax*8]
mov eax, dword [ebp + 0xc]
lea eax, [eax + eax*4]
lea edi, [edx + eax*8]
mov dl, byte [ecx + 8]
or dl, byte [esi + 8]
mov dword [esp + 0x28], edi
test dl, 1
je 0x526717
mov eax, edi
call fcn.004c4740
jmp case.0x525b78.63
call fcn.004c4500
mov ecx, esi
mov dword [esp + 0x8c], eax
mov edi, edx
call fcn.004c4500
mov esi, eax
mov al, byte [ebp]
cmp al, 0x55
jne 0x526743
and dword [esp + 0x8c], esi
and edi, edx
jmp 0x526840
cmp al, 0x56
jne 0x526755
or dword [esp + 0x8c], esi
or edi, edx
jmp 0x526840
mov ecx, esi
or ecx, edx
je 0x526840
test edx, edx
jg 0x52678d
jl 0x526769
test esi, esi
jae 0x526782
mov cl, 0xaf
sub cl, al
cmp edx, 0xffffffff
mov al, cl
jl 0x52678d
jg 0x52677b
cmp esi, 0xffffffc0
jbe 0x52678d
neg esi
adc edx, 0
neg edx
test edx, edx
jl 0x5267c4
jg 0x52678d
cmp esi, 0x40
jb 0x5267c4
test edi, edi
jg 0x5267b3
jl 0x52679d
cmp dword [esp + 0x8c], 0
jae 0x5267b3
cmp al, 0x57
je 0x5267b3
or eax, 0xffffffff
cdq
mov dword [esp + 0x8c], eax
mov edi, edx
jmp 0x526840
xor eax, eax
cdq
mov dword [esp + 0x8c], eax
mov edi, edx
jmp 0x526840
cmp al, 0x57
mov eax, dword [esp + 0x8c]
mov edx, edi
mov ecx, esi
jne 0x5267e8
call fcn.005543f0
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], edx
jmp 0x52682b
call fcn.00554e40
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], edx
test edi, edi
jg 0x52682b
jl 0x52680b
cmp dword [esp + 0x8c], 0
jae 0x52682b
mov ecx, 0x40
sub ecx, esi
or eax, 0xffffffff
or edx, 0xffffffff
call fcn.005543f0
or dword [esp + 0xa8], eax
or dword [esp + 0xac], edx
mov edx, dword [esp + 0xa8]
mov edi, dword [esp + 0xac]
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x8c]
mov dx, word [eax + 8]
mov dword [eax], ecx
mov ecx, 0xbe04
and dx, cx
or dx, 4
mov dword [eax + 4], edi
mov word [eax + 8], dx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea esi, [eax + edx*8]
call fcn.004c4630
mov eax, dword [ebp + 8]
cdq
add dword [esi], eax
adc dword [esi + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
movzx eax, word [edx + ecx*8 + 8]
lea esi, [edx + ecx*8]
test al, 4
jne 0x5268d9
test al, 8
jne 0x5268b5
test al, 2
je 0x5268ba
push 1
mov eax, esi
call fcn.004c5c00
add esp, 4
jmp 0x5268ba
call fcn.004c45c0
movzx eax, word [esi + 8]
test al, 4
jne 0x5268d9
cmp dword [ebp + 8], 0
jne 0x52a1ff
mov dword [esp + 0x10], 0x14
jmp 0x52861f
and eax, 0xbe04
or eax, 4
mov word [esi + 8], ax
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
test byte [ecx + eax*8 + 8], 4
lea esi, [ecx + eax*8]
je case.0x525b78.63
call fcn.004c4660
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea esi, [eax + edx*8]
mov ecx, 0x4000
test word [esi + 8], cx
je 0x526942
call fcn.004cf4b0
mov dl, byte [esp + 0x4f]
mov cl, byte [ebp + 8]
push esi
mov dword [esp + 0x14], eax
call fcn.004e1840
add esp, 4
jmp case.0x525b78.63
mov dl, byte [esp + 0x4f]
mov cl, byte [ebp + 8]
push esi
mov dword [esp + 0x14], 0
call fcn.004e1840
add esp, 4
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov esi, dword [esp + 0x18]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 0xc]
movzx ecx, word [esi + edx*8 + 8]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
lea edi, [esi + edx*8]
movzx edx, word [eax + 8]
mov dword [esp + 0x1c], eax
mov al, dl
or al, cl
test al, 1
mov al, byte [ebp + 3]
mov dword [esp + 0x28], edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x24], edx
je 0x5269f4
test al, al
jns 0x5269c0
test cl, 1
je 0x5269b6
test dl, 1
je 0x5269b6
test edx, 0x100
jne 0x5269b6
xor eax, eax
jmp 0x526b09
mov eax, 1
jmp 0x526b09
test al, 0x20
je 0x5269e7
mov eax, dword [ebp + 8]
lea ecx, [eax + eax*4]
mov dx, word [esi + ecx*8 + 8]
lea eax, [esi + ecx*8]
mov ecx, 0xbe01
and dx, cx
or dx, 1
mov word [eax + 8], dx
jmp case.0x525b78.63
test al, 0x10
jne 0x52a1ff
jmp case.0x525b78.63
and al, 0x47
cmp al, 0x43
jl 0x526a35
mov al, cl
and al, 0xe
cmp al, 2
jne 0x526a16
push 0
mov eax, edi
call fcn.004c5c00
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
add esp, 4
mov al, dl
and al, 0xe
cmp al, 2
jne 0x526abb
mov eax, dword [esp + 0x1c]
push 0
call fcn.004c5c00
add esp, 4
jmp 0x526ab3
cmp al, 0x42
jne 0x526abb
test cl, 2
jne 0x526a7a
test cl, 0xc
je 0x526a7a
mov ecx, dword [esp + 0x4f]
mov esi, dword [esp + 0x28]
push 1
push ecx
call fcn.004da770
mov dx, word [esi + 8]
xor dx, word [esp + 0x48]
mov eax, 0x1ff
and dx, ax
add esp, 8
xor dx, word [esi + 8]
movzx ecx, dx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x40], ecx
test dl, 2
jne 0x526abb
test dl, 0xc
je 0x526abb
mov edx, dword [esp + 0x4f]
mov esi, dword [esp + 0x1c]
push 1
push edx
call fcn.004da770
mov ax, word [esi + 8]
xor ax, word [esp + 0x2c]
mov ecx, 0x1ff
and ax, cx
add esp, 8
xor ax, word [esi + 8]
movzx edx, ax
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x24]
test ecx, 0x4000
je 0x526ad8
mov esi, dword [esp + 0x28]
call fcn.004cf4b0
and dword [esp + 0x40], 0xbfff
mov edx, dword [esp + 0x24]
test edx, 0x4000
je 0x526af1
mov esi, dword [esp + 0x1c]
call fcn.004cf4b0
and dword [esp + 0x24], 0xbfff
mov edi, dword [ebp + 0x10]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
call fcn.004dae00
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x18]
movzx ecx, byte [ebp]
add ecx, 0xffffffb2
cmp ecx, 4
ja case.default.0x526b15
jmp dword [ecx*4 + 0x52a7d0]
xor ecx, ecx
test eax, eax
sete cl
jmp 0x526b50
xor ecx, ecx
test eax, eax
setne cl
jmp 0x526b50
xor ecx, ecx
test eax, eax
setl cl
jmp 0x526b50
xor ecx, ecx
test eax, eax
setle cl
jmp 0x526b50
xor ecx, ecx
test eax, eax
setg cl
jmp 0x526b50
xor ecx, ecx
test eax, eax
setge cl
mov edi, dword [esp + 0x28]
mov eax, ecx
mov cx, word [esp + 0x40]
mov word [edi + 8], cx
mov ecx, dword [esp + 0x1c]
mov word [ecx + 8], dx
test byte [ebp + 3], 0x20
je 0x526e6e
mov ecx, dword [ebp + 8]
lea edx, [ecx + ecx*4]
lea ecx, [esi + edx*8]
mov dx, word [ecx + 8]
mov esi, 0xbe04
and dx, si
or dx, 4
mov word [ecx + 8], dx
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 0x10]
mov dword [esp + 0xb0], eax
jmp case.0x525b78.63
test byte [ebp + 3], 1
jne 0x526bb9
mov dword [esp + 0xb0], 0
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 4]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp + 8]
xor esi, esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x2c], ecx
test eax, eax
jle 0x526c6f
mov edx, dword [esp + 0x20]
add edx, 0x14
mov dword [esp + 0x1c], edx
lea ebx, [ebx]
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x526c00
mov ecx, dword [eax + esi*4]
jmp 0x526c02
mov ecx, esi
mov eax, dword [esp + 0x1c]
mov edi, dword [eax]
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x10]
movzx edx, byte [eax + esi]
mov eax, dword [esp + 0x2c]
add eax, ecx
mov dword [esp + 0x54], edx
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*8]
mov edx, dword [esp + 0x58]
add ecx, edx
mov edx, dword [esp + 0x18]
lea ecx, [ecx + ecx*4]
lea edx, [edx + ecx*8]
call fcn.004dae00
mov dword [esp + 0xc0], eax
test eax, eax
jne 0x526c5f
add dword [esp + 0x1c], 4
inc esi
cmp esi, dword [esp + 0x44]
jl 0x526bf0
mov dword [esp + 0xb0], eax
jmp case.0x525b78.63
cmp dword [esp + 0x54], 0
je 0x526c6f
neg eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xb0], 0
jmp case.0x525b78.63
mov eax, dword [esp + 0xc0]
test eax, eax
jge 0x526c9e
mov ebp, dword [ebp + 4]
mov ecx, dword [esp + 0x48]
lea eax, [ebp + ebp*4]
lea ebp, [ecx + eax*4 - 0x14]
jmp case.0x525b78.63
je 0x52a1ff
mov ebp, dword [ebp + 0xc]
mov edx, dword [esp + 0x48]
lea ecx, [ebp + ebp*4]
lea ebp, [edx + ecx*4 - 0x14]
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov edi, dword [esp + 0x18]
lea eax, [eax + eax*4]
test byte [edi + eax*8 + 8], 1
lea ecx, [edi + eax*8]
je 0x526cd3
mov esi, 2
jmp 0x526ce5
call fcn.004c4500
or eax, edx
je 0x526ce3
mov esi, 1
jmp 0x526ce5
xor esi, esi
mov eax, dword [ebp + 8]
lea ecx, [eax + eax*4]
test byte [edi + ecx*8 + 8], 1
lea ecx, [edi + ecx*8]
je 0x526cfc
mov eax, 2
jmp 0x526d0e
call fcn.004c4500
or eax, edx
je 0x526d0c
mov eax, 1
jmp 0x526d0e
xor eax, eax
cmp byte [ebp], 0x48
jne 0x526d21
lea edx, [eax + esi*2]
movzx eax, byte [esi + edx + 0x58b034]
jmp 0x526d2c
lea eax, [eax + esi*2]
movzx eax, byte [esi + eax + 0x58b078]
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx + ecx*4]
lea ecx, [edi + ecx*8]
cmp eax, 2
jne 0x526d53
mov dx, word [ecx + 8]
mov eax, 0xbe01
and dx, ax
or dx, 1
mov word [ecx + 8], dx
jmp case.0x525b78.63
cdq
mov dword [ecx + 4], edx
mov dx, word [ecx + 8]
mov dword [ecx], eax
mov eax, 0xbe04
and dx, ax
or dx, 4
mov word [ecx + 8], dx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 8]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
mov eax, esi
lea edi, [ecx + edx*8]
call fcn.004c4740
test byte [edi + 8], 1
jne case.0x525b78.63
mov ecx, 4
mov word [esi + 8], cx
mov ecx, edi
call fcn.004c4500
or eax, edx
jne 0x526dbd
mov eax, 1
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x525b78.63
xor eax, eax
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 8]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
mov eax, esi
lea edi, [ecx + edx*8]
call fcn.004c4740
test byte [edi + 8], 1
jne case.0x525b78.63
mov ecx, 4
mov word [esi + 8], cx
mov ecx, edi
call fcn.004c4500
not eax
not edx
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x525b78.63
mov edx, dword [ebx + 0xc8]
mov eax, dword [ebp + 4]
add eax, edx
cmp byte [eax], 0
jne 0x52a1ff
mov byte [eax], 1
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
test byte [edx + ecx*8 + 8], 1
lea eax, [edx + ecx*8]
je 0x526e44
mov eax, dword [ebp + 0xc]
jmp 0x526e6e
call fcn.004c4570
fcomp qword [0x58df20]
fnstsw ax
test ah, 0x44
jnp 0x526e5d
mov eax, 1
jmp 0x526e5f
xor eax, eax
cmp byte [ebp], 0x2f
jne 0x526e6e
xor ecx, ecx
test eax, eax
sete cl
mov eax, ecx
test eax, eax
jne 0x52a1ff
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
test byte [eax + edx*8 + 8], 1
jne 0x52a1ff
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
test byte [edx + ecx*8 + 8], 1
je 0x52a1ff
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xc]
lea ecx, [eax + eax*4]
mov eax, dword [ebp + 4]
lea esi, [edx + ecx*8]
mov ecx, dword [ebx + 0x38]
mov edi, dword [ecx + eax*4]
mov eax, dword [edi + 0x14]
mov edx, dword [edi + 0x4c]
mov dword [esp + 0x1c], eax
mov eax, edi
mov dword [esp + 0x34], esi
mov dword [esp + 0x40], edx
call fcn.005142a0
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
mov ecx, dword [edi + 0x38]
cmp ecx, dword [ebx + 0x48]
je 0x52703d
cmp byte [edi + 2], al
je 0x526f3b
cmp byte [edi], 3
jne 0x526f2f
mov eax, dword [edi + 0x14]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea ecx, [eax + edx*8]
mov eax, dword [ecx + 0xc]
mov dword [edi + 0x40], eax
mov dword [edi + 0x3c], eax
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x94], eax
mov dword [edi + 0x48], ecx
jmp 0x526fc5
mov eax, esi
call fcn.004c4740
jmp 0x527345
cmp byte [edi + 4], 0
mov esi, dword [esp + 0x1c]
mov eax, esi
jne 0x526f7f
call fcn.004c40c0
mov edx, dword [esi + 0x10]
mov dword [esp + 0x10c], edx
mov eax, dword [esi + 0x14]
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0x1c]
lea esi, [esp + 0x94]
call fcn.004c4120
mov dword [edi + 0x48], eax
mov ecx, dword [esp + 0x10c]
mov dword [edi + 0x3c], ecx
jmp 0x526f9d
call fcn.004c40c0
mov edx, dword [esi + 0x1c]
mov eax, dword [esp + 0x1c]
lea esi, [esp + 0x94]
mov dword [edi + 0x3c], edx
call fcn.004c4120
mov dword [edi + 0x48], eax
mov eax, dword [edi + 0x3c]
cmp eax, dword [esp + 0x94]
ja 0x526fae
mov dword [edi + 0x40], eax
jmp 0x526fc5
mov ecx, dword [esp + 0x14]
cmp eax, dword [ecx + 0x58]
ja 0x5266bd
mov edx, dword [esp + 0x94]
mov dword [edi + 0x40], edx
mov eax, dword [ebx + 0x48]
mov ecx, dword [edi + 0x48]
mov dword [edi + 0x38], eax
mov al, byte [ecx]
cmp al, 0x80
jae 0x526fe5
movzx eax, al
mov dword [esp + 0xd4], eax
mov ecx, 1
jmp 0x526ffb
lea esi, [esp + 0xd4]
call fcn.004c04c0
movzx ecx, al
mov eax, dword [esp + 0xd4]
movzx ecx, cl
mov dword [edi + 0x44], ecx
mov ecx, dword [esp + 0x40]
xor edx, edx
mov word [edi + 0x12], dx
mov dword [ecx], eax
cmp dword [esp + 0x94], eax
jae 0x52704b
xor ecx, ecx
mov dword [edi + 0x48], ecx
mov dword [edi + 0x40], ecx
cmp eax, 0x18003
ja 0x52702a
cmp eax, dword [edi + 0x3c]
jbe 0x52704b
mov eax, 0x12992
call fcn.004eb240
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
movzx edx, word [edi + 0x12]
cmp edx, dword [esp + 0x28]
jg 0x52725f
mov eax, dword [edi + 0x44]
mov ecx, dword [esp + 0x40]
cmp eax, dword [ecx]
jae 0x527222
mov edx, dword [edi + 0x48]
test edx, edx
jne 0x5270dc
xor eax, eax
mov dword [esp + 0x1bc], eax
mov dword [esp + 0x1c0], eax
mov dword [esp + 0x1c4], eax
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x1cc], eax
mov dword [esp + 0x1d0], eax
mov dword [esp + 0x1d4], eax
mov dword [esp + 0x1d8], eax
mov dword [esp + 0x1dc], eax
mov dword [esp + 0x1e0], eax
cmp byte [edi + 4], al
mov ecx, dword [ecx]
sete al
lea edx, [esp + 0x1bc]
push edx
push eax
push ecx
mov ecx, dword [esp + 0x28]
xor eax, eax
call fcn.00513520
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jne case.0x525b78.63
mov edx, dword [esp + 0x1cc]
movzx ecx, word [edi + 0x12]
mov eax, dword [esp + 0x40]
mov esi, dword [eax + ecx*4]
mov eax, dword [eax]
mov dword [esp + 0x80], esi
mov esi, dword [edi + 0x44]
add esi, edx
add eax, edx
mov dword [esp + 0x54], edx
lea edx, [edi + ecx*4 + 0x50]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x84], 0
mov dword [esp + 0x38], esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x6c], edx
lea ebx, [ebx]
movzx eax, byte [esi]
mov dword [esp + 0x24], eax
cmp eax, 0x80
jae 0x52714e
movzx eax, al
movzx eax, byte [eax + 0x58af90]
cdq
inc esi
add dword [esp + 0x80], eax
mov dword [esp + 0x38], esi
adc dword [esp + 0x84], edx
jmp 0x52717e
mov ecx, dword [esp + 0x38]
lea esi, [esp + 0x24]
call fcn.004c04c0
movzx ecx, al
mov eax, dword [esp + 0x24]
add dword [esp + 0x38], ecx
call fcn.004c4e40
add dword [esp + 0x80], eax
mov ecx, dword [esp + 0x20]
adc dword [esp + 0x84], 0
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x38]
mov dword [eax], edx
mov edx, dword [esp + 0x80]
add eax, 4
inc ecx
cmp ecx, dword [esp + 0x28]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], ecx
mov dword [eax + ecx*4], edx
jg 0x5271b6
cmp esi, dword [esp + 0x44]
jb 0x527120
mov eax, esi
sub eax, dword [esp + 0x54]
cmp dword [edi + 0x48], 0
mov word [edi + 0x12], cx
mov dword [edi + 0x44], eax
jne 0x5271d5
lea eax, [esp + 0x1bc]
call fcn.004c4480
mov eax, dword [esp + 0x44]
cmp esi, eax
jb 0x5271f6
ja 0x52720f
mov eax, dword [edi + 0x3c]
xor ecx, ecx
cmp dword [esp + 0x80], eax
jne 0x52720f
cmp dword [esp + 0x84], ecx
jne 0x52720f
mov ecx, dword [edi + 0x3c]
xor eax, eax
cmp dword [esp + 0x84], eax
jb 0x52722a
ja 0x52720f
cmp dword [esp + 0x80], ecx
jbe 0x52722a
mov eax, 0x129cf
call fcn.004eb240
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
mov dword [esp + 0x24], 0
movzx ecx, word [edi + 0x12]
cmp ecx, dword [esp + 0x28]
jg 0x52726b
cmp byte [ebp + 1], 0xf8
mov eax, dword [esp + 0x34]
jne 0x527255
mov edx, dword [ebp + 0x10]
push 0x800
push edx
push eax
call fcn.004c4890
add esp, 0xc
jmp 0x527341
call fcn.004c4740
jmp 0x527341
mov ecx, dword [esp + 0x28]
mov edx, dword [edi + ecx*4 + 0x50]
mov dword [esp + 0x24], edx
mov esi, dword [esp + 0x34]
mov eax, 0x2460
test word [esi + 8], ax
je 0x527281
mov eax, esi
call fcn.004c4740
mov ecx, dword [edi + 0x40]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x28]
cmp ecx, dword [edx + eax*4 + 4]
jb 0x5272aa
mov ecx, dword [edi + 0x48]
add ecx, dword [edx + eax*4]
mov edx, dword [esp + 0x24]
push esi
call fcn.004c4f60
add esp, 4
jmp 0x52733a
mov cl, byte [ebp + 3]
mov eax, dword [esp + 0x24]
test cl, 0xc0
je 0x5272c3
cmp eax, 0xc
jb 0x5272bf
test al, 1
je 0x5272cc
test cl, cl
js 0x5272cc
call fcn.004c4e40
test eax, eax
jne 0x5272ef
mov edx, dword [esp + 0x24]
mov ecx, 0xd
cmp ecx, edx
sbb ecx, ecx
not ecx
lea eax, [esp + 0x10c]
push esi
and ecx, eax
call fcn.004c4f60
add esp, 4
jmp 0x52733a
mov edx, dword [esp + 0x40]
xor ecx, ecx
cmp byte [edi + 4], cl
push esi
sete cl
push ecx
mov ecx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x34]
mov eax, dword [edx + eax*4]
call fcn.00513520
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jne case.0x525b78.63
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov ecx, dword [esi + 0x10]
push esi
call fcn.004c4f60
mov ecx, 0xefff
add esp, 4
and word [esi + 8], cx
mov dl, byte [esp + 0x4f]
mov byte [esi + 0xa], dl
mov esi, dword [esp + 0x34]
movzx eax, word [esi + 8]
test eax, 0x1000
je case.0x525b78.63
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x2c], ecx
test ecx, ecx
je case.0x525b78.63
mov edi, dword [esi + 0xc]
and eax, 0x12
mov dword [esp + 0x58], eax
lea eax, [edi + 2]
mov ecx, esi
call fcn.004cf490
test eax, eax
jne 0x52a412
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + 0x10]
push edi
push eax
push ecx
call fcn.0040dc50
mov edx, dword [esi + 0x10]
mov byte [edi + edx], 0
mov eax, dword [esi + 0x10]
mov byte [edi + eax + 1], 0
mov eax, dword [esp + 0x64]
add esp, 0xc
or eax, 0x200
mov word [esi + 8], ax
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov esi, dword [ebp + 0x10]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
mov al, byte [esi]
lea edi, [edx + ecx*8]
test al, al
je case.0x525b78.63
lea esp, [esp]
mov ecx, dword [esp + 0x4f]
push ecx
mov ecx, edi
inc esi
call fcn.004db410
mov al, byte [esi]
add esp, 4
add edi, 0x28
test al, al
jne 0x5273d0
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
mov esi, dword [ebp + 0x10]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 8]
lea eax, [eax + eax*4]
lea edx, [ecx + edx*8]
lea eax, [edx + eax*8 - 0x28]
mov dword [esp + 0x54], eax
movzx eax, byte [ebx + 0x57]
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0xc]
xor edi, edi
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
mov dword [esp + 0xe8], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb8], edi
mov dword [esp + 0x44], edx
mov dword [esp + 0x28], ecx
test esi, esi
je 0x52746e
mov al, byte [esi]
mov dword [esp + 0x1c], edx
lea ebx, [ebx]
mov edx, dword [esp + 0x4f]
mov ecx, dword [esp + 0x1c]
push edx
call fcn.004db410
mov al, byte [esi + 1]
add dword [esp + 0x20], 0x28
inc esi
add esp, 4
test al, al
jne 0x527450
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0xbc]
push eax
push ecx
mov edx, esi
call fcn.004c4d10
mov edx, 0x4000
add esp, 8
mov dword [esp + 0x38], eax
mov dword [esi + 0x1c], eax
test word [esi + 8], dx
je 0x5274cf
mov eax, edi
or eax, dword [esp + 0xe8]
je 0x5274b5
call fcn.004cf4b0
test eax, eax
jne 0x52a412
jmp 0x5274cf
mov eax, dword [esi]
mov ecx, dword [esi]
cdq
add dword [esp + 0xb4], eax
adc dword [esp + 0xb8], edx
sub dword [esp + 0xbc], ecx
add edi, dword [esp + 0xbc]
adc dword [esp + 0xe8], 0
cmp dword [esp + 0x38], 0x7f
ja 0x5274ec
mov eax, 1
jmp 0x5274fb
mov edx, dword [esp + 0x38]
push 0
push edx
call fcn.004c0540
add esp, 8
add dword [esp + 0x24], eax
sub esi, 0x28
cmp esi, dword [esp + 0x44]
jae 0x527472
cmp dword [esp + 0x24], 0x7e
jle 0x52753a
mov eax, dword [esp + 0x24]
cdq
push edx
push eax
call fcn.004c0540
mov esi, eax
mov eax, dword [esp + 0x2c]
add eax, esi
mov dword [esp + 0x2c], eax
cdq
push edx
push eax
call fcn.004c0540
add esp, 0x10
cmp esi, eax
jge 0x52753e
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xe8]
cdq
add edi, eax
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x58]
adc ecx, edx
mov esi, edi
add esi, dword [esp + 0xb4]
mov dword [esp + 0x11c], edx
adc ecx, dword [esp + 0xb8]
cdq
cmp ecx, edx
mov dword [esp + 0x20c], edi
jg 0x5266bd
jl 0x52758d
cmp esi, eax
ja 0x5266bd
mov esi, dword [esp + 0x28]
mov eax, edi
mov ecx, esi
call fcn.004cf490
test eax, eax
jne 0x52a412
mov ecx, dword [esp + 0x24]
mov esi, dword [esi + 0x10]
mov dword [esp + 0x40], esi
cmp ecx, 0x80
jae 0x5275be
mov byte [esi], cl
mov eax, 1
jmp 0x5275de
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x118]
mov esi, dword [esp + 0x40]
push ecx
push edx
call fcn.004c02f0
mov ecx, dword [esp + 0x2c]
add esp, 8
mov esi, dword [esp + 0x44]
movzx eax, al
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], esi
mov eax, dword [esi + 0x1c]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x38], eax
cmp eax, 0x80
jae 0x527611
mov byte [ecx + edx], al
mov eax, 1
jmp 0x527627
mov eax, dword [esp + 0x38]
push 0
push eax
lea esi, [ecx + edx]
call fcn.004c02f0
mov esi, dword [esp + 0x24]
add esp, 8
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
movzx eax, al
add dword [esp + 0x34], eax
lea edi, [ecx + edx]
mov ecx, dword [esp + 0x38]
mov eax, esi
call fcn.004c4e60
add dword [esp + 0x24], eax
add esi, 0x28
mov dword [esp + 0x1c], esi
cmp esi, dword [esp + 0x54]
jbe 0x5275f1
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20c]
mov edx, 0x10
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0xb4]
mov word [eax + 8], dx
mov edx, ecx
or edx, dword [esp + 0xb8]
je 0x527689
mov dword [eax], ecx
mov ecx, 0x4010
mov word [eax + 8], cx
mov byte [eax + 0xa], 1
jmp case.0x525b78.63
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov ecx, dword [eax + edx*4]
mov eax, dword [ecx + 0x14]
xor ecx, ecx
lea edx, [esp + 0xec]
push edx
mov dword [esp + 0xf0], ecx
mov dword [esp + 0xf4], ecx
call fcn.0050cca0
mov dword [esp + 0x14], eax
add esp, 4
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, dword [esp + 0xec]
mov edx, dword [esp + 0xf0]
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
test eax, eax
jne 0x5277bd
cmp dword [esi + 0x9c], eax
jle 0x52770f
push str.cannot_open_savepoint___SQL_statements_in_progress
jmp 0x52782a
mov eax, dword [esp + 0x38]
call fcn.004bf8c0
mov edx, dword [esi + 0x1f4]
add edx, dword [esi + 0x1f0]
mov edi, eax
push edx
push 0
push esi
call fcn.004c92a0
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
lea eax, [edi + 0x21]
push 0
push eax
call fcn.004cb940
mov esi, eax
add esp, 8
test esi, esi
je case.0x525b78.63
mov ecx, dword [esp + 0x38]
inc edi
push edi
lea eax, [esi + 0x20]
push ecx
push eax
mov dword [esi], eax
call fcn.0040dc50
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp byte [eax + 0x3f], 0
je 0x52777f
mov byte [eax + 0x3f], 0
mov byte [eax + 0x46], 1
jmp 0x527785
inc dword [eax + 0x1f0]
mov edx, dword [eax + 0x1e8]
mov dword [esi + 0x18], edx
mov ecx, dword [eax + 0x1f8]
mov dword [eax + 0x1e8], esi
mov dword [esi + 8], ecx
mov edx, dword [eax + 0x1fc]
mov dword [esi + 0xc], edx
mov ecx, dword [eax + 0x200]
mov dword [esi + 0x10], ecx
mov edx, dword [eax + 0x204]
mov dword [esi + 0x14], edx
jmp case.0x525b78.63
mov edi, dword [esi + 0x1e8]
mov dword [esp + 0x1c], 0
test edi, edi
je 0x5277ef
nop
mov eax, dword [esp + 0x38]
mov ecx, dword [edi]
push eax
push ecx
call fcn.004bf990
add esp, 8
test eax, eax
je 0x527810
mov edi, dword [edi + 0x18]
inc dword [esp + 0x1c]
test edi, edi
jne 0x5277d0
mov edx, dword [esp + 0x38]
push edx
push str.no_such_savepoint:__s
mov edi, ebx
call fcn.004e1c90
add esp, 8
mov dword [esp + 0x10], 1
jmp case.0x525b78.63
xor ecx, ecx
cmp dword [esi + 0x9c], ecx
mov dword [esp + 0x40], edi
jle 0x527841
cmp dword [esp + 0x34], 1
jne 0x527841
push str.cannot_release_savepoint___SQL_statements_in_progress
mov edi, ebx
call fcn.004e1c90
add esp, 4
mov dword [esp + 0x10], 5
jmp case.0x525b78.63
cmp dword [edi + 0x18], ecx
jne 0x527896
cmp byte [esi + 0x46], 0
je 0x527896
mov eax, 1
mov dword [esp + 0x20], eax
cmp dword [esp + 0x34], eax
jne 0x52789a
push eax
mov eax, ebx
call fcn.004e20c0
add esp, 4
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52a4f2
mov edi, ebx
mov byte [esi + 0x3f], 1
call fcn.0051a3c0
cmp eax, 5
je 0x52a2c9
mov byte [esi + 0x46], 0
mov eax, dword [ebx + 0x50]
mov dword [esp + 0x10], eax
jmp 0x527986
mov dword [esp + 0x20], ecx
mov edx, dword [esi + 0x1f0]
sub edx, dword [esp + 0x1c]
dec edx
cmp dword [esp + 0x34], 2
mov dword [esp + 0x1c], edx
jne 0x527917
mov eax, dword [esi + 0x18]
shr eax, 1
and eax, 1
cmp dword [esi + 0x14], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], ecx
jle 0x52791d
xor edx, edx
cmp eax, ecx
sete dl
mov dword [esp + 0x24], ecx
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + 0x10]
mov edx, dword [esp + 0x24]
push eax
mov eax, dword [ecx + edx + 4]
push 0x204
push eax
call fcn.0050abd0
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
mov eax, dword [esp + 0x38]
add dword [esp + 0x24], 0x10
inc eax
cmp eax, dword [esi + 0x14]
mov dword [esp + 0x38], eax
jl 0x5278d4
mov eax, dword [esp + 0x28]
jmp 0x52791d
xor eax, eax
mov dword [esp + 0x28], eax
xor ecx, ecx
cmp dword [esi + 0x14], ecx
mov dword [esp + 0x38], ecx
jle 0x527970
mov dword [esp + 0x24], ecx
lea esp, [esp]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
mov eax, dword [esi + 0x10]
push ecx
mov ecx, dword [esp + 0x28]
mov eax, dword [eax + ecx + 4]
push edx
call fcn.00504240
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
mov eax, dword [esp + 0x38]
add dword [esp + 0x24], 0x10
inc eax
cmp eax, dword [esi + 0x14]
mov dword [esp + 0x38], eax
jl 0x527930
mov eax, dword [esp + 0x28]
test eax, eax
je 0x52798a
mov eax, esi
call fcn.004c5440
mov edi, esi
call fcn.004dc470
or dword [esi + 0x18], 2
mov edi, dword [esp + 0x40]
cmp dword [esi + 0x1e8], edi
je 0x5279b6
mov eax, dword [esi + 0x1e8]
mov edx, dword [eax + 0x18]
mov ecx, esi
mov dword [esi + 0x1e8], edx
call fcn.004bf680
dec dword [esi + 0x1f0]
cmp dword [esi + 0x1e8], edi
jne 0x527992
cmp dword [esp + 0x34], 1
jne 0x5279e2
mov eax, dword [edi + 0x18]
mov dword [esi + 0x1e8], eax
mov eax, edi
mov ecx, esi
call fcn.004bf680
cmp dword [esp + 0x20], 0
jne case.0x525b78.63
dec dword [esi + 0x1f0]
jmp 0x527a18
cmp dword [esp + 0x20], 0
mov ecx, dword [edi + 8]
mov dword [esi + 0x1f8], ecx
mov edx, dword [edi + 0xc]
mov dword [esi + 0x1fc], edx
mov eax, dword [edi + 0x10]
mov dword [esi + 0x200], eax
mov ecx, dword [edi + 0x14]
mov dword [esi + 0x204], ecx
je 0x527a18
cmp dword [esp + 0x34], 2
jne case.0x525b78.63
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
push edx
push eax
push esi
call fcn.004c92a0
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 8]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x527a6a
cmp byte [esi + 0x3f], 0
jne 0x527a6a
test ecx, ecx
jne 0x527a6a
cmp dword [esi + 0x9c], ecx
jle 0x527a6a
push str.cannot_commit_transaction___SQL_statements_in_progress
jmp 0x52782a
movzx edx, byte [esi + 0x3f]
cmp eax, edx
jne 0x52a2f9
test eax, eax
jne 0x527a81
mov eax, str.cannot_start_a_transaction_within_a_transaction
jmp 0x527a8f
mov eax, str.cannot_rollback___no_transaction_is_active
test ecx, ecx
jne 0x527a8f
mov eax, str.cannot_commit___no_transaction_is_active
push eax
mov edi, ebx
call fcn.004e1c90
add esp, 4
mov dword [esp + 0x10], 1
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x14]
test eax, eax
je 0x527abf
test dword [esi + 0x18], 0x2000000
jne 0x52a38d
mov ecx, dword [ebp + 4]
mov edx, dword [esi + 0x10]
shl ecx, 4
mov edi, dword [ecx + edx + 4]
test edi, edi
je 0x527bb7
push eax
push edi
call fcn.00506440
add esp, 8
mov dword [esp + 0x10], eax
cmp al, 5
je 0x52a39a
test eax, eax
jne 0x52861f
cmp dword [ebp + 8], eax
je 0x527b8a
test byte [ebx + 0x58], 0x20
je 0x527b8a
cmp byte [esi + 0x3f], al
je 0x527b13
cmp dword [esi + 0x98], 1
jle 0x527b8a
cmp dword [ebx + 0x68], 0
jne 0x527b30
inc dword [esi + 0x1f4]
mov eax, dword [esi + 0x1f4]
mov ecx, dword [esi + 0x1f0]
add ecx, eax
mov dword [ebx + 0x68], ecx
mov edx, dword [ebx + 0x68]
dec edx
push edx
push 0
push esi
call fcn.004c92a0
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jne 0x527b5a
mov eax, dword [ebx + 0x68]
push eax
mov eax, edi
call fcn.004cf100
add esp, 4
mov dword [esp + 0x10], eax
mov ecx, dword [esi + 0x1f8]
mov dword [ebx + 0x98], ecx
mov edx, dword [esi + 0x1fc]
mov dword [ebx + 0x9c], edx
mov eax, dword [esi + 0x200]
mov dword [ebx + 0xa0], eax
mov ecx, dword [esi + 0x204]
mov dword [ebx + 0xa4], ecx
lea edx, [esp + 0xd8]
push edx
push 1
mov eax, edi
call fcn.004cf220
mov eax, dword [ebp + 4]
mov ecx, dword [esi + 0x10]
mov edi, dword [esp + 0xe0]
add esp, 8
shl eax, 4
mov edx, dword [eax + ecx + 0xc]
mov eax, dword [edx + 4]
jmp 0x527bc2
xor edi, edi
mov dword [esp + 0xd8], edi
xor eax, eax
cmp byte [ebp + 3], 0
je case.0x525b78.63
cmp edi, dword [ebp + 0xc]
jne 0x527bda
cmp eax, dword [ebp + 0x10]
je case.0x525b78.63
mov eax, dword [ebx + 0x2c]
mov ecx, esi
call fcn.004bf680
push str.database_schema_has_changed
push esi
call fcn.004cbb20
mov dword [ebx + 0x2c], eax
mov eax, dword [ebp + 4]
mov edx, dword [esi + 0x10]
mov ecx, eax
shl ecx, 4
mov ecx, dword [ecx + edx + 0xc]
add esp, 8
cmp dword [ecx], edi
je 0x527c13
mov edi, dword [esp + 0x14]
mov esi, eax
call fcn.004dc440
or dword [ebx + 0x58], 8
mov dword [esp + 0x10], 0x11
jmp case.0x525b78.63
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 4]
lea edx, [esp + 0x128]
push edx
mov edx, dword [esp + 0x18]
push eax
mov eax, dword [edx + 0x10]
shl ecx, 4
mov eax, dword [ecx + eax + 4]
call fcn.004cf220
add esp, 8
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, eax
mov eax, dword [esp + 0x128]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 4]
mov ecx, dword [esp + 0x14]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
shl edi, 4
add edi, dword [ecx + 0x10]
lea esi, [eax + edx*8]
call fcn.004c4630
mov ecx, dword [esi]
mov edx, dword [ebp + 8]
mov eax, dword [edi + 4]
push ecx
push edx
call fcn.00501530
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 8]
add esp, 8
cmp eax, 1
jne 0x527cb4
mov eax, dword [edi + 0xc]
mov ecx, dword [esi]
mov dword [eax], ecx
mov eax, dword [esp + 0x14]
or dword [eax + 0x18], 2
jmp 0x527cc1
cmp eax, 2
jne 0x527cc1
mov edx, dword [edi + 0xc]
mov al, byte [esi]
mov byte [edx + 0x4c], al
cmp dword [ebp + 4], 1
jne case.0x525b78.63
mov eax, dword [esp + 0x14]
call fcn.004c5440
and dword [ebx + 0x58], 0xfffffff7
jmp case.0x525b78.63
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov esi, dword [eax + edx*4]
test esi, esi
je case.0x525b78.55
mov edx, dword [esi + 0xc]
cmp edx, dword [ebp + 8]
je 0x527dfe
test byte [ebx + 0x58], 8
je 0x527d09
mov dword [esp + 0x10], 0x204
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov eax, edx
shl eax, 4
add eax, dword [esi + 0x10]
xor edi, edi
mov esi, dword [eax + 4]
mov dword [esp + 0x44], edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x58], esi
cmp cl, 0x38
jne 0x527d53
movzx ecx, byte [ebp + 3]
and ecx, 8
or ecx, 4
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + 0xc]
mov al, byte [ecx + 0x4c]
cmp al, byte [ebx + 0x57]
jae 0x527d5b
mov byte [ebx + 0x57], al
jmp 0x527d5b
mov dword [esp + 0x54], 0
test byte [ebp + 3], 0x10
je 0x527d87
mov eax, dword [esp + 0x20]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea esi, [eax + edx*8]
call fcn.004c4630
mov esi, dword [esi]
cmp esi, 2
mov dword [esp + 0x20], esi
jl 0x52a3be
mov edx, dword [esp + 0x2c]
mov al, byte [ebp + 1]
cmp al, 0xfa
jne 0x527da1
mov eax, dword [ebp + 0x10]
movzx edi, word [eax + 8]
movzx ecx, word [eax + 6]
mov dword [esp + 0x44], eax
add edi, ecx
jmp 0x527da8
cmp al, 0xf2
jne 0x527da8
mov edi, dword [ebp + 0x10]
push 0
push edx
mov edx, dword [ebp + 4]
push edi
push edx
mov edi, ebx
call fcn.00515fd0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x52a412
mov ecx, dword [esi + 0x14]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x20]
or dword [esi + 8], 4
push ecx
mov ecx, dword [esp + 0x5c]
push edi
push edx
mov byte [esi + 2], 1
mov dword [esi + 0xc], eax
call fcn.004ee060
add esp, 0xc
mov dword [esi + 0x1c], edi
cmp byte [ebp + 1], 0xfa
mov dword [esp + 0x10], eax
setne al
mov byte [esi + 4], al
mov cl, byte [ebp + 3]
mov edx, dword [esi + 0x14]
and cl, 3
mov byte [edx + 0x43], cl
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 4]
push 0
push 0xffffffffffffffff
push eax
push ecx
mov edi, ebx
call fcn.00515fd0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x52a412
or dword [esi + 8], 1
mov eax, dword [esp + 0x14]
mov byte [esi + 2], 1
movzx edx, byte [ebp + 3]
push 0x41e
or edx, 5
push edx
push eax
mov eax, dword [eax]
lea edi, [esi + 0x18]
push 0
push eax
mov ecx, edi
call fcn.00505a40
add esp, 0x14
mov dword [esp + 0x10], eax
test eax, eax
jne 0x527ef1
mov ecx, dword [edi]
push 1
push ecx
call fcn.00506440
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x527ef1
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x527ed2
movzx edx, byte [ebp + 3]
or edx, 2
push edx
lea eax, [esp + 0x124]
push eax
mov eax, dword [edi]
call fcn.005125e0
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x527ecc
mov ecx, dword [esi + 0x14]
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [edi]
push eax
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x128]
push 4
call fcn.004ee060
add esp, 0xc
mov dword [esp + 0x10], eax
mov byte [esi + 4], 0
jmp 0x527ef1
mov edx, dword [esi + 0x14]
mov ecx, dword [edi]
push edx
push 0
push 4
mov eax, 1
call fcn.004ee060
add esp, 0xc
mov dword [esp + 0x10], eax
mov byte [esi + 4], 1
xor eax, eax
cmp byte [ebp + 3], 8
setne al
add eax, eax
add eax, eax
xor eax, dword [esi + 8]
and eax, 4
xor dword [esi + 8], eax
jmp case.0x525b78.63
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 4]
push 1
push 0xffffffffffffffff
push ecx
push edx
mov edi, ebx
call fcn.00515fd0
add esp, 0x10
test eax, eax
je 0x52a412
mov ecx, dword [ebp + 0x10]
mov dword [eax + 0x1c], ecx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [esp + 0x18]
push edx
push eax
call fcn.004d6bb0
add esp, 0xc
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov eax, dword [edx + ecx*4]
mov ecx, dword [eax + 0x28]
mov edx, dword [eax + 0x2c]
mov esi, ecx
add esi, 1
mov edi, edx
adc edi, 0
mov dword [eax + 0x28], esi
mov dword [eax + 0x2c], edi
mov eax, ecx
or eax, edx
je 0x52a1ff
jmp case.0x525b78.63
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 4]
push 3
push 0xffffffffffffffff
push eax
push ecx
mov edi, ebx
call fcn.00515fd0
add esp, 0x10
test eax, eax
je 0x52a412
mov byte [eax + 2], 1
mov edx, dword [ebp + 8]
mov dword [eax + 0x14], edx
mov byte [eax + 4], 1
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebx + 0x38]
mov ecx, dword [ecx + eax*4]
push ebx
call fcn.00515e90
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
add esp, 4
mov dword [eax + edx*4], 0
jmp case.0x525b78.63
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov edi, dword [edx + ecx*4]
cmp byte [edi + 4], 0
mov dword [esp + 0x34], eax
mov dword [esp + 0x20], 0
mov byte [edi + 2], 0
je 0x5280b3
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
mov dl, byte [ecx + eax*8 + 8]
lea esi, [ecx + eax*8]
and dl, 0xe
cmp dl, 2
jne 0x528016
push 0
mov eax, esi
call fcn.004c5c00
add esp, 4
mov ecx, esi
call fcn.004c4500
mov dword [esp + 0xcc], eax
movzx eax, word [esi + 8]
mov dword [esp + 0xd0], edx
test al, 4
jne 0x52806e
test al, 8
je 0x52a1ff
fild qword [esp + 0xcc]
fcom qword [esi]
fnstsw ax
test ah, 0x41
jne 0x52805a
test byte [esp + 0x34], 1
fstp st(0)
je 0x52806e
dec dword [esp + 0x34]
jmp 0x52806e
fcomp qword [esi]
fnstsw ax
test ah, 5
jp 0x52806e
test byte [esp + 0x34], 1
jne 0x52806e
inc dword [esp + 0x34]
mov ecx, dword [esp + 0xd0]
mov esi, dword [esp + 0xcc]
mov edx, dword [edi + 0x14]
lea eax, [esp + 0x5c]
push eax
push 0
push ecx
push esi
push 0
push edx
call fcn.0050b010
mov ecx, dword [esp + 0xe8]
add esp, 0x18
mov dword [esp + 0x10], eax
mov dword [edi + 0x30], esi
mov dword [edi + 0x34], ecx
test eax, eax
jne 0x52861f
xor esi, esi
jmp 0x528150
mov edx, dword [edi + 0x14]
test byte [edx + 0x43], 2
je 0x5280c4
mov dword [esp + 0x20], 1
mov ecx, dword [edi + 0x1c]
mov dx, word [ebp + 0x10]
test al, 1
sete al
mov dword [esp + 0x12c], ecx
mov word [esp + 0x134], dx
mov edx, dword [esp + 0x18]
lea eax, [eax + eax - 1]
mov byte [esp + 0x136], al
mov eax, dword [ebp + 0xc]
lea ecx, [eax + eax*4]
lea esi, [edx + ecx*8]
mov eax, 0x4000
mov dword [esp + 0x130], esi
test word [esi + 8], ax
je 0x52810e
call fcn.004cf4b0
lea ecx, [esp + 0x5c]
push ecx
xor esi, esi
push esi
push esi
push esi
lea edx, [esp + 0x13c]
mov byte [esp + 0x14a], 0
mov eax, dword [edi + 0x14]
push edx
push eax
call fcn.0050b010
add esp, 0x18
mov dword [esp + 0x10], eax
cmp eax, esi
jne 0x52861f
cmp dword [esp + 0x20], esi
je 0x528150
cmp byte [esp + 0x13a], 0
je 0x5281c7
mov ecx, dword [esp + 0x34]
cmp ecx, 0x42
mov byte [edi + 3], 0
mov dword [edi + 0x38], esi
mov eax, dword [esp + 0x5c]
jl 0x528189
cmp eax, esi
jl 0x528175
jne 0x52816f
cmp ecx, 0x43
je 0x528175
mov dword [esp + 0x5c], esi
jmp 0x5281d1
lea ecx, [esp + 0x5c]
mov dword [esp + 0x5c], esi
mov edx, dword [edi + 0x14]
push ecx
push edx
call fcn.00511c50
jmp 0x5281b8
cmp eax, esi
jg 0x5281a6
jne 0x528194
cmp ecx, 0x40
je 0x5281a6
mov eax, dword [edi + 0x14]
xor ecx, ecx
cmp byte [eax + 0x42], 1
setne cl
mov dword [esp + 0x5c], ecx
jmp 0x5281c7
lea edx, [esp + 0x5c]
mov dword [esp + 0x5c], esi
mov eax, dword [edi + 0x14]
push edx
push eax
call fcn.00511dd0
add esp, 8
mov dword [esp + 0x10], eax
cmp eax, esi
jne 0x52861f
cmp dword [esp + 0x5c], esi
jne 0x52a1ff
cmp dword [esp + 0x20], esi
je case.0x525b78.63
add ebp, 0x14
jmp case.0x525b78.63
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov esi, dword [edx + ecx*4]
mov ecx, dword [esp + 0x18]
mov byte [esi + 2], 0
mov eax, dword [ebp + 8]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
call fcn.004c4500
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], edx
mov byte [esi + 3], 1
jmp case.0x525b78.63
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov ecx, dword [eax + edx*4]
mov eax, dword [ebp + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
xor edi, edi
cmp dword [ebp + 0x10], edi
mov dword [esp + 0x20], ecx
lea esi, [eax + edx*8]
mov dword [esp + 0x54], edi
jle 0x52829d
mov ecx, dword [ecx + 0x1c]
mov ax, word [ebp + 0x10]
xor edx, edx
mov dword [esp + 0x164], ecx
mov word [esp + 0x16c], ax
mov dword [esp + 0x168], esi
cmp dx, ax
jae 0x528294
xor esi, esi
mov dword [esp + 0x44], esi
mov ecx, dword [esp + 0x168]
add esi, ecx
mov edx, 0x4000
test word [esi + 8], dx
je 0x528281
call fcn.004cf4b0
mov ax, word [esp + 0x16c]
mov esi, dword [esp + 0x44]
movzx ecx, ax
inc edi
add esi, 0x28
cmp edi, ecx
mov dword [esp + 0x44], esi
jl 0x528260
lea edi, [esp + 0x164]
jmp 0x5282f0
mov eax, dword [esp + 0x20]
mov edi, dword [eax + 0x1c]
lea edx, [esp + 0x54]
push edx
push 0xb7
lea edx, [esp + 0x244]
call fcn.004d0450
mov edi, eax
add esp, 8
test edi, edi
je 0x52a412
mov ecx, 0x4000
test word [esi + 8], cx
je 0x5282d7
call fcn.004cf4b0
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x20]
push edi
push edx
mov edx, dword [ecx + 0x1c]
push eax
push edx
call fcn.004c50e0
add esp, 0x10
mov byte [edi + 0xa], 0
xor esi, esi
cmp byte [ebp], 0x45
jne 0x528328
xor eax, eax
xor ecx, ecx
cmp ax, word [edi + 8]
jae 0x528328
mov eax, dword [edi + 4]
add eax, 8
lea esp, [esp]
test byte [eax], 1
jne 0x528323
movzx edx, word [edi + 8]
inc ecx
add eax, 0x28
cmp ecx, edx
jl 0x528310
jmp 0x528328
mov esi, 1
lea eax, [esp + 0x124]
push eax
push 0
push 0
push 0
push edi
mov edi, dword [esp + 0x34]
mov ecx, dword [edi + 0x14]
push ecx
call fcn.0050b010
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x6c]
add esp, 0x18
call fcn.004bf680
cmp dword [esp + 0x10], 0
jne case.0x525b78.63
mov ecx, dword [esp + 0x124]
xor eax, eax
test ecx, ecx
sete al
mov dl, 1
sub dl, al
mov dword [edi + 0x20], ecx
mov byte [edi + 2], dl
mov byte [edi + 3], 0
mov dword [edi + 0x38], 0
cmp byte [ebp], 0x49
jne 0x528399
test eax, eax
jne 0x52a1ff
jmp case.0x525b78.63
test esi, esi
jne 0x52a1ff
test eax, eax
je 0x52a1ff
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebx + 0x38]
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x18]
mov edx, dword [esi + 0x14]
lea eax, [eax + eax*4]
mov edi, dword [ecx + eax*8]
mov eax, dword [ecx + eax*8 + 4]
lea ecx, [esp + 0x44]
push ecx
push 0
push eax
push edi
push 0
push edx
mov dword [esp + 0x5c], 0
mov dword [esp + 0x220], eax
call fcn.0050b010
mov edx, dword [esp + 0x220]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x5c]
add esp, 0x18
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], edx
mov byte [esi + 2], 0
mov dword [esi + 0x38], 0
mov byte [esi + 3], 0
mov dword [esi + 0x20], eax
test eax, eax
je case.0x525b78.63
cmp dword [ebp + 8], 0
jne 0x52a1ff
mov eax, 0x12fd6
call fcn.004eb240
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edx, dword [ebx + 0x38]
mov ecx, dword [ebp + 4]
mov ecx, dword [edx + ecx*4]
mov edx, dword [ecx + 0x28]
mov dword [eax], edx
mov ecx, dword [ecx + 0x2c]
mov dword [eax + 4], ecx
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov eax, dword [eax + edx*4]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], 0
jmp case.0x525b78.63
mov esi, dword [esp + 0x88]
xor edi, edi
xor ebx, ebx
mov eax, ebp
mov edx, esi
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], edi
mov dword [esp + 0x38], edi
call fcn.004c5d60
mov ecx, dword [ebp + 4]
mov edx, dword [esi + 0x38]
mov esi, dword [edx + ecx*4]
test byte [esi + 8], 2
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], esi
jne 0x52850c
mov eax, dword [esi + 0x14]
lea edi, [esp + 0x38]
call fcn.0050afc0
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
cmp dword [esp + 0x38], eax
je 0x5284c9
lea ebx, [eax + 1]
xor edi, edi
jmp 0x528504
mov edi, dword [esi + 0x14]
mov eax, edi
call fcn.004c40c0
mov ebx, dword [edi + 0x10]
mov edi, dword [edi + 0x14]
cmp edi, 0x7fffffff
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], edi
mov dword [esp + 0x10], 0
jl 0x5284fe
jg 0x5284f8
cmp ebx, 0xffffffff
jb 0x5284fe
or dword [esi + 8], 2
jmp 0x52850c
add ebx, 1
adc edi, 0
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], ebx
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x52859c
mov eax, dword [esp + 0x88]
mov ecx, dword [eax + 0xb0]
test ecx, ecx
je 0x528544
mov eax, dword [ecx + 4]
test eax, eax
je 0x528539
nop
mov ecx, eax
mov eax, dword [ecx + 4]
test eax, eax
jne 0x528530
mov eax, dword [ecx + 0x10]
lea edx, [edx + edx*4]
lea esi, [eax + edx*8]
jmp 0x52854e
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x18]
lea esi, [edx + ecx*8]
call fcn.004c4630
mov eax, dword [esi]
mov ecx, dword [esi + 4]
cmp eax, 0xffffffff
jne 0x528569
cmp ecx, 0x7fffffff
je 0x528617
mov edx, dword [esp + 0x1c]
test byte [edx + 8], 2
jne 0x528617
add eax, 1
adc ecx, 0
cmp edi, ecx
jg 0x528593
jl 0x528587
cmp ebx, eax
jae 0x528593
mov ebx, eax
mov edi, ecx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], edi
mov dword [esi], ebx
mov dword [esi + 4], edi
mov esi, dword [esp + 0x1c]
test byte [esi + 8], 2
je 0x52863a
mov dword [esp + 0x44], 0
mov edi, edi
lea eax, [esp + 0x78]
push eax
push 8
call fcn.004ff650
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x80]
mov edx, dword [esi + 0x14]
lea ecx, [esp + 0x40]
push ecx
and edi, 0x3fffffff
add ebx, 1
push 0
adc edi, 0
push edi
push ebx
push 0
push edx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], edi
call fcn.0050b010
add esp, 0x20
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52863a
cmp dword [esp + 0x38], eax
jne 0x52863a
mov eax, dword [esp + 0x44]
inc eax
cmp eax, 0x64
mov dword [esp + 0x44], eax
jl 0x5285b0
mov dword [esp + 0x10], 0xd
mov esi, dword [esp + 0x14]
cmp byte [esi + 0x41], 0
je 0x52a3d1
mov dword [esp + 0x10], 7
jmp 0x52a3df
mov eax, dword [esp + 0x28]
mov byte [esi + 3], 0
mov dword [esi + 0x38], 0
mov dword [eax], ebx
mov ebx, dword [esp + 0x88]
mov dword [eax + 4], edi
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov esi, dword [ebx + 0x38]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea edi, [eax + edx*8]
mov edx, dword [ebp + 4]
mov esi, dword [esi + edx*4]
cmp cl, 0x5f
jne 0x528692
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx + ecx*4]
mov edx, dword [eax + ecx*8]
mov eax, dword [eax + ecx*8 + 4]
mov dword [esp + 0xa0], edx
mov dword [esp + 0xa4], eax
jmp 0x5286ad
mov eax, dword [ebp + 0xc]
cdq
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
mov eax, edx
mov edx, dword [esp + 0xa0]
test byte [ebp + 3], 1
je 0x5286b6
inc dword [ebx + 0x5c]
test byte [ebp + 3], 2
je 0x5286ce
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], eax
mov dword [ecx + 0x20], edx
mov dword [ecx + 0x24], eax
movzx eax, word [edi + 8]
test al, 1
je 0x5286de
xor ecx, ecx
mov dword [edi + 0x10], ecx
mov dword [edi + 0xc], ecx
mov dl, byte [ebp + 3]
test dl, 0x10
je 0x5286eb
mov ecx, dword [esi + 0x20]
jmp 0x5286ed
xor ecx, ecx
test eax, 0x4000
je 0x5286f8
mov eax, dword [edi]
jmp 0x5286fa
xor eax, eax
push ecx
movzx ecx, dl
mov edx, dword [edi + 0xc]
shr ecx, 3
and ecx, 1
push ecx
mov ecx, dword [esp + 0xac]
push eax
mov eax, dword [edi + 0x10]
mov edi, dword [esi + 0x14]
push edx
mov edx, dword [esp + 0xb0]
push eax
push ecx
push edx
push 0
call fcn.00511e20
add esp, 0x20
mov dword [esp + 0x10], eax
mov byte [esi + 3], 0
mov dword [esi + 0x38], 0
test eax, eax
jne case.0x525b78.63
mov edi, dword [esp + 0x14]
mov ecx, dword [edi + 0xd4]
test ecx, ecx
je case.0x525b78.63
mov eax, dword [ebp + 0x10]
test eax, eax
je case.0x525b78.63
mov edx, dword [esp + 0xa4]
push edx
mov edx, dword [esp + 0xa4]
push edx
mov edx, dword [edi + 0x10]
push eax
movsx eax, byte [esi + 1]
shl eax, 4
mov eax, dword [eax + edx]
mov dl, byte [ebp + 3]
push eax
and dl, 4
movzx eax, dl
mov edx, dword [edi + 0xd0]
neg eax
sbb eax, eax
and eax, 5
add eax, 0x12
push eax
push edx
call ecx
add esp, 0x18
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebx + 0x38]
mov edx, dword [esp + 0x14]
cmp dword [edx + 0xd4], 0
mov esi, dword [ecx + eax*4]
mov dword [esp + 0x44], esi
je 0x5287cd
cmp dword [ebp + 0x10], 0
je 0x5287cd
cmp byte [esi + 4], 0
je 0x5287cd
mov al, 1
jmp 0x5287cf
xor al, al
cmp byte [ebp + 3], 0
mov byte [esp + 0x3f], al
je 0x5287f0
test al, al
je 0x5287f0
mov eax, dword [esp + 0x44]
mov esi, dword [eax + 0x14]
lea edi, [eax + 0x30]
call fcn.004c4100
mov esi, dword [esp + 0x44]
movzx eax, byte [ebp + 3]
mov edi, dword [esi + 0x14]
push eax
call fcn.00512040
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esi + 0x38], 0
test eax, eax
jne 0x528847
cmp byte [esp + 0x3f], al
je 0x528847
mov ecx, dword [esi + 0x34]
mov edx, dword [esi + 0x30]
mov eax, dword [ebp + 0x10]
push ecx
movsx ecx, byte [esi + 1]
push edx
push eax
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x10]
shl ecx, 4
mov ecx, dword [ecx + edx]
mov edx, dword [eax + 0xd0]
mov eax, dword [eax + 0xd4]
push ecx
push 9
push edx
call eax
add esp, 0x18
test byte [ebp + 8], 1
je case.0x525b78.63
inc dword [ebx + 0x5c]
jmp case.0x525b78.63
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esp + 0x14]
add dword [ecx + 0x54], eax
mov dword [ecx + 0x50], eax
mov dword [ebx + 0x5c], 0
jmp case.0x525b78.63
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov eax, dword [edx + ecx*4]
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x18]
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*8]
mov edx, dword [ebp + 0x10]
lea esi, [esp + 0x6c]
push esi
push edx
push ecx
mov dword [esp + 0x78], 0
call fcn.004f0110
add esp, 0xc
cmp dword [esp + 0x6c], 0
mov dword [esp + 0x10], eax
jne 0x52a1ff
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x18]
mov edx, dword [ebp + 4]
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov eax, dword [ebx + 0x38]
mov eax, dword [eax + edx*4]
call fcn.004d1240
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebx + 0x38]
mov dword [esp + 0x10], eax
mov eax, dword [edx + ecx*4]
mov dword [eax + 0x38], 0
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
mov eax, dword [ebp + 4]
lea edi, [edx + ecx*8]
mov ecx, dword [ebx + 0x38]
mov eax, dword [ecx + eax*4]
mov esi, dword [eax + 0x14]
cmp byte [eax + 4], 0
mov dword [esp + 0x2c], eax
mov eax, esi
jne 0x52893b
call fcn.004c40c0
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x58]
mov ecx, dword [esi + 0x14]
cdq
cmp ecx, edx
jg 0x5266bd
jl 0x528932
cmp dword [esi + 0x10], eax
ja 0x5266bd
mov eax, dword [esi + 0x10]
mov dword [esp + 0x20], eax
jmp 0x528954
call fcn.004c40c0
mov eax, dword [esi + 0x1c]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], eax
cmp eax, dword [ecx + 0x58]
ja 0x5266bd
cmp eax, 0x20
ja 0x52895e
mov eax, 0x20
mov ecx, edi
call fcn.004cf490
test eax, eax
jne 0x52a412
mov dx, word [edi + 8]
mov ecx, dword [esp + 0x20]
mov eax, 0xbe10
and dx, ax
mov eax, dword [edi + 0x10]
or dx, 0x10
mov word [edi + 8], dx
mov edx, dword [esp + 0x2c]
mov dword [edi + 0xc], ecx
cmp byte [edx + 4], 0
jne 0x5289b1
push 0
push eax
push ecx
push 0
push esi
call fcn.00506b90
add esp, 0x14
mov dword [esp + 0x10], eax
mov byte [edi + 0xa], 1
jmp case.0x525b78.63
push eax
push ecx
push 0
push esi
call fcn.00511b10
add esp, 0x10
mov dword [esp + 0x10], eax
mov byte [edi + 0xa], 1
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov esi, dword [edx + ecx*4]
cmp byte [esi + 2], 0
mov edi, eax
mov dword [esp + 0x28], edi
je 0x5289f7
mov eax, 1
mov word [edi + 8], ax
jmp case.0x525b78.63
cmp byte [esi + 3], 0
je 0x528a0f
mov ecx, dword [esi + 0x30]
mov dword [esp + 0xc4], ecx
mov edx, dword [esi + 0x34]
jmp 0x528a98
cmp byte [esi], 2
jne 0x528a53
mov esi, dword [esi + 0x14]
mov edi, dword [esi]
mov eax, dword [edi]
mov edx, dword [eax + 0x30]
lea ecx, [esp + 0xc4]
push ecx
push esi
call edx
push edi
push ebx
mov dword [esp + 0x20], eax
call fcn.004d04b0
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0xd4]
mov dword [edi], eax
mov ecx, dword [esp + 0xd8]
add esp, 0x10
mov dword [edi + 4], ecx
jmp case.0x525b78.63
mov eax, esi
call fcn.00514280
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
cmp byte [esi + 2], al
je 0x528a79
mov eax, 1
mov word [edi + 8], ax
jmp case.0x525b78.63
mov esi, dword [esi + 0x14]
mov eax, esi
call fcn.004c40c0
mov ecx, dword [esi + 0x10]
mov dword [esp + 0xc4], ecx
mov edx, dword [esi + 0x14]
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0xc4]
mov dword [esp + 0xc8], edx
mov dword [edi], eax
mov ecx, dword [esp + 0xc8]
mov dword [edi + 4], ecx
jmp case.0x525b78.63
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov eax, dword [eax + edx*4]
cmp byte [eax], 0
mov byte [eax + 2], 1
mov dword [eax + 0x38], 0
jne case.0x525b78.63
mov esi, dword [eax + 0x14]
call fcn.004c3b60
jmp case.0x525b78.63
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov esi, dword [edx + ecx*4]
mov eax, dword [esi + 0x14]
lea edi, [esp + 0x40]
mov dword [esp + 0x40], 0
call fcn.0050afc0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x40]
mov byte [esi + 2], al
mov byte [esi + 3], 0
mov dword [esi + 0x38], 0
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x20], ecx
cmp dword [ebp + 8], 0
jle case.0x525b78.63
test eax, eax
jne 0x52a1ff
jmp case.0x525b78.63
inc dword [ebx + 0x74]
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov esi, dword [eax + edx*4]
cmp byte [esi], 1
mov dword [esp + 0x44], esi
mov dword [esp + 0x1c], 1
jne 0x528b5b
lea edi, [esp + 0x1c]
mov ecx, esi
call fcn.004f00b0
jmp 0x528b96
mov edi, dword [esp + 0x44]
mov esi, dword [edi + 0x14]
call fcn.0050ad40
test eax, eax
jne 0x528b87
cmp byte [esi + 0x42], al
jne 0x528b7a
mov dword [esp + 0x1c], 1
jmp 0x528b87
mov dword [esp + 0x1c], 0
call fcn.0050ae70
mov esi, dword [esp + 0x44]
mov byte [edi + 3], 0
mov dword [edi + 0x38], 0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
mov byte [esi + 2], al
test eax, eax
jne 0x52a1ff
jmp case.0x525b78.63
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov edi, dword [edx + ecx*4]
mov esi, dword [esp + 0x14]
lea eax, [esp + 0x9c]
push eax
push esi
mov eax, edi
mov dword [esp + 0xa4], 0
call fcn.004d74c0
jmp 0x528c10
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
cmp dword [edx + ecx*4], 0
je case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebx + 0x38]
mov edi, dword [ecx + eax*4]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x9c], edx
mov ecx, dword [edi + 0x14]
mov edx, dword [ebp + 0x10]
lea eax, [esp + 0x9c]
push eax
push ecx
call edx
mov esi, dword [esp + 0x1c]
add esp, 8
mov dword [edi + 0x38], 0
cmp dword [esp + 0x9c], 0
mov dword [esp + 0x10], eax
jne 0x528c4c
mov edx, dword [esp + 0x48]
mov byte [edi + 2], 0
movzx eax, byte [ebp + 3]
inc dword [ebx + eax*4 + 0x6c]
mov ebp, dword [ebp + 8]
lea eax, [ebx + eax*4 + 0x6c]
lea ecx, [ebp + ebp*4]
lea ebp, [edx + ecx*4 - 0x14]
jmp 0x5292fd
mov byte [edi + 2], 1
jmp 0x5292fd
test byte [ebp + 3], 1
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov esi, dword [edx + ecx*4]
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
mov dword [esp + 0x2c], esi
lea edi, [ecx + eax*8]
je 0x528c78
inc dword [ebx + 0x5c]
mov edx, 0x4000
test word [edi + 8], dx
je 0x528c9a
mov esi, edi
call fcn.004cf4b0
mov dword [esp + 0x10], eax
test eax, eax
jne case.0x525b78.63
mov esi, dword [esp + 0x2c]
cmp byte [ebp], 0x6f
jne 0x528cb4
push edi
mov eax, esi
call fcn.004efd10
add esp, 4
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
test byte [ebp + 3], 0x10
mov eax, dword [edi + 0xc]
mov edi, dword [edi + 0x10]
je 0x528cc5
mov ecx, dword [esi + 0x20]
jmp 0x528cc7
xor ecx, ecx
push ecx
mov ecx, dword [ebp + 0xc]
push ecx
push 0
push 0
cdq
push 0x59603e
push edx
push eax
push edi
mov edi, dword [esi + 0x14]
call fcn.00511e20
add esp, 0x20
mov dword [esp + 0x10], eax
mov dword [esi + 0x38], 0
jmp case.0x525b78.63
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov esi, dword [eax + edx*4]
mov ecx, dword [esi + 0x1c]
mov edi, dword [esi + 0x14]
mov dx, word [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [esp + 0x1e4], ecx
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
mov word [esp + 0x1ec], dx
lea edx, [ecx + eax*8]
lea eax, [esp + 0x100]
push eax
push 0
push 0
push 0
lea ecx, [esp + 0x1f4]
push ecx
push edi
mov byte [esp + 0x206], 0
mov dword [esp + 0x200], edx
call fcn.0050b010
add esp, 0x18
mov dword [esp + 0x10], eax
test eax, eax
jne 0x528d6f
cmp dword [esp + 0x100], eax
jne 0x528d6f
push eax
call fcn.00512040
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esi + 0x38], 0
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edx, dword [ebp + 4]
mov edi, eax
mov eax, dword [ebx + 0x38]
mov esi, dword [eax + edx*4]
mov ecx, dword [esi + 0x14]
mov edx, 1
mov eax, esi
mov dword [esp + 0x2c], ecx
mov word [edi + 8], dx
call fcn.00514280
xor ecx, ecx
mov dword [esp + 0x10], eax
cmp eax, ecx
jne 0x52861f
cmp byte [esi + 2], cl
jne case.0x525b78.63
lea eax, [esp + 0xdc]
mov dword [esp + 0xdc], ecx
mov dword [esp + 0xe0], ecx
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x30]
push ecx
call fcn.005142d0
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52861f
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 0xe0]
mov ecx, 4
mov dword [edi], edx
mov dword [edi + 4], eax
mov word [edi + 8], cx
jmp case.0x525b78.63
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov eax, dword [eax + edx*4]
mov edx, dword [eax + 0x1c]
cmp cl, 0x75
sbb cl, cl
mov dword [esp + 0x1f4], edx
mov dx, word [ebp + 0x10]
mov byte [esp + 0x1fe], cl
mov ecx, dword [ebp + 0xc]
mov word [esp + 0x1fc], dx
lea edx, [ecx + ecx*4]
mov ecx, dword [esp + 0x18]
lea edx, [ecx + edx*8]
lea ecx, [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1fc], edx
lea edx, [esp + 0x1f8]
push edx
push ecx
mov dword [esp + 0x2c], 0
call fcn.00514420
add esp, 0xc
test byte [ebp], 1
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
je 0x528e84
neg eax
jmp 0x528e85
inc eax
test eax, eax
jg 0x52a1ff
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edi, eax
mov eax, dword [esp + 0x14]
mov edx, 1
mov word [edi + 8], dx
mov ecx, dword [eax + 0xa4]
inc ecx
cmp dword [eax + 0x98], ecx
jle 0x528eca
mov dword [esp + 0x10], 6
mov byte [ebx + 0x56], 2
jmp case.0x525b78.63
mov ecx, dword [ebp + 0xc]
mov eax, dword [eax + 0x10]
lea edx, [esp + 0x28]
push edx
mov edx, dword [ebp + 4]
mov dword [esp + 0x48], ecx
shl ecx, 4
mov eax, dword [ecx + eax + 4]
push edx
mov dword [esp + 0x30], 0
call fcn.00512930
mov esi, dword [esp + 0x30]
mov ecx, eax
mov edx, 4
mov eax, esi
mov word [edi + 8], dx
cdq
add esp, 8
mov dword [esp + 0x10], ecx
mov dword [edi], eax
mov dword [edi + 4], edx
test ecx, ecx
jne case.0x525b78.63
test esi, esi
je case.0x525b78.63
mov edi, dword [ebp + 4]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x14]
call fcn.004c7780
mov al, byte [esp + 0x44]
inc al
mov byte [esp + 0x53], al
jmp case.0x525b78.63
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 4]
neg eax
sbb eax, eax
lea ecx, [esp + 0x58]
and eax, ecx
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [ebp + 8]
push edx
mov edx, dword [ecx + 0x10]
shl eax, 4
mov dword [esp + 0x60], 0
mov eax, dword [eax + edx + 4]
call fcn.00512630
add esp, 8
cmp dword [ebp + 0xc], 0
mov dword [esp + 0x10], eax
je case.0x525b78.63
mov eax, dword [esp + 0x58]
add dword [ebx + 0x5c], eax
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jle case.0x525b78.63
mov edx, dword [esp + 0x18]
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*8]
cdq
add dword [ecx], eax
adc dword [ecx + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebx + 0x38]
mov eax, dword [ecx + eax*4]
cmp byte [eax], 1
jne 0x528fca
mov edx, dword [eax + 0x14]
mov eax, dword [esp + 0x14]
push edx
push eax
call fcn.004d6d70
add esp, 8
jmp case.0x525b78.63
mov eax, dword [eax + 0x14]
mov ecx, dword [eax + 0x34]
mov eax, dword [eax]
push 0
push ecx
call fcn.00512630
add esp, 8
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edx, dword [esp + 0x14]
mov esi, eax
mov eax, dword [ebp + 4]
shl eax, 4
add eax, dword [edx + 0x10]
xor ecx, ecx
cmp byte [ebp], 0x7b
mov eax, dword [eax + 4]
setne cl
mov dword [esp + 0x2c], 0
inc ecx
push ecx
lea ecx, [esp + 0x30]
push ecx
call fcn.005125e0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x34]
cdq
add esp, 8
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, str.sqlite_temp_master
cmp eax, 1
je 0x529046
mov ecx, str.sqlite_master
mov esi, dword [esp + 0x14]
lea edx, [ebx + 0x2c]
mov dword [esp + 0x148], edx
mov edx, dword [ebp + 0x10]
push edx
push ecx
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x154], eax
shl eax, 4
mov dword [esp + 0x14c], esi
mov edx, dword [eax + ecx]
push edx
push str.SELECT_name__rootpage__sql_FROM__q._s_WHERE__s_ORDER_BY_rowid
call fcn.004e0090
mov edi, eax
add esp, 0x10
test edi, edi
jne 0x52908e
mov dword [esp + 0x10], 7
jmp 0x5290e3
push 0
lea eax, [esp + 0x148]
push eax
push fcn.005258e0
push edi
push esi
mov byte [esi + 0x91], 1
mov dword [esp + 0x164], 0
call fcn.0052b6b0
add esp, 0x14
mov dword [esp + 0x10], eax
test eax, eax
jne 0x5290cc
mov ecx, dword [esp + 0x150]
mov dword [esp + 0x10], ecx
mov eax, edi
mov ecx, esi
call fcn.004bf680
cmp dword [esp + 0x10], 0
mov byte [esi + 0x91], 0
je 0x5290ea
mov edi, esi
call fcn.004dc470
cmp dword [esp + 0x10], 7
je 0x52a412
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov edi, dword [esp + 0x14]
call fcn.004e3d20
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 4]
mov edi, dword [esp + 0x14]
push edx
call fcn.004d81e0
add esp, 4
jmp case.0x525b78.63
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [ebp + 4]
push ecx
call fcn.004d2420
add esp, 8
jmp case.0x525b78.63
mov edx, dword [ebp + 0x10]
mov eax, dword [esp + 0x14]
push edx
push eax
mov eax, dword [ebp + 4]
call fcn.004d3840
add esp, 8
jmp case.0x525b78.63
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x14]
lea ecx, [eax*4 + 4]
push 0
push ecx
mov dword [esp + 0x24], eax
call fcn.004cb940
add esp, 8
mov dword [esp + 0x38], eax
test eax, eax
je 0x52a412
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x18]
lea edx, [eax + eax*4]
mov eax, dword [ebp + 4]
lea eax, [eax + eax*4]
xor esi, esi
cmp dword [esp + 0x1c], esi
lea eax, [ecx + eax*8]
lea edi, [ecx + edx*8]
mov dword [esp + 0x28], eax
jle 0x5291cc
mov dword [esp + 0x20], eax
jmp 0x5291b0
mov ecx, dword [esp + 0x20]
call fcn.004c4500
mov ecx, dword [esp + 0x38]
add dword [esp + 0x20], 0x28
mov dword [ecx + esi*4], eax
inc esi
cmp esi, dword [esp + 0x1c]
jl 0x5291b0
mov eax, dword [esp + 0x38]
mov dword [eax + esi*4], 0
mov ecx, dword [edi]
mov esi, dword [esp + 0x14]
lea edx, [esp + 0x114]
push edx
mov edx, dword [esp + 0x20]
push ecx
mov ecx, dword [esi + 0x10]
push edx
push eax
movzx eax, byte [ebp + 3]
shl eax, 4
mov edx, dword [eax + ecx + 4]
push edx
call fcn.00508470
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x4c]
add esp, 0x14
mov ecx, esi
call fcn.004bf680
mov esi, dword [esp + 0x114]
mov eax, esi
cdq
sub dword [edi], eax
mov eax, dword [esp + 0x28]
sbb dword [edi + 4], edx
call fcn.004c4740
test esi, esi
je 0x529251
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x52a412
mov ecx, dword [esp + 0x28]
push fcn.004bf5d0
push 1
push eax
or eax, 0xffffffff
call fcn.004da840
add esp, 0xc
movzx ecx, byte [esp + 0x4f]
mov eax, dword [esp + 0x28]
call fcn.004da750
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
test byte [ecx + eax*8 + 8], 0x20
lea edi, [ecx + eax*8]
mov eax, dword [ebp + 8]
lea edx, [eax + eax*4]
lea esi, [ecx + edx*8]
jne 0x529290
call fcn.004cf570
test byte [edi + 8], 0x20
je 0x52a412
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov edi, dword [edi]
push eax
push ecx
call fcn.004cd380
add esp, 8
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
test byte [eax + edx*8 + 8], 0x20
lea edi, [eax + edx*8]
je 0x529366
mov eax, dword [edi]
lea esi, [esp + 0x15c]
call fcn.004c24b0
test eax, eax
je 0x529366
mov ecx, dword [esp + 0x160]
mov eax, dword [ebp + 0xc]
mov edx, dword [esp + 0x15c]
push ecx
mov ecx, dword [esp + 0x1c]
lea eax, [eax + eax*4]
push edx
lea eax, [ecx + eax*8]
call fcn.004c47a0
add esp, 8
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0xf0]
test eax, eax
jne 0x52a433
mov edi, dword [esi + 0x124]
test edi, edi
je case.0x525b78.63
mov ecx, dword [esp + 0x68]
cmp ecx, dword [esp + 0x98]
jb case.0x525b78.63
mov ecx, dword [esi + 0x12c]
mov eax, dword [esp + 0x68]
xor edx, edx
div ecx
sub ecx, edx
add ecx, dword [esp + 0x68]
mov edx, dword [esi + 0x128]
push edx
mov dword [esp + 0x9c], ecx
call edi
add esp, 4
test eax, eax
je case.0x525b78.63
mov dword [esp + 0x10], 9
jmp 0x52a469
mov eax, edi
call fcn.004c4740
jmp case.0x525b78.14
mov eax, dword [ebp + 4]
mov esi, dword [esp + 0x18]
lea edx, [eax + eax*4]
test byte [esi + edx*8 + 8], 0x20
mov eax, dword [ebp + 0xc]
lea eax, [eax + eax*4]
lea edi, [esi + edx*8]
lea esi, [esi + eax*8]
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x2c], eax
jne 0x5293a9
call fcn.004cf570
test byte [edi + 8], 0x20
je 0x52a412
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x529290
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push ecx
push edx
push eax
mov eax, dword [edi]
call fcn.004cd420
add esp, 0xc
test eax, eax
jne 0x52a1ff
mov eax, dword [esp + 0x2c]
test eax, eax
jl case.0x525b78.63
jmp 0x529290
cmp byte [ebp + 3], 0
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea edx, [eax + edx*8]
mov dword [esp + 0x20], edx
je 0x529413
mov eax, dword [ebx + 0xb0]
mov ecx, dword [edi + 0x14]
test eax, eax
je 0x529413
cmp dword [eax + 0x1c], ecx
je case.0x525b78.63
mov eax, dword [eax + 4]
test eax, eax
jne 0x529403
mov ecx, dword [ebx + 0xb8]
mov eax, dword [esp + 0x14]
cmp ecx, dword [eax + 0x80]
jl 0x529441
push str.too_many_levels_of_trigger_recursion
mov edi, ebx
mov dword [esp + 0x14], 1
call fcn.004e1c90
add esp, 4
jmp case.0x525b78.63
test byte [edx + 8], 0x40
jne 0x529525
mov ecx, dword [edi + 0xc]
mov eax, dword [edi + 8]
add eax, ecx
lea edx, [eax + eax*4 + 0xa]
mov dword [esp + 0x2c], eax
lea eax, [ecx + edx*2]
mov ecx, dword [edi + 0x10]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x14]
cdq
push edx
push eax
call fcn.004d5b40
mov esi, eax
add esp, 8
test esi, esi
je 0x52a412
mov eax, dword [esp + 0x20]
call fcn.004c4480
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
mov dword [eax], esi
sub ebp, dword [esp + 0x48]
mov edx, 0x40
mov word [eax + 8], dx
mov dword [esi + 0x3c], ecx
mov dword [esi], ebx
mov eax, dword [edi + 0xc]
mov dword [esi + 0x40], eax
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esi + 0x2c], eax
mov edx, dword [ebx + 8]
mov dword [esi + 0x10], edx
mov eax, dword [ebx + 0x1c]
mov dword [esi + 0x34], eax
mov edx, dword [ebx + 0x38]
mov dword [esi + 0x18], edx
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x28], eax
mov edx, dword [ebx + 4]
mov dword [esi + 8], edx
mov eax, dword [ebx + 0x20]
mov dword [esi + 0x30], eax
mov edx, dword [edi + 0x14]
mov dword [esi + 0x1c], edx
mov eax, dword [ebx + 0xc8]
mov dword [esi + 0x14], eax
mov edx, dword [ebx + 0xc4]
lea eax, [ecx + ecx*4 + 0xa]
lea ecx, [esi + eax*8]
lea eax, [esi + 0x50]
mov dword [esi + 0x38], edx
cmp eax, ecx
je 0x52952b
mov edx, dword [esp + 0x14]
lea ebx, [ebx]
mov ebp, 0x80
mov word [eax + 8], bp
mov dword [eax + 0x20], edx
add eax, 0x28
cmp eax, ecx
jne 0x529510
jmp 0x52952b
mov ecx, dword [esp + 0x20]
mov esi, dword [ecx]
inc dword [ebx + 0xb8]
mov edx, dword [ebx + 0xb0]
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov dword [esi + 0x20], eax
mov dword [esi + 4], edx
mov dword [esi + 0x24], ecx
mov edx, dword [ebx + 0x5c]
mov dword [esi + 0x44], edx
mov eax, dword [ebx]
mov ecx, dword [eax + 0x50]
mov dword [esi + 0x48], ecx
mov dword [ebx + 0x5c], 0
mov dword [ebx + 0xb0], esi
lea ecx, [esi + 0x28]
mov dword [ebx + 8], ecx
mov edx, dword [esi + 0x3c]
mov dword [ebx + 0x1c], edx
movzx eax, word [esi + 0x40]
mov dword [ebx + 0x24], eax
mov eax, edx
inc eax
lea edx, [eax + eax*4]
lea eax, [ecx + edx*8]
mov edx, dword [ebx + 0x24]
mov dword [ebx + 0x38], eax
mov ebp, dword [edi]
mov dword [ebx + 4], ebp
mov dword [esp + 0x18], ecx
mov ecx, dword [edi + 4]
lea eax, [eax + edx*4]
mov dword [ebx + 0x20], ecx
mov dword [ebx + 0xc8], eax
mov edi, dword [edi + 0x10]
push edi
push 0
mov dword [esp + 0x50], ebp
push eax
mov dword [ebx + 0xc4], edi
add ebp, 0xffffffec
call fcn.00412eb0
add esp, 0xc
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edx, dword [ebx + 0xb0]
mov ecx, dword [edx + 0x2c]
mov esi, dword [edx + 8]
mov edx, dword [edx + 0x10]
lea ecx, [ecx + ecx*4]
mov ecx, dword [esi + ecx*4 + 4]
add ecx, dword [ebp + 4]
push 0x1000
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*8]
push ecx
push eax
call fcn.004c4890
add esp, 0xc
jmp case.0x525b78.63
mov ecx, dword [esp + 0x14]
test dword [ecx + 0x18], 0x1000000
mov eax, dword [ebp + 8]
cdq
je 0x52961c
add dword [ecx + 0x200], eax
adc dword [ecx + 0x204], edx
jmp case.0x525b78.63
cmp dword [ebp + 4], 0
je 0x529633
add dword [ecx + 0x1f8], eax
adc dword [ecx + 0x1fc], edx
jmp case.0x525b78.63
add dword [ebx + 0x90], eax
adc dword [ebx + 0x94], edx
jmp case.0x525b78.63
cmp dword [ebp + 4], 0
je 0x529662
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 0x1f8]
or edx, dword [eax + 0x1fc]
jne case.0x525b78.63
jmp 0x529678
mov edx, dword [ebx + 0x90]
or edx, dword [ebx + 0x94]
jne case.0x525b78.63
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x200]
or ecx, dword [eax + 0x204]
je 0x52a1ff
jmp case.0x525b78.63
mov ecx, dword [ebx + 0xb0]
test ecx, ecx
je 0x5296b7
mov eax, dword [ecx + 4]
test eax, eax
je 0x5296a9
mov ecx, eax
mov eax, dword [ecx + 4]
test eax, eax
jne 0x5296a0
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [ecx + 0x10]
lea edi, [eax + edx*8]
jmp 0x5296c4
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
lea edi, [edx + ecx*8]
mov esi, edi
call fcn.004c4630
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
call fcn.004c4630
mov eax, dword [esi]
mov esi, dword [esi + 4]
mov edx, dword [edi + 4]
cmp edx, esi
jg case.0x525b78.63
jl 0x5296f9
mov ecx, dword [edi]
cmp ecx, eax
jae case.0x525b78.63
mov dword [edi], eax
mov dword [edi + 4], esi
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov esi, dword [eax + edx*8 + 4]
mov edi, dword [eax + edx*8]
lea ecx, [eax + edx*8]
test esi, esi
jl case.0x525b78.63
jg 0x529729
test edi, edi
jbe case.0x525b78.63
mov eax, dword [ebp + 0xc]
cdq
sub edi, eax
sbb esi, edx
mov dword [ecx], edi
mov dword [ecx + 4], esi
jmp 0x52a1ff
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
cmp dword [ecx + eax*8 + 4], 0
jg case.0x525b78.63
jl 0x52975c
cmp dword [ecx + eax*8], 0
ja case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
mov esi, dword [edx + ecx*8]
mov edi, dword [edx + ecx*8 + 4]
lea ecx, [edx + ecx*8]
mov eax, esi
or eax, edi
je case.0x525b78.63
mov eax, dword [ebp + 0xc]
cdq
sub esi, eax
sbb edi, edx
mov dword [ecx], esi
mov dword [ecx + 4], edi
jmp 0x52a1ff
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
add dword [edx + ecx*8], 0xffffffff
lea eax, [edx + ecx*8]
mov ecx, dword [eax]
adc dword [eax + 4], 0xffffffff
or ecx, dword [eax + 4]
je 0x52a1ff
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + edx*8]
lea eax, [eax + edx*8]
mov edx, dword [eax + 4]
mov esi, ecx
add esi, 1
mov edi, edx
adc edi, 0
mov dword [eax], esi
mov dword [eax + 4], edi
mov eax, ecx
or eax, edx
je 0x52a1ff
jmp case.0x525b78.63
movzx eax, byte [ebp + 3]
mov esi, dword [esp + 0x14]
lea ecx, [eax*4 + 0x1c]
push 0
push ecx
mov dword [esp + 0x34], eax
call fcn.004cb940
mov ecx, eax
add esp, 8
test ecx, ecx
je 0x52a412
mov dword [ecx + 8], 0
mov edx, dword [ebp + 0x10]
mov dword [ecx + 4], edx
mov edx, ebp
sub edx, dword [esp + 0x48]
mov eax, 0x66666667
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dl, byte [esp + 0x2c]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0xc], ebx
mov byte [ecx + 0x1a], dl
mov byte [ebp + 1], 0xec
mov dword [ebp + 0x10], ecx
mov byte [ebp], 0x91
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x18]
mov esi, dword [ebp + 0x10]
lea eax, [eax + eax*4]
lea eax, [edi + eax*8]
mov dword [esp + 0x2c], eax
cmp dword [esi + 8], eax
je 0x5298a1
movzx ecx, byte [esi + 0x1a]
sub ecx, 1
mov dword [esi + 8], eax
js 0x5298a1
lea edx, [esi + ecx*4 + 0x1c]
mov eax, dword [ebp + 8]
add eax, ecx
lea eax, [eax + eax*4]
lea eax, [edi + eax*8]
mov dword [edx], eax
dec ecx
sub edx, 4
test ecx, ecx
jge 0x529888
mov eax, dword [esp + 0x2c]
inc dword [eax + 0xc]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x234], edx
mov dword [esp + 0x22c], 0
mov ecx, 1
mov word [esp + 0x21c], cx
mov ecx, dword [esi + 4]
lea eax, [esp + 0x214]
mov dword [esi], eax
movzx eax, byte [esi + 0x1a]
lea edx, [esi + 0x1c]
push edx
push eax
mov byte [esi + 0x19], 0
mov byte [esi + 0x18], 0
mov ecx, dword [ecx + 0x10]
push esi
call ecx
add esp, 0xc
cmp byte [esi + 0x19], 0
je 0x52992d
cmp dword [esi + 0x14], 0
je 0x529921
lea edx, [esp + 0x214]
push edx
call fcn.004daf90
push eax
push 0x5970d8
mov edi, ebx
call fcn.004e1c90
mov eax, dword [esi + 0x14]
mov edi, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x10], eax
lea eax, [esp + 0x214]
call fcn.004c4480
cmp byte [esi + 0x18], 0
je case.0x525b78.63
mov eax, dword [ebp - 0x10]
test eax, eax
je case.0x525b78.63
lea ecx, [eax + eax*4]
push 0
push 1
lea eax, [edi + ecx*8]
call fcn.004c47a0
add esp, 8
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 0x10]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea esi, [eax + edx*8]
mov eax, esi
call fcn.004c42b0
mov dword [esp + 0x10], eax
test eax, eax
je 0x52998e
push esi
call fcn.004daf90
push eax
push 0x5970d8
mov edi, ebx
call fcn.004e1c90
add esp, 0xc
movzx ecx, byte [esp + 0x4f]
mov eax, esi
call fcn.004da750
mov ecx, esi
call fcn.004c4840
test eax, eax
jne 0x5266bd
jmp case.0x525b78.63
or eax, 0xffffffff
lea ecx, [esp + 0xfc]
push ecx
mov ecx, dword [ebp + 4]
lea edx, [esp + 0xfc]
push edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x104], eax
mov dword [esp + 0x100], eax
mov eax, dword [ebp + 8]
push eax
push ecx
xor esi, esi
push edx
mov dword [esp + 0x108], esi
call fcn.005051b0
add esp, 0x14
mov dword [esp + 0x10], eax
cmp eax, 5
jne 0x529a05
mov dword [esp + 0x10], esi
mov dword [esp + 0xf4], 1
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov eax, dword [esp + esi*4 + 0xf4]
cdq
push edx
push eax
mov eax, edi
call fcn.004c47a0
inc esi
add esp, 8
add edi, 0x28
cmp esi, 3
jl 0x529a12
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edx, dword [ebp + 4]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x10]
shl edx, 4
mov eax, dword [edx + ecx + 4]
mov edx, dword [eax + 4]
mov edi, dword [edx]
mov dword [esp + 0x2c], eax
movzx eax, byte [edi + 5]
mov dword [esp + 0x1c], eax
cmp esi, 0xffffffff
jne 0x529a6d
mov esi, eax
cmp byte [edi + 0x10], 3
jae 0x529a89
mov ecx, dword [edi + 0x40]
cmp dword [ecx], 0
je 0x529a8d
cmp dword [edi + 0x4c], 0
jl 0x529a8d
jg 0x529a89
cmp dword [edi + 0x48], 0
jbe 0x529a8d
mov esi, dword [esp + 0x1c]
cmp byte [edi + 0xf], 0
mov eax, 0x59603e
jne 0x529a9e
mov eax, dword [edi + 0xa8]
cmp esi, 5
jne 0x529aec
call fcn.004bf8c0
test eax, eax
je 0x529ab7
mov eax, edi
call fcn.004c2fa0
test eax, eax
jne 0x529aec
mov esi, dword [esp + 0x1c]
cmp dword [esp + 0x10], 0
je 0x529ac6
mov esi, dword [esp + 0x1c]
mov eax, esi
mov ecx, edi
call fcn.00504020
mov edx, dword [esp + 0x28]
mov ecx, 0xa02
mov word [edx + 8], cx
cmp eax, 6
jne 0x529b8a
xor eax, eax
jmp 0x529b91
mov ecx, dword [esp + 0x1c]
cmp esi, ecx
je 0x529abb
cmp ecx, 5
je 0x529afe
cmp esi, 5
jne 0x529abb
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x3f], 0
je 0x529b5e
cmp dword [eax + 0x98], 1
jg 0x529b5e
cmp ecx, 5
jne 0x529b29
mov eax, edi
call fcn.00505390
mov dword [esp + 0x10], eax
test eax, eax
jne 0x529ac2
mov eax, esi
jmp 0x529b31
cmp ecx, 4
jne 0x529b38
lea eax, [ecx - 2]
mov ecx, edi
call fcn.00504020
cmp dword [esp + 0x10], 0
jne 0x529ac2
mov eax, dword [esp + 0x2c]
xor edx, edx
cmp esi, 5
sete dl
inc edx
push edx
call fcn.00508870
add esp, 4
mov dword [esp + 0x10], eax
jmp 0x529abb
mov dword [esp + 0x10], 1
mov eax, str.into
cmp esi, 5
je 0x529b75
mov eax, str.out_of
push eax
push str.cannot_change__s_wal_mode_from_within_a_transaction
mov edi, ebx
call fcn.004e1c90
add esp, 8
jmp case.0x525b78.63
mov eax, dword [eax*4 + 0x58b874]
mov esi, dword [esp + 0x28]
mov dword [esi + 0x10], eax
call fcn.004bf8c0
movzx ecx, byte [esp + 0x4f]
mov dword [esi + 0xc], eax
mov eax, esi
mov byte [esi + 0xa], 1
call fcn.004da750
jmp case.0x525b78.63
mov eax, dword [esp + 0x14]
lea ecx, [ebx + 0x2c]
call fcn.00525380
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x10]
shl eax, 4
mov eax, dword [eax + edx + 4]
push eax
call fcn.00511680
add esp, 4
mov dword [esp + 0x10], eax
cmp eax, 0x65
jne case.0x525b78.63
mov dword [esp + 0x10], 0
jmp 0x52a1ff
cmp dword [ebp + 4], 0
jne 0x529c12
mov eax, dword [esp + 0x14]
call fcn.004c5440
jmp case.0x525b78.63
or dword [ebx + 0x58], 8
jmp case.0x525b78.63
mov cl, byte [ebp + 0xc]
test cl, cl
jne 0x529c33
mov eax, dword [esp + 0x14]
test dword [eax + 0x18], 0x4000
jne case.0x525b78.63
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 4]
push edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x10]
shl eax, 4
mov eax, dword [eax + edx + 4]
call fcn.004cf2f0
add esp, 4
mov dword [esp + 0x10], eax
cmp al, 6
jne case.0x525b78.63
mov eax, dword [ebp + 0x10]
push eax
push str.database_table_is_locked:__s
mov edi, ebx
call fcn.004e1c90
add esp, 8
jmp case.0x525b78.63
mov edi, dword [ebp + 0x10]
mov eax, dword [esp + 0x14]
call fcn.004d3a90
mov dword [esp + 0x10], eax
test edi, edi
je case.0x525b78.63
mov ecx, dword [edi + 8]
push ecx
push ebx
call fcn.004d04b0
add esp, 8
jmp case.0x525b78.63
mov esi, dword [esp + 0x14]
xor eax, eax
mov dword [esp + 0x194], eax
mov dword [esp + 0x174], eax
mov dword [esp + 0x178], eax
mov dword [esp + 0x17c], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x184], eax
mov dword [esp + 0x188], eax
mov dword [esp + 0x18c], eax
mov dword [esp + 0x190], eax
mov dword [esp + 0x198], eax
mov eax, dword [ebp + 8]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea edi, [eax + edx*8]
lea eax, [esp + 0x174]
mov dword [esp + 0x194], esi
call fcn.004d61c0
lea ecx, [esp + 0x174]
push ecx
mov dword [esp + 0x14], eax
call fcn.004daf90
add esp, 4
test eax, eax
je 0x529d38
lea edx, [ebx + 0x2c]
push edx
push eax
mov eax, dword [ebp + 4]
mov ecx, esi
call fcn.004e9560
add esp, 8
mov dword [esp + 0x10], eax
lea eax, [esp + 0x174]
call fcn.004c4480
jmp case.0x525b78.63
mov esi, dword [esp + 0x14]
inc dword [esi + 0xa4]
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 4]
mov ecx, esi
call fcn.004c9150
add esp, 4
dec dword [esi + 0xa4]
mov dword [esp + 0x10], eax
jmp case.0x525b78.63
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x34], 0
mov esi, dword [ecx + 8]
test esi, esi
je 0x529de4
mov eax, dword [esi]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x529de4
mov eax, dword [eax + 0x18]
lea edx, [esp + 0x34]
push edx
push esi
call eax
push esi
push ebx
mov dword [esp + 0x20], eax
call fcn.004d04b0
add esp, 0x10
cmp dword [esp + 0x10], 0
jne case.0x525b78.63
mov ecx, dword [esp + 0x34]
push 2
push 0xffffffffffffffff
mov dword [ecx], esi
mov edx, dword [ebp + 4]
push 0
push edx
mov edi, ebx
call fcn.00515fd0
add esp, 0x10
test eax, eax
je 0x52a401
mov ecx, dword [esp + 0x34]
mov dword [eax + 0x14], ecx
inc dword [esi + 4]
jmp case.0x525b78.63
mov dword [esp + 0x10], 6
jmp case.0x525b78.63
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea edx, [eax + edx*8]
mov eax, dword [ebx + 0x38]
mov eax, dword [eax + ecx*4]
mov esi, dword [eax + 0x14]
mov edi, dword [esi]
mov ecx, dword [edi]
mov dword [esp + 0x58], ecx
mov ecx, dword [edx]
mov dword [esp + 0x54], ecx
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0x28]
mov dword [esp + 0x2c], ecx
xor ecx, ecx
mov dword [esp + 0x44], edi
mov dword [esp + 0x6c], 0
test eax, eax
jle 0x529e4f
mov edi, dword [esp + 0x2c]
add edx, 0x50
nop
mov dword [edi + ecx*4], edx
inc ecx
add edx, 0x28
cmp ecx, eax
jl 0x529e40
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x54]
push edx
mov edx, dword [esp + 0x5c]
push eax
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [edx + 0x20]
push ecx
push esi
call eax
push edi
push ebx
mov dword [esp + 0x2c], eax
call fcn.004d04b0
add esp, 0x1c
cmp dword [esp + 0x10], 0
jne 0x529e8c
mov ecx, dword [esp + 0x58]
mov edx, dword [ecx + 0x28]
push esi
call edx
add esp, 4
jmp 0x529e90
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x20]
mov byte [ecx + 2], 0
test eax, eax
jne 0x52a1ff
jmp case.0x525b78.63
mov edx, dword [ebp + 4]
mov eax, dword [ebx + 0x38]
mov ecx, dword [eax + edx*4]
cmp byte [ecx + 2], 0
mov eax, dword [ebp + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea esi, [eax + edx*8]
je 0x529ecd
mov eax, esi
call fcn.004c4740
jmp case.0x525b78.63
mov edx, dword [ecx + 0x14]
mov edi, dword [edx]
mov eax, dword [edi]
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [esp + 0x19c], eax
mov dword [esp + 0x1a0], eax
mov dword [esp + 0x1a4], eax
mov dword [esp + 0x1a8], eax
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x1b0], eax
mov dword [esp + 0x1b4], eax
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x19c], esi
mov dx, word [esi + 8]
mov eax, 0xbe01
and dx, ax
or dx, 1
mov word [esi + 8], dx
mov edx, dword [ebp + 8]
mov ecx, dword [ecx + 0x14]
push edx
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x1a0]
push eax
mov eax, dword [edx + 0x2c]
push ecx
call eax
push edi
push ebx
mov dword [esp + 0x24], eax
call fcn.004d04b0
mov eax, dword [esp + 0x1c4]
add esp, 0x14
test eax, eax
je 0x529f63
mov dword [esp + 0x10], eax
movzx ecx, byte [esp + 0x4f]
mov eax, esi
call fcn.004da750
mov ecx, esi
call fcn.004c4840
test eax, eax
jne 0x5266bd
jmp case.0x525b78.63
mov ecx, dword [ebp + 4]
mov edx, dword [ebx + 0x38]
mov edi, dword [edx + ecx*4]
cmp byte [edi + 2], 0
jne case.0x525b78.63
mov eax, dword [edi + 0x14]
mov esi, dword [eax]
mov ecx, dword [esi]
push eax
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x30], ecx
call eax
push esi
push ebx
mov dword [esp + 0x1c], eax
call fcn.004d04b0
add esp, 0xc
cmp dword [esp + 0x10], 0
jne case.0x525b78.14
mov ecx, dword [edi + 0x14]
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x28]
push ecx
call eax
add esp, 4
test eax, eax
jne 0x5292f9
mov ebp, dword [ebp + 8]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x14]
lea ecx, [ebp + ebp*4]
lea ebp, [edx + ecx*4 - 0x14]
jmp 0x5292fd
mov eax, dword [ebp + 0x10]
mov esi, dword [eax + 8]
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
lea edi, [edx + ecx*8]
mov ecx, 1
mov eax, edi
call fcn.004da750
mov dword [esp + 0x10], eax
test eax, eax
jne case.0x525b78.63
mov ecx, dword [edi + 0x10]
mov eax, dword [esi]
mov edx, dword [eax + 0x4c]
push ecx
push esi
call edx
push esi
push ebx
mov dword [esp + 0x20], eax
call fcn.004d04b0
add esp, 0x10
and dword [ebx + 0x58], 0xfffffff7
jmp case.0x525b78.63
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 8]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x529de4
mov eax, dword [eax]
mov dword [esp + 0x58], eax
test eax, eax
je 0x529de4
cmp dword [eax + 0x34], 0
mov ecx, dword [ebp + 8]
je case.0x525b78.63
mov edi, dword [esp + 0x14]
mov dl, byte [edi + 0x45]
mov eax, dword [ebp + 0xc]
mov esi, dword [ebx + 0xc]
mov byte [esp + 0x3f], dl
mov edx, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea edx, [edx + eax*8]
xor eax, eax
test ecx, ecx
jle 0x52a093
mov dword [esi + eax*4], edx
inc eax
add edx, 0x28
cmp eax, ecx
jl 0x52a088
movzx eax, byte [ebp + 3]
lea edx, [esp + 0x13c]
push edx
push esi
mov byte [edi + 0x45], al
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x64]
mov edx, dword [ecx + 0x34]
push eax
call edx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x20], eax
movzx eax, byte [esp + 0x4f]
push ecx
push ebx
mov byte [edi + 0x45], al
call fcn.004d04b0
add esp, 0x18
cmp dword [esp + 0x10], 0
jne 0x52a0f5
cmp dword [ebp + 4], 0
je 0x52a0f5
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x140]
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], ecx
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], ecx
cmp byte [esp + 0x10], 0x13
jne 0x528851
mov edx, dword [ebp + 0x10]
cmp byte [edx + 0x10], 0
je 0x528851
mov al, byte [ebp + 3]
cmp al, 4
jne 0x52a121
mov dword [esp + 0x10], 0
jmp case.0x525b78.63
cmp al, 5
jne 0x52a132
mov eax, 2
mov byte [ebx + 0x56], al
jmp case.0x525b78.63
movzx eax, al
mov byte [ebx + 0x56], al
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 0x10]
shl ecx, 4
mov ecx, dword [ecx + edx + 4]
mov edx, dword [ecx + 4]
mov ecx, dword [edx + 0x2c]
mov dword [eax], ecx
mov dword [eax + 4], 0
jmp case.0x525b78.63
mov eax, ebp
mov edx, ebx
call fcn.004c5d60
mov edx, dword [ebp + 4]
mov esi, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x10]
shl edx, 4
mov eax, dword [edx + ecx + 4]
mov ecx, dword [ebp + 0xc]
xor edx, edx
test ecx, ecx
je 0x52a19c
mov edx, dword [eax + 4]
mov edx, dword [edx + 0x2c]
cmp edx, ecx
jae 0x52a19c
mov edx, ecx
push edx
call fcn.004cef70
cdq
add esp, 4
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x525b78.63
mov edi, dword [esp + 0x14]
cmp dword [edi + 0xb0], 0
je 0x52a1f9
test dword [ebx + 0x58], 0x200
jne 0x52a1f9
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x52a1d4
mov eax, dword [ebx + 0xa8]
test eax, eax
je 0x52a1f9
push eax
push ebx
call fcn.004e2510
mov ecx, dword [edi + 0xb0]
mov esi, eax
mov eax, dword [edi + 0xb4]
push esi
push eax
call ecx
add esp, 0x10
mov eax, esi
mov ecx, edi
call fcn.004bf680
cmp dword [ebp + 8], 0
je case.0x525b78.63
mov ebp, dword [ebp + 8]
mov eax, dword [esp + 0x48]
lea edx, [ebp + ebp*4]
lea ebp, [eax + edx*4 - 0x14]
mov esi, dword [esp + 0x14]
add ebp, 0x14
cmp dword [esp + 0x10], 0
jne 0x52a469
jmp 0x525b55
mov ecx, dword [ebp + 4]
mov dword [ebx + 0x50], ecx
mov dl, byte [ebp + 8]
mov byte [ebx + 0x56], dl
mov dword [ebx + 0x4c], esi
test ecx, ecx
je 0x52a2a5
mov al, byte [ebp + 3]
test al, al
je 0x52a267
movzx eax, al
mov ecx, dword [eax*4 + 0x58b064]
test ecx, ecx
je 0x52a269
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x52a269
push eax
push ecx
push str._s_constraint_failed:__s
mov edi, ebx
call fcn.004e1c90
add esp, 0xc
jmp 0x52a288
xor ecx, ecx
mov eax, dword [ebp + 0x10]
mov edi, ebx
test eax, eax
je 0x52a27a
push eax
push 0x5970d8
jmp 0x52a280
push ecx
push str._s_constraint_failed
call fcn.004e1c90
add esp, 8
mov ecx, dword [ebx + 0x2c]
mov edx, dword [ebx + 0xa8]
mov eax, dword [ebp + 4]
push ecx
push edx
push esi
push str.abort_at__d_in___s_:__s
push eax
call fcn.004e01f0
add esp, 0x14
mov edi, ebx
call fcn.0051a3c0
mov esi, dword [esp + 0x14]
mov ecx, 5
cmp eax, ecx
jne 0x52a377
mov dword [esp + 0x10], ecx
mov dword [ebx + 0x50], ecx
jmp 0x52a4f2
sub ebp, dword [esp + 0x48]
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebx + 0x4c], eax
mov byte [esi + 0x3f], 0
mov dword [esp + 0x10], 5
mov dword [ebx + 0x50], 5
jmp 0x52a4f2
test ecx, ecx
je 0x52a312
push 0x204
mov eax, esi
call fcn.00515c60
add esp, 4
mov byte [esi + 0x3f], 1
jmp 0x52a331
push 1
mov eax, ebx
call fcn.004e20c0
add esp, 4
mov dword [esp + 0x10], eax
test eax, eax
jne 0x52a4f2
mov cl, byte [esp + 0x2c]
mov byte [esi + 0x3f], cl
mov edi, ebx
call fcn.0051a3c0
mov ecx, 5
cmp eax, ecx
jne 0x52a36e
sub ebp, dword [esp + 0x48]
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dl, 1
sub dl, byte [esp + 0x2c]
mov dword [ebx + 0x4c], eax
mov byte [esi + 0x3f], dl
mov dword [esp + 0x10], ecx
mov dword [ebx + 0x50], ecx
jmp 0x52a4f2
mov esi, dword [esp + 0x14]
call fcn.004ca9d0
mov eax, dword [ebx + 0x50]
neg eax
sbb eax, eax
and eax, 0xffffff9c
add eax, 0x65
mov dword [esp + 0x10], eax
jmp 0x52a4f2
mov dword [esp + 0x10], 8
jmp 0x52861f
sub ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebx + 0x4c], eax
mov dword [ebx + 0x50], ecx
jmp 0x52a4f2
mov eax, 0x12d21
call fcn.004eb240
mov dword [esp + 0x10], eax
jmp 0x52861f
cmp dword [esp + 0x10], 0xc0a
je 0x52a462
mov ecx, dword [esp + 0x10]
call fcn.004caad0
mov ebx, dword [esp + 0x88]
push eax
push 0x5970d8
mov edi, ebx
call fcn.004e1c90
add esp, 8
jmp 0x52a469
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x1c]
push edx
call ecx
add esp, 4
mov esi, dword [esp + 0x14]
push 0x5816a8
mov edi, ebx
mov byte [esi + 0x41], 1
call fcn.004e1c90
add esp, 4
mov dword [esp + 0x10], 7
jmp 0x52a469
mov eax, 9
mov dword [ebx + 0x50], eax
mov ecx, dword [str.interrupted]
mov dword [esp + 0x10], eax
mov eax, str.unknown_error
test ecx, ecx
je 0x52a450
mov eax, ecx
push eax
push 0x5970d8
mov edi, ebx
call fcn.004e1c90
add esp, 8
jmp 0x52a469
mov ebx, dword [esp + 0x88]
mov edx, dword [ebx + 0x2c]
mov eax, dword [ebx + 0xa8]
sub ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
push edx
push eax
mov eax, 0x66666667
imul ebp
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push str.statement_aborts_at__d:___s___s
push ecx
mov dword [ebx + 0x50], ecx
call fcn.004e01f0
add esp, 0x14
mov edi, ebx
call fcn.0051a3c0
cmp dword [esp + 0x10], 0xc0a
jne 0x52a4b4
mov byte [esi + 0x41], 1
cmp byte [esp + 0x53], 0
mov dword [esp + 0x10], 1
jbe 0x52a4f2
movzx edi, byte [esp + 0x53]
mov edx, dword [esi + 0x10]
dec edi
mov ecx, edi
shl ecx, 4
mov eax, dword [ecx + edx + 0xc]
push eax
call fcn.004d8860
add esp, 4
cmp edi, 1
je 0x52a4f2
mov ecx, dword [esi + 0x10]
mov edx, dword [ecx + 0x1c]
push edx
call fcn.004d8860
add esp, 4
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x68]
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ecx
add dword [ebx + 0x7c], edx
cmp dword [ebx + 0x64], 0
je 0x52a516
push ebx
call fcn.004c4ab0
add esp, 4
mov ecx, dword [esp + 0x2f4]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00409b58
add esp, 0x2e8
ret