Function at 0x51cc48
Capabilities:
Encrypt data using speck
Reference sql statements
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2bc
mov eax, dword [0x5f931c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ecx, ecx
push edi
mov dword [ebp - 0x108], edi
mov dword [ebp - 0xd4], ecx
mov esi, dword [edi]
mov eax, dword [edi + 4]
mov ebx, eax
mov dword [ebp - 0x118], eax
mov dword [ebp - 0xcc], esi
mov al, byte [esi + 0x42]
mov byte [ebp - 0x11c], al
mov eax, dword [edi + 8]
mov dword [ebp - 0xd8], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x150], eax
mov eax, dword [esi + 0x24]
mov byte [ebp - 0x11d], cl
mov dword [ebp - 0x17c], ecx
mov dword [ebp - 0xd0], ecx
mov dword [ebp - 0x14c], ecx
mov dword [ebp - 0x180], ecx
mov dword [ebp - 0x154], eax
call fcn.0051cbd0
pop ecx
xor eax, eax
push 7
pop ecx
inc eax
cmp dword [edi + 0x50], ecx
je 0x51e825
xor ecx, ecx
mov dword [edi + 0x50], ecx
mov dword [edi + 0x90], ecx
mov dword [edi + 0x94], ecx
mov dword [edi + 0x14], ecx
mov dword [esi + 0x184], ecx
cmp dword [esi + 0xf8], ecx
jne 0x521c6b
cmp dword [esi + 0x130], ecx
je 0x51cd23
mov ecx, dword [esi + 0x138]
xor edx, edx
mov eax, dword [edi + 0x84]
div ecx
xor eax, eax
sub ecx, edx
inc eax
mov dword [ebp - 0x14c], ecx
imul ebx, dword [edi + 0x4c], 0x14
xorps xmm0, xmm0
mov ecx, dword [ebp - 0x11c]
mov edx, dword [ebp - 0xd0]
mov dword [ebp - 0x1a8], 0x17
movsd qword [ebp - 0x1c4], xmm0
add ebx, dword [ebp - 0x118]
mov cl, byte [ebx]
inc edx
mov dword [ebp - 0xd0], edx
movzx edx, cl
mov dword [ebp - 0x110], ebx
mov byte [ebp - 0xd9], cl
mov dword [ebp - 0xe4], edx
cmp edx, 0x9d
ja case.0x51cd74.110
jmp dword [edx*4 + 0x521d58]
imul ecx, dword [ebx + 4], 0x28
push 4
pop eax
push 0x14
pop esi
add ecx, dword [ebp - 0xd8]
mov word [ecx + 8], ax
mov eax, ebx
sub eax, dword [ebp - 0x118]
cdq
idiv esi
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x521865
imul eax, dword [ebx + 4], 0x28
mov ecx, 0x80
add eax, dword [ebp - 0xd8]
imul ebx, dword [eax], 0x14
mov word [eax + 8], cx
add ebx, dword [ebp - 0x118]
xor eax, eax
inc eax
mov edx, dword [ebp - 0xd0]
push 0x14
pop ecx
add ebx, ecx
jmp 0x51cd4e
imul ecx, dword [ebx + 4], 0x28
mov eax, dword [ebx + 0xc]
push 4
add ecx, dword [ebp - 0xd8]
dec eax
cdq
mov dword [ecx], eax
pop eax
mov dword [ecx + 4], edx
mov word [ecx + 8], ax
cmp dword [ebx + 8], 0
jne 0x521865
jmp 0x51cdc1
imul ecx, dword [ebx + 4], 0x28
mov edx, dword [ebp - 0x118]
add ecx, dword [ebp - 0xd8]
lea ebx, [edx - 0x14]
imul eax, dword [ecx], 0x14
imul eax, dword [eax + edx + 8], 0x14
add ebx, eax
mov eax, 0x80
mov word [ecx + 8], ax
jmp 0x51cdc1
imul esi, dword [ebx + 4], 0x28
sub ebx, dword [ebp - 0x118]
push 4
pop eax
push 0x14
add esi, dword [ebp - 0xd8]
mov word [esi + 8], ax
mov eax, ebx
cdq
pop ebx
idiv ebx
mov ecx, dword [esi]
imul ebx, ecx, 0x14
cdq
mov dword [esi + 4], edx
add ebx, dword [ebp - 0x118]
mov dword [esi], eax
mov esi, dword [ebp - 0xcc]
jmp 0x51cdc1
imul eax, dword [ebx + 0xc], 0x28
mov ecx, dword [ebp - 0xd8]
test byte [eax + ecx + 8], 1
je 0x51cdc1
mov eax, ebx
sub eax, dword [ebp - 0x118]
push 0x14
pop ecx
cdq
idiv ecx
mov ecx, dword [ebx + 4]
mov esi, eax
test ecx, ecx
jne 0x521879
mov edx, dword [edi + 0xb8]
test edx, edx
je 0x521879
mov eax, dword [edx + 4]
mov esi, dword [ebp - 0xcc]
dec dword [edi + 0xc0]
mov dword [edi + 0xb8], eax
mov eax, dword [edi + 0x64]
add dword [esi + 0x58], eax
push edx
mov dword [esi + 0x54], eax
call fcn.0052235c
mov edx, dword [edi + 4]
pop ecx
mov ecx, dword [esi + 0x20]
mov dword [ebp - 0x150], ecx
mov ecx, dword [esi + 0x24]
push 4
mov dword [ebp - 0x154], ecx
pop ecx
mov dword [ebp - 0x118], edx
cmp dword [ebx + 8], ecx
jne 0x51ceec
imul eax, eax, 0x14
mov eax, dword [eax + edx + 8]
dec eax
mov ecx, dword [edi + 8]
imul ebx, eax, 0x14
mov dword [ebp - 0xd8], ecx
add ebx, edx
jmp 0x51cdc1
push ebx
push edi
call fcn.004fbc82
pop ecx
pop ecx
mov ecx, eax
mov eax, dword [ebx + 4]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x51cdc1
push ebx
push edi
call fcn.004fbc82
mov edx, dword [ebx + 0x10]
pop ecx
pop ecx
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
jmp 0x51cdc1
push ebx
push edi
call fcn.004fbc82
pop ecx
pop ecx
push 8
pop ecx
mov word [eax + 8], cx
mov ecx, dword [ebx + 0x10]
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
jmp 0x51cdc1
push ebx
push edi
call fcn.004fbc82
push dword [ebx + 0x10]
mov esi, eax
mov byte [ebx], 0x4c
call fcn.00519db1
mov dword [ebx + 4], eax
add esp, 0xc
xor eax, eax
inc eax
cmp byte [ebp - 0x11c], al
je 0x51cfd7
push 0
push eax
push 0xffffffffffffffff
push dword [ebx + 0x10]
push esi
call fcn.00523634
movzx ecx, byte [ebp - 0x11c]
push ecx
push esi
mov dword [ebp - 0xd4], eax
call fcn.0051c71e
add esp, 0x1c
test eax, eax
jne 0x51e81f
and dword [esi + 0x18], eax
mov eax, 0x800
or word [esi + 8], ax
cmp byte [ebx + 1], 0xff
jne 0x51cfc7
push dword [ebx + 0x10]
push dword [ebp - 0xcc]
call fcn.005087dc
pop ecx
pop ecx
mov byte [ebx + 1], 0xff
mov eax, dword [esi + 0x10]
mov dword [ebx + 0x10], eax
mov eax, dword [esi + 0xc]
mov dword [ebx + 4], eax
mov edx, dword [ebp - 0xcc]
mov eax, dword [ebx + 4]
cmp eax, dword [edx + 0x5c]
jg 0x51d8a7
push ebx
push edi
call fcn.004fbc82
mov esi, eax
mov eax, 0xa02
pop ecx
pop ecx
mov word [esi + 8], ax
mov ecx, dword [ebx + 0x10]
mov al, byte [ebp - 0x11c]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebx + 4]
mov dword [esi + 0xc], ecx
mov byte [esi + 0xa], al
mov eax, dword [ebx + 0xc]
test eax, eax
jle 0x51ce53
mov edi, dword [ebp - 0xd8]
imul ecx, eax, 0x28
movzx eax, byte [ebx + 3]
cdq
cmp dword [ecx + edi], eax
mov edi, dword [ebp - 0x108]
jne 0x51ce53
mov eax, dword [ebp - 0xd8]
cmp dword [ecx + eax + 4], edx
mov edx, dword [ebp - 0xd0]
jne 0x51d055
mov eax, 0xa10
mov word [esi + 8], ax
mov esi, dword [ebp - 0xcc]
xor eax, eax
inc eax
jmp 0x51cdca
push ebx
push edi
call fcn.004fbc82
mov esi, dword [ebx + 0xc]
mov edx, dword [ebx + 8]
pop ecx
pop ecx
xor ecx, ecx
mov dword [ebp - 0xe8], 0x101
inc ecx
mov dword [ebp - 0xfc], eax
cmp dword [ebx + 4], 0
cmovne ecx, dword [ebp - 0xe8]
sub esi, edx
movzx ecx, cx
mov dword [ebp - 0xe8], ecx
mov word [eax + 8], cx
test esi, esi
jle 0x51ce53
mov edi, eax
mov ebx, ecx
add edi, 0x28
push edi
call fcn.0052359c
dec esi
mov word [edi + 8], bx
pop ecx
test esi, esi
jg 0x51d0ab
mov ebx, dword [ebp - 0x110]
mov edi, dword [ebp - 0x108]
jmp 0x51ce53
imul ecx, dword [ebx + 4], 0x28
mov edx, 0xff7f
add ecx, dword [ebp - 0xd8]
mov ax, word [ecx + 8]
and ax, dx
xor edx, edx
inc edx
or ax, dx
jmp 0x51ce1d
push ebx
push edi
call fcn.004fbc82
push 0
push 0
push dword [ebx + 4]
mov esi, eax
push dword [ebx + 0x10]
push esi
call fcn.00523634
add esp, 0x1c
mov al, byte [ebp - 0x11c]
mov byte [esi + 0xa], al
jmp 0x51ce53
imul ecx, dword [ebx + 4], 0x28
mov esi, dword [edi + 0x3c]
add ecx, 0xffffffd8
add esi, ecx
push esi
call fcn.005238a5
pop ecx
test eax, eax
jne 0x51d8a7
push ebx
push edi
call fcn.004fbc82
mov ecx, 0x800
push ecx
push esi
push eax
call fcn.005237bc
add esp, 0x14
jmp 0x51ce53
mov eax, dword [ebx + 0xc]
imul esi, dword [ebx + 8], 0x28
mov dword [ebp - 0xf0], eax
imul eax, dword [ebx + 4], 0x28
add eax, dword [ebp - 0xd8]
add esi, dword [ebp - 0xd8]
mov dword [ebp - 0xf4], eax
push eax
push esi
call fcn.00523426
mov eax, 0x1000
pop ecx
pop ecx
test word [esi + 8], ax
je 0x51d197
push esi
call fcn.005233a3
pop ecx
test eax, eax
jne 0x51e81f
mov eax, dword [ebp - 0xf4]
add esi, 0x28
add eax, 0x28
sub dword [ebp - 0xf0], 1
mov dword [ebp - 0xf4], eax
jne 0x51d174
jmp 0x51ce53
mov eax, dword [ebx + 0xc]
imul esi, dword [ebx + 8], 0x28
mov dword [ebp - 0xf4], eax
imul eax, dword [ebx + 4], 0x28
add eax, dword [ebp - 0xd8]
add esi, dword [ebp - 0xd8]
push 0x1000
push eax
push esi
mov dword [ebp - 0xf0], eax
call fcn.005237bc
mov eax, 0x1000
add esp, 0xc
test word [esi + 8], ax
je 0x51d203
push esi
call fcn.005233a3
pop ecx
test eax, eax
jne 0x51e81f
mov ecx, dword [ebp - 0xf4]
mov eax, ecx
dec ecx
mov dword [ebp - 0xf4], ecx
test eax, eax
je 0x51ce53
mov eax, dword [ebp - 0xf0]
add esi, 0x28
add eax, 0x28
jmp 0x51d1d4
mov eax, 0x1000
push eax
imul eax, dword [ebx + 4], 0x28
add eax, dword [ebp - 0xd8]
push eax
imul eax, dword [ebx + 8], 0x28
add eax, dword [ebp - 0xd8]
push eax
call fcn.005237bc
add esp, 0xc
jmp 0x51cdc1
imul eax, dword [ebx + 4], 0x28
mov ecx, dword [ebp - 0xd8]
push dword [eax + ecx + 4]
push dword [eax + ecx]
imul eax, dword [ebx + 8], 0x28
add eax, ecx
push eax
call fcn.00523566
jmp 0x51d249
imul edx, dword [ebx + 4], 0x28
mov eax, dword [ebp - 0xd8]
imul ecx, dword [ebx + 8], 0x28
imul esi, dword [ebx + 0xc], 0x28
add edx, eax
mov dword [ebp - 0xf0], edx
add ecx, eax
add esi, eax
mov dword [ebp - 0xe4], ecx
movzx eax, word [edx + 8]
mov dword [ebp - 0xe8], eax
mov al, byte [ecx + 8]
or al, byte [ebp - 0xe8]
test al, 1
je 0x51d2b7
push esi
call fcn.0052359c
pop ecx
jmp 0x51ce53
movzx eax, word [edx + 8]
test eax, 0x4000
je 0x51d2d1
push edx
call fcn.005230d5
pop ecx
mov ecx, dword [ebp - 0xe4]
jmp 0x51d2d3
xor eax, eax
test eax, eax
jne 0x51e81f
mov eax, 0x4000
test word [ecx + 8], ax
je 0x51d2ef
push ecx
call fcn.005230d5
pop ecx
jmp 0x51d2f1
xor eax, eax
test eax, eax
jne 0x51e81f
mov eax, dword [ebp - 0xf0]
test byte [eax + 8], 0x12
jne 0x51d31e
push 0
push dword [ebp - 0x11c]
push eax
call fcn.00523812
add esp, 0xc
test eax, eax
jne 0x51e81f
mov edx, dword [ebp - 0xe4]
test byte [edx + 8], 0x12
jne 0x51d349
push 0
push dword [ebp - 0x11c]
push edx
call fcn.00523812
add esp, 0xc
test eax, eax
jne 0x51e81f
mov edx, dword [ebp - 0xe4]
mov ecx, dword [ebp - 0xf0]
mov eax, dword [ebp - 0xcc]
mov ecx, dword [ecx + 0xc]
add ecx, dword [edx + 0xc]
mov dword [ebp - 0xe8], ecx
cmp ecx, dword [eax + 0x5c]
jg 0x51d8a7
xor eax, eax
cmp esi, edx
sete al
push eax
lea eax, [ecx + 2]
push eax
push esi
call fcn.0052320c
add esp, 0xc
test eax, eax
jne 0x51e81f
mov ax, word [esi + 8]
mov ecx, 0x3e00
and ax, cx
push 2
pop ecx
or ax, cx
mov word [esi + 8], ax
mov eax, dword [ebp - 0xe4]
cmp esi, eax
je 0x51d3b8
push dword [eax + 0xc]
push dword [eax + 0x10]
push dword [esi + 0x10]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [ebp - 0xf0]
mov ecx, dword [ebp - 0xe4]
push dword [eax + 0xc]
push dword [eax + 0x10]
mov eax, dword [esi + 0x10]
add eax, dword [ecx + 0xc]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x10]
add esp, 0xc
mov ecx, dword [ebp - 0xe8]
mov byte [ecx + eax], 0
mov eax, dword [esi + 0x10]
mov byte [eax + ecx + 1], 0
mov eax, 0x200
or word [esi + 8], ax
mov dword [esi + 0xc], ecx
jmp 0x51d10c
imul esi, dword [ebx + 4], 0x28
add esi, dword [ebp - 0xd8]
push esi
call fcn.004fb6fd
movzx eax, ax
mov dword [ebp - 0xf4], eax
imul eax, dword [ebx + 8], 0x28
add eax, dword [ebp - 0xd8]
push eax
mov dword [ebp - 0xf8], eax
call fcn.004fb6fd
pop ecx
pop ecx
movzx ecx, ax
imul eax, dword [ebx + 0xc], 0x28
mov dword [ebp - 0xe0], ecx
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0x114], eax
mov eax, dword [ebp - 0xf8]
mov al, byte [eax + 8]
or al, byte [esi + 8]
test al, 1
jne 0x51d6ed
mov al, cl
and al, byte [ebp - 0xf4]
push 4
pop ecx
test cl, al
je 0x51d591
mov eax, dword [ebp - 0xf8]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov byte [ebp - 0xd9], 1
mov edi, dword [eax]
mov dword [ebp - 0xe4], edi
mov edi, dword [eax + 4]
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x164], eax
movzx eax, byte [ebx]
mov dword [ebp - 0xf0], edi
mov dword [ebp - 0x160], edi
mov edi, dword [ebp - 0x108]
sub eax, 0x2f
je 0x51d54a
sub eax, 1
je 0x51d53a
sub eax, 1
je 0x51d52a
sub eax, 1
mov eax, ecx
je 0x51d4f3
or eax, edx
je 0x51d6ed
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x51d4de
xor ecx, ecx
inc ecx
xor edx, edx
push edx
push ecx
push dword [ebp - 0xf0]
push dword [ebp - 0xe4]
call fcn.00536ac0
jmp 0x51d56b
or eax, edx
je 0x51d6ed
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
mov eax, dword [ebp - 0xe4]
jne 0x51d51a
test eax, eax
jne 0x51d51a
cmp dword [ebp - 0xf0], 0x80000000
je 0x51d598
push edx
push ecx
push dword [ebp - 0xf0]
push eax
call fcn.00536680
jmp 0x51d56b
push edx
push ecx
lea eax, [ebp - 0x164]
push eax
call fcn.00511960
jmp 0x51d558
push edx
push ecx
lea eax, [ebp - 0x164]
push eax
call fcn.00519dce
jmp 0x51d558
push edx
push ecx
lea eax, [ebp - 0x164]
push eax
call fcn.00502885
add esp, 0xc
test eax, eax
jne 0x51d598
mov edx, dword [ebp - 0x160]
mov eax, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x114]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov ax, word [ecx + 8]
mov edx, 0x3e00
push 4
and ax, dx
pop edx
or ax, dx
mov word [ecx + 8], ax
jmp 0x51ce53
mov byte [ebp - 0xd9], 0
push esi
call fcn.00523de1
push dword [ebp - 0xf8]
fstp qword [ebp - 0xec]
call fcn.00523de1
movzx eax, byte [ebx]
pop ecx
fstp qword [ebp - 0x12c]
pop ecx
sub eax, 0x2f
je 0x51d67e
sub eax, 1
je 0x51d66c
sub eax, 1
je 0x51d65a
movsd xmm0, qword [ebp - 0xec]
sub eax, 1
je 0x51d63a
call fcn.00536e6f
movsd xmm0, qword [ebp - 0x12c]
mov esi, eax
mov dword [ebp - 0xe8], edx
call fcn.00536e6f
mov dword [ebp - 0xfc], eax
mov ecx, esi
mov eax, dword [ebp - 0xe8]
or ecx, eax
je 0x51d6ed
mov ecx, esi
and ecx, eax
cmp ecx, 0xffffffff
jne 0x51d620
xor esi, esi
inc esi
xor eax, eax
push eax
push esi
push edx
push dword [ebp - 0xfc]
call fcn.00536ac0
mov ecx, eax
call fcn.00536fc0
movaps xmm1, xmm0
jmp 0x51d68e
ucomisd xmm0, qword [ebp - 0x1c4]
lahf
test ah, 0x44
jnp 0x51d6ed
movsd xmm1, qword [ebp - 0x12c]
divsd xmm1, xmm0
jmp 0x51d68e
movsd xmm1, qword [ebp - 0x12c]
mulsd xmm1, qword [ebp - 0xec]
jmp 0x51d68e
movsd xmm1, qword [ebp - 0x12c]
subsd xmm1, qword [ebp - 0xec]
jmp 0x51d68e
movsd xmm1, qword [ebp - 0x12c]
addsd xmm1, qword [ebp - 0xec]
push ecx
push ecx
movsd qword [esp], xmm1
call fcn.00510979
add esp, 8
test eax, eax
jne 0x51d6ed
mov ecx, dword [ebp - 0x114]
mov edx, 0x3e00
push 8
mov ax, word [ecx + 8]
and ax, dx
movsd qword [ecx], xmm1
pop edx
or ax, dx
mov word [ecx + 8], ax
mov eax, dword [ebp - 0xe0]
or al, byte [ebp - 0xf4]
test dl, al
jne 0x51ce53
cmp byte [ebp - 0xd9], 0
jne 0x51ce53
push ecx
call fcn.00522965
jmp 0x51d2b1
mov ecx, dword [ebp - 0x114]
push ecx
jmp 0x51d2ac
mov eax, dword [ebx + 4]
test eax, eax
je 0x51cdc1
imul eax, eax, 0x28
push 0
push 0
add eax, dword [ebp - 0xd8]
jmp 0x51d268
mov al, byte [ebx + 3]
mov byte [ebp - 0xd9], al
movzx eax, al
push 7
cdq
pop ecx
add eax, ecx
adc edx, 0
shld edx, eax, 2
push edx
shl eax, 2
push eax
push esi
call fcn.00508851
mov esi, eax
add esp, 0xc
test esi, esi
je 0x51e81f
and dword [esi], 0
mov eax, ebx
mov ecx, dword [ebx + 0x10]
sub eax, dword [ebp - 0x118]
mov dword [esi + 4], ecx
push 0x14
cdq
pop ecx
idiv ecx
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], eax
mov al, byte [ebp - 0xd9]
mov byte [esi + 0x1a], al
mov word [ebx], 0xeb58
mov dword [ebx + 0x10], esi
imul eax, dword [ebx + 0xc], 0x28
mov esi, dword [ebx + 0x10]
add eax, dword [ebp - 0xd8]
mov edx, dword [esi]
mov dword [ebp - 0xe8], eax
cmp edx, eax
je 0x51d7c5
movzx ecx, byte [esi + 0x1a]
mov edx, eax
sub ecx, 1
mov dword [esi], eax
js 0x51d7c5
mov edi, dword [ebp - 0xd8]
lea edx, [ecx + 7]
lea edx, [esi + edx*4]
mov eax, dword [ebx + 8]
add eax, ecx
imul eax, eax, 0x28
push 4
add eax, edi
mov dword [edx], eax
pop eax
sub edx, eax
sub ecx, 1
jns 0x51d7a7
mov edi, dword [ebp - 0x108]
mov edx, dword [esi]
mov ax, word [edx + 8]
mov ecx, 0x3e00
and ax, cx
xor ecx, ecx
inc ecx
or ax, cx
mov ecx, dword [ebp - 0x150]
mov word [edx + 8], ax
mov eax, dword [ebp - 0xcc]
mov byte [esi + 0x19], 0
mov dword [eax + 0x20], ecx
mov ecx, dword [ebp - 0x154]
mov dword [eax + 0x24], ecx
lea eax, [esi + 0x1c]
mov ecx, dword [esi + 4]
push eax
movzx eax, byte [esi + 0x1a]
push eax
push esi
call dword [ecx + 0xc]
mov eax, dword [ebp - 0xcc]
add esp, 0xc
cmp byte [esi + 0x19], 0
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x150], ecx
mov dword [ebp - 0x154], eax
je 0x51d876
cmp dword [esi + 0x14], 0
je 0x51d84d
push dword [esi]
call fcn.004e8c65
push eax
push 0x57e68c
push edi
call fcn.0051cc20
mov eax, dword [esi + 0x14]
add esp, 0x10
mov dword [ebp - 0xd4], eax
push dword [ebx + 4]
lea eax, [edi + 0xd4]
push dword [esi + 0x10]
push eax
push dword [ebp - 0xcc]
call fcn.0051cb1d
mov eax, dword [ebp - 0xd4]
add esp, 0x10
test eax, eax
jne 0x521ca1
mov eax, dword [ebp - 0xe8]
test byte [eax + 8], 0x12
je 0x51ce53
movzx eax, byte [ebp - 0x11c]
push eax
push dword [esi]
call fcn.0051c71e
push dword [esi]
call fcn.005238a5
add esp, 0xc
test eax, eax
je 0x51ce53
push str.string_or_blob_too_big
push edi
call fcn.0051cc20
pop ecx
pop ecx
push 0x12
jmp 0x51daf5
imul ecx, dword [ebx + 8], 0x28
imul esi, dword [ebx + 4], 0x28
mov eax, dword [ebp - 0xd8]
imul edx, dword [ebx + 0xc], 0x28
add ecx, eax
add esi, eax
add edx, eax
mov al, byte [ecx + 8]
or al, byte [esi + 8]
mov dword [ebp - 0xe0], edx
test al, 1
je 0x51d8e9
push edx
jmp 0x51d2ac
push ecx
call fcn.00522905
push esi
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x138], edx
call fcn.00522905
pop ecx
pop ecx
mov cl, byte [ebx]
mov esi, eax
mov byte [ebp - 0xd9], cl
cmp cl, 0x2b
jne 0x51d923
and dword [ebp - 0x13c], esi
and dword [ebp - 0x138], edx
jmp 0x51da79
cmp cl, 0x2c
jne 0x51d939
or dword [ebp - 0x13c], esi
or dword [ebp - 0x138], edx
jmp 0x51da79
mov eax, esi
or eax, edx
je 0x51da79
test edx, edx
jg 0x51d96c
jl 0x51d94d
test esi, esi
jae 0x51d96c
mov al, 0x5b
sub al, cl
mov cl, al
mov byte [ebp - 0xd9], cl
cmp edx, 0xffffffff
jl 0x51d999
jg 0x51d965
cmp esi, 0xffffffc0
jbe 0x51d999
neg esi
adc edx, 0
neg edx
push 0x40
pop eax
test edx, edx
jl 0x51d9ca
jg 0x51d979
cmp esi, eax
jb 0x51d9ca
cmp dword [ebp - 0x138], 0
jg 0x51d9a2
jl 0x51d98d
cmp dword [ebp - 0x13c], 0
jae 0x51d9a2
cmp cl, 0x2d
je 0x51d9a2
or eax, 0xffffffff
or ecx, eax
jmp 0x51d9b9
push 0x40
pop eax
mov esi, eax
xor edx, edx
jmp 0x51d96f
xorps xmm0, xmm0
movlpd qword [ebp - 0x144], xmm0
mov ecx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x144]
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x138], ecx
jmp 0x51da79
push 8
pop eax
push eax
lea eax, [ebp - 0x13c]
push eax
lea eax, [ebp - 0x15c]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x15c]
add esp, 0xc
cmp byte [ebp - 0xd9], 0x2d
mov ecx, esi
mov edx, dword [ebp - 0x158]
jne 0x51da02
call fcn.00536b80
jmp 0x51da53
call fcn.005371c0
cmp dword [ebp - 0x138], 0
mov ecx, edx
mov dword [ebp - 0xe8], eax
mov dword [ebp - 0xfc], ecx
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x158], ecx
jg 0x51da5f
jl 0x51da35
cmp dword [ebp - 0x13c], 0
jae 0x51da5f
push 0x40
pop eax
mov ecx, eax
or edx, 0xffffffff
sub ecx, esi
or eax, 0xffffffff
call fcn.00536b80
or eax, dword [ebp - 0xe8]
or edx, dword [ebp - 0xfc]
mov dword [ebp - 0x158], edx
mov dword [ebp - 0x15c], eax
push 8
pop eax
push eax
lea eax, [ebp - 0x15c]
push eax
lea eax, [ebp - 0x13c]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0x13c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x138]
mov dword [ecx + 4], eax
jmp 0x51d576
imul esi, dword [ebx + 4], 0x28
add esi, dword [ebp - 0xd8]
push esi
call fcn.00523377
mov eax, dword [ebx + 8]
cdq
add dword [esi], eax
pop ecx
adc dword [esi + 4], edx
jmp 0x51ce53
imul esi, dword [ebx + 4], 0x28
push 4
pop edx
add esi, dword [ebp - 0xd8]
movzx eax, word [esi + 8]
mov ecx, eax
test dl, al
jne 0x51dafb
push dword [ebp - 0x11c]
push 0x43
push esi
call fcn.004ed854
movzx eax, word [esi + 8]
add esp, 0xc
mov ecx, eax
push 4
pop edx
test dl, al
jne 0x51dafb
cmp dword [ebx + 8], 0
jne 0x521865
push 0x14
pop eax
jmp 0x521ca1
mov eax, 0x3e00
and ecx, eax
push 4
pop eax
or ecx, eax
mov word [esi + 8], cx
jmp 0x51ce53
imul eax, dword [ebx + 4], 0x28
push 4
pop ecx
add eax, dword [ebp - 0xd8]
test byte [eax + 8], cl
je 0x51cdc1
push eax
call fcn.005234eb
pop ecx
jmp 0x51cdc1
imul esi, dword [ebx + 4], 0x28
mov eax, 0x4000
add esi, dword [ebp - 0xd8]
test word [esi + 8], ax
je 0x51db56
push esi
call fcn.005230d5
pop ecx
mov dword [ebp - 0xd4], eax
jmp 0x51db5d
and dword [ebp - 0xd4], 0
push dword [ebp - 0x11c]
movzx eax, byte [ebx + 8]
push eax
push esi
call fcn.00522f9c
add esp, 0xc
mov eax, dword [ebp - 0xd4]
mov esi, dword [ebp - 0xcc]
test eax, eax
jne 0x521ca7
jmp 0x51cdc1
imul eax, dword [ebx + 0xc], 0x28
imul ecx, dword [ebx + 4], 0x28
add eax, dword [ebp - 0xd8]
add ecx, dword [ebp - 0xd8]
mov dword [ebp - 0x10c], ecx
mov dword [ebp - 0xe4], eax
movzx esi, word [eax + 8]
movzx edx, word [ecx + 8]
mov ecx, esi
mov al, byte [ebx + 3]
or ecx, edx
mov dword [ebp - 0x110], edx
mov dword [ebp - 0x100], esi
test cl, 1
je 0x51dc26
test al, al
jns 0x51dbf4
mov eax, esi
xor ecx, ecx
and eax, edx
bt ax, cx
jae 0x51dbe6
test esi, 0x100
jne 0x51dbe6
xor edx, edx
jmp 0x51dbe9
xor edx, edx
inc edx
mov esi, dword [ebp - 0xe4]
jmp 0x51dd70
test al, 0x20
je 0x51dc16
imul ecx, dword [ebx + 8], 0x28
mov edx, 0x3e00
add ecx, dword [ebp - 0xd8]
mov ax, word [ecx + 8]
and ax, dx
xor edx, edx
inc edx
jmp 0x51d585
push 0x10
pop ecx
test cl, al
jne 0x521865
jmp 0x51ce53
and al, 0x47
cmp al, 0x43
jb 0x51dc7a
push 2
pop edx
test dl, cl
je 0x51dd12
mov al, byte [ebp - 0x110]
and al, 0xe
cmp al, dl
jne 0x51dc56
mov ecx, dword [ebp - 0x10c]
push 0
push ecx
call fcn.004ed8be
pop ecx
pop ecx
push 2
pop edx
mov al, byte [ebp - 0x100]
and al, 0xe
cmp al, dl
jne 0x51dd12
push 0
push dword [ebp - 0xe4]
call fcn.004ed8be
pop ecx
pop ecx
jmp 0x51dd12
cmp al, 0x42
jne 0x51dd12
mov al, byte [ebp - 0x110]
push 2
pop edx
test dl, al
jne 0x51dccd
test al, 0xc
je 0x51dccd
mov ecx, dword [ebp - 0x10c]
push 1
push dword [ebp - 0x11c]
push ecx
call fcn.00523812
mov eax, dword [ebp - 0x10c]
add esp, 0xc
mov ecx, 0x7e00
mov ax, word [eax + 8]
xor ax, word [ebp - 0x110]
and ax, cx
xor word [ebp - 0x110], ax
push 2
pop edx
mov al, byte [ebp - 0x100]
test dl, al
jne 0x51dd12
test al, 0xc
je 0x51dd12
mov esi, dword [ebp - 0xe4]
push 1
push dword [ebp - 0x11c]
push esi
call fcn.00523812
mov ax, word [esi + 8]
mov ecx, 0x7e00
xor ax, word [ebp - 0x100]
add esp, 0xc
and ax, cx
xor word [ebp - 0x100], ax
mov esi, dword [ebp - 0x100]
mov eax, 0x4000
test dword [ebp - 0x110], eax
je 0x51dd3a
push dword [ebp - 0x10c]
call fcn.005230d5
and dword [ebp - 0x110], 0xbfff
mov eax, 0x4000
pop ecx
test eax, esi
je 0x51dd56
push dword [ebp - 0xe4]
call fcn.005230d5
and esi, 0xbfff
pop ecx
mov dword [ebp - 0x100], esi
push dword [ebx + 0x10]
mov esi, dword [ebp - 0xe4]
push dword [ebp - 0x10c]
push esi
call fcn.00511836
add esp, 0xc
mov edx, eax
movzx eax, byte [ebx]
sub eax, 0x24
je 0x51ddae
sub eax, 1
je 0x51dda5
sub eax, 1
je 0x51dd9c
sub eax, 1
je 0x51dd93
sub eax, 1
je 0x51dd8e
not edx
shr edx, 0x1f
jmp 0x51ddb7
xor eax, eax
test edx, edx
setle al
jmp 0x51ddb5
xor eax, eax
test edx, edx
setg al
jmp 0x51ddb5
xor eax, eax
test edx, edx
sete al
jmp 0x51ddb5
xor eax, eax
test edx, edx
setne al
mov edx, eax
mov ecx, dword [ebp - 0x10c]
mov ax, word [ebp - 0x110]
mov word [ecx + 8], ax
mov ax, word [ebp - 0x100]
mov word [esi + 8], ax
test byte [ebx + 3], 0x20
je 0x51de06
imul ecx, dword [ebx + 8], 0x28
mov esi, 0x3e00
push 4
add ecx, dword [ebp - 0xd8]
mov ax, word [ecx + 8]
and ax, si
pop esi
or ax, si
mov word [ecx + 8], ax
mov eax, edx
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x51ce53
test edx, edx
jmp 0x51dc1b
mov ecx, dword [ebx + 0x10]
push 4
pop edx
add ecx, edx
mov dword [ebp - 0x180], ecx
jmp case.0x51cd74.110
test byte [ebx + 3], al
mov esi, dword [ebx + 4]
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 0x10]
push 0
mov dword [ebp - 0xfc], esi
mov esi, dword [ebx + 8]
pop eax
cmovne eax, dword [ebp - 0x180]
mov dword [ebp - 0xe8], esi
xor esi, esi
mov dword [ebp - 0x104], eax
mov dword [ebp - 0xe0], ecx
mov dword [ebp - 0xf4], edx
test ecx, ecx
jle 0x51ded6
test eax, eax
je 0x51de66
mov ecx, dword [eax + esi*4]
jmp 0x51de68
mov ecx, esi
mov eax, dword [edx + 0x10]
push dword [edx + esi*4 + 0x14]
mov al, byte [esi + eax]
mov byte [ebp - 0xd9], al
mov eax, dword [ebp - 0xe8]
add eax, ecx
imul eax, eax, 0x28
add eax, dword [ebp - 0xd8]
push eax
mov eax, dword [ebp - 0xfc]
add eax, ecx
imul eax, eax, 0x28
add eax, dword [ebp - 0xd8]
push eax
call fcn.00511836
add esp, 0xc
mov dword [ebp - 0x17c], eax
test eax, eax
jne 0x51dec5
mov eax, dword [ebp - 0x104]
inc esi
mov edx, dword [ebp - 0xf4]
cmp esi, dword [ebp - 0xe0]
jl 0x51de5d
jmp 0x51ded6
cmp byte [ebp - 0xd9], 0
je 0x51ded6
neg eax
mov dword [ebp - 0x17c], eax
and dword [ebp - 0x180], 0
jmp 0x51ce53
mov eax, dword [ebp - 0x17c]
test eax, eax
jns 0x51def1
mov eax, dword [ebx + 4]
jmp 0x51defb
jne 0x51def8
mov eax, dword [ebx + 8]
jmp 0x51defb
mov eax, dword [ebx + 0xc]
mov ebx, dword [ebp - 0x118]
imul eax, eax, 0x14
add ebx, 0xffffffec
add ebx, eax
jmp 0x51cdc1
imul eax, dword [ebx + 4], 0x28
add eax, dword [ebp - 0xd8]
test byte [eax + 8], 1
je 0x51df22
push 6
jmp 0x51df2f
push eax
call fcn.00522905
or eax, edx
pop ecx
je 0x51df32
push 3
pop esi
jmp 0x51df34
xor esi, esi
imul eax, dword [ebx + 8], 0x28
add eax, dword [ebp - 0xd8]
test byte [eax + 8], 1
je 0x51df50
mov eax, 0x57beaa
mov ecx, 0x57be0e
jmp 0x51df71
push eax
call fcn.00522905
or eax, edx
pop ecx
je 0x51df67
mov eax, 0x57bea9
mov ecx, 0x57be0d
jmp 0x51df71
mov eax, 0x57bea8
mov ecx, 0x57be0c
cmp byte [ebx], 0x1c
push 2
cmove eax, ecx
imul ecx, dword [ebx + 0xc], 0x28
mov dl, byte [eax + esi]
mov esi, 0x3e00
add ecx, dword [ebp - 0xd8]
mov ax, word [ecx + 8]
and ax, si
movzx esi, ax
pop eax
cmp dl, al
jne 0x51df9f
xor eax, eax
inc eax
jmp 0x51dfab
movzx eax, dl
cdq
push 4
mov dword [ecx], eax
mov dword [ecx + 4], edx
pop eax
or esi, eax
mov word [ecx + 8], si
jmp 0x51ce53
imul esi, dword [ebx + 8], 0x28
imul eax, dword [ebx + 4], 0x28
add esi, dword [ebp - 0xd8]
add eax, dword [ebp - 0xd8]
push esi
mov dword [ebp - 0xe8], eax
call fcn.0052359c
mov eax, dword [ebp - 0xe8]
pop ecx
test byte [eax + 8], 1
jne 0x51ce53
push 4
pop ecx
push eax
mov word [esi + 8], cx
call fcn.00522905
or eax, edx
pop ecx
jne 0x51dffe
inc eax
xor ecx, ecx
jmp 0x51e015
xorps xmm0, xmm0
movlpd qword [ebp - 0x144], xmm0
mov ecx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x144]
mov dword [esi + 4], ecx
jmp 0x51ce51
imul esi, dword [ebx + 8], 0x28
imul eax, dword [ebx + 4], 0x28
add esi, dword [ebp - 0xd8]
add eax, dword [ebp - 0xd8]
push esi
mov dword [ebp - 0xe8], eax
call fcn.0052359c
mov eax, dword [ebp - 0xe8]
pop ecx
test byte [eax + 8], 1
jne 0x51ce53
push 4
pop ecx
push eax
mov word [esi + 8], cx
call fcn.00522905
pop ecx
not eax
not edx
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x51ce53
mov eax, dword [edi + 0xd0]
mov ecx, dword [ebx + 4]
cmp byte [eax + ecx], 0
jne 0x521865
mov byte [eax + ecx], 1
jmp 0x51cdc1
imul eax, dword [ebx + 4], 0x28
add eax, dword [ebp - 0xd8]
test byte [eax + 8], 1
je 0x51e09b
mov eax, dword [ebx + 0xc]
jmp 0x51e0cd
push eax
call fcn.00523de1
fstp qword [ebp - 0x144]
movsd xmm0, qword [ebp - 0x144]
ucomisd xmm0, qword [ebp - 0x1c4]
pop ecx
lahf
test ah, 0x44
jnp 0x51e0c3
xor eax, eax
inc eax
jmp 0x51e0c5
xor eax, eax
cmp byte [ebx], 0x16
jne 0x51e0cd
xor eax, 1
test eax, eax
jmp 0x51cdf3
imul eax, dword [ebx + 4], 0x28
mov ecx, dword [ebp - 0xd8]
test byte [eax + ecx + 8], 1
jmp 0x51cdf3
imul eax, dword [ebx + 4], 0x28
mov ecx, dword [ebp - 0xd8]
test byte [eax + ecx + 8], 1
je 0x521865
jmp 0x51cdc1
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0xf4], eax
mov eax, dword [ebx + 8]
mov dword [ebp - 0x10c], eax
lea eax, [ebp - 0x10c]
push eax
lea eax, [ebp - 0xf4]
push eax
call fcn.0051ca7d
mov esi, dword [ebp - 0xf4]
imul edx, dword [ebx + 0xc], 0x28
mov dword [ebp - 0xd4], eax
pop ecx
mov eax, dword [esi + 0x54]
pop ecx
add edx, dword [ebp - 0xd8]
mov ecx, dword [esi + 0x14]
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0xd4]
mov dword [ebp - 0x124], edx
mov dword [ebp - 0xf0], ecx
test eax, eax
jne 0x521ca1
mov eax, dword [esi + 0x40]
cmp eax, dword [edi + 0x48]
je 0x51e2b5
cmp byte [esi + 2], 0
je 0x51e1a9
cmp byte [esi], 3
jne 0x51d8e3
imul eax, ecx, 0x28
add eax, dword [ebp - 0xd8]
mov ecx, dword [eax + 0xc]
mov dword [esi + 0x48], ecx
mov dword [esi + 0x44], ecx
mov eax, dword [eax + 0x10]
mov dword [ebp - 0xf8], ecx
mov dword [esi + 0x50], eax
jmp 0x51e23e
cmp byte [esi + 4], 0
jne 0x51e1eb
lea eax, [ebp - 0x224]
push eax
push ecx
call fcn.00505937
mov edx, dword [ebp - 0xf0]
pop ecx
pop ecx
movsx eax, byte [edx + 0x44]
mov ecx, dword [edx + 0x18]
mov eax, dword [edx + eax*4 + 0x78]
movzx edx, word [edx + 0x20]
mov eax, dword [eax + 0x3c]
sub eax, ecx
mov dword [esi + 0x50], ecx
cmp edx, eax
cmovae edx, eax
mov eax, dword [ebp - 0x224]
mov dword [esi + 0x44], eax
jmp 0x51e21a
push ecx
call fcn.004f8391
mov edx, dword [ebp - 0xf0]
pop ecx
mov eax, dword [edx + 0x1c]
mov dword [esi + 0x44], eax
movsx eax, byte [edx + 0x44]
mov ecx, dword [edx + 0x18]
mov eax, dword [edx + eax*4 + 0x78]
movzx edx, word [edx + 0x20]
mov eax, dword [eax + 0x3c]
sub eax, ecx
mov dword [esi + 0x50], ecx
cmp edx, eax
cmovae edx, eax
mov eax, dword [esi + 0x44]
mov dword [ebp - 0xf8], edx
cmp eax, edx
ja 0x51e22c
mov dword [esi + 0x48], eax
jmp 0x51e23e
mov ecx, dword [ebp - 0xcc]
cmp eax, dword [ecx + 0x5c]
ja 0x51d8a7
mov dword [esi + 0x48], edx
mov eax, dword [edi + 0x48]
mov edx, 0x80
mov dword [esi + 0x40], eax
mov ecx, dword [esi + 0x50]
mov al, byte [ecx]
cmp al, dl
jae 0x51e25f
movzx ecx, al
mov al, 1
mov dword [ebp - 0x18c], ecx
jmp 0x51e274
lea eax, [ebp - 0x18c]
push eax
push ecx
call fcn.0050f14d
pop ecx
pop ecx
mov ecx, dword [ebp - 0x18c]
movzx eax, al
mov dword [esi + 0x4c], eax
xor eax, eax
mov word [esi + 0x12], ax
mov eax, dword [ebp - 0x100]
mov dword [eax], ecx
cmp dword [ebp - 0xf8], ecx
jae 0x51e2cd
and dword [esi + 0x50], 0
and dword [esi + 0x48], 0
cmp ecx, 0x18003
ja 0x51e2a5
cmp ecx, dword [esi + 0x44]
jbe 0x51e2cd
push 0x13538
call fcn.0050775b
pop ecx
jmp 0x521ca1
movzx eax, word [esi + 0x12]
mov ecx, dword [ebp - 0x10c]
cmp eax, ecx
jg 0x51e519
mov eax, dword [ebp - 0x100]
mov ecx, dword [esi + 0x4c]
mov eax, dword [eax]
cmp ecx, eax
jae 0x51e4d6
mov edx, dword [esi + 0x50]
mov dword [ebp - 0x114], edx
test edx, edx
jne 0x51e343
push 0x28
push edx
lea eax, [ebp - 0x2bc]
push eax
call sub.VCRUNTIME140.dll_memset
lea eax, [ebp - 0x2bc]
push eax
xor eax, eax
cmp byte [esi + 4], al
sete al
push eax
mov eax, dword [ebp - 0x100]
push dword [eax]
push 0
push dword [ebp - 0xf0]
call fcn.005231ae
add esp, 0x20
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
mov eax, dword [ebp - 0x2ac]
mov ecx, dword [esi + 0x4c]
mov dword [ebp - 0x114], eax
mov eax, dword [ebp - 0x100]
mov eax, dword [eax]
movzx edx, word [esi + 0x12]
mov ebx, dword [ebp - 0x100]
add eax, dword [ebp - 0x114]
mov edi, dword [ebp - 0x114]
mov dword [ebp - 0x134], edx
add edi, ecx
mov edx, dword [ebx + edx*4]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0x134]
mov dword [ebp - 0xf8], edx
xor edx, edx
add eax, 0x16
lea eax, [esi + eax*4]
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp - 0xf8]
mov ebx, dword [ebp - 0xe8]
movzx ecx, byte [edi]
mov esi, eax
mov eax, 0x80
mov dword [ebp - 0xe8], edx
mov dword [ebp - 0xe4], ecx
mov dword [ebp - 0x104], ecx
cmp ecx, eax
jae 0x51e3c7
movzx eax, cl
mov dword [ebp - 0xf8], 1
movzx eax, byte [eax + 0x57be18]
cdq
jmp 0x51e3f4
lea eax, [ebp - 0x104]
push eax
push edi
call fcn.0050f14d
mov ecx, dword [ebp - 0x104]
movzx eax, al
push ecx
mov dword [ebp - 0xf8], eax
mov dword [ebp - 0xe4], ecx
call fcn.00524704
add esp, 0xc
xor edx, edx
add eax, esi
mov dword [ebx], ecx
mov esi, dword [ebp - 0x134]
adc edx, dword [ebp - 0xe8]
add edi, dword [ebp - 0xf8]
inc esi
mov dword [ebp - 0x104], edi
push 4
pop edi
add ebx, edi
mov dword [ebp - 0x134], esi
mov edi, dword [ebp - 0x100]
mov dword [edi + esi*4], eax
mov edi, dword [ebp - 0x104]
cmp esi, dword [ebp - 0x10c]
jg 0x51e43f
cmp edi, dword [ebp - 0xe0]
jb 0x51e390
mov esi, dword [ebp - 0xf4]
mov ebx, dword [ebp - 0x110]
mov dword [ebp - 0xf8], eax
mov eax, dword [ebp - 0x134]
mov word [esi + 0x12], ax
mov eax, edi
sub eax, dword [ebp - 0x114]
mov dword [esi + 0x4c], eax
mov eax, dword [ebp - 0xe0]
cmp edi, eax
mov edi, dword [ebp - 0x108]
jb 0x51e4aa
cmp dword [ebp - 0x104], eax
ja 0x51e48d
mov eax, dword [ebp - 0xf8]
cmp eax, dword [esi + 0x44]
jne 0x51e48d
test edx, edx
je 0x51e4b0
cmp dword [esi + 0x50], 0
jne 0x51e4a0
lea eax, [ebp - 0x2bc]
push eax
call fcn.00523514
pop ecx
push 0x13575
jmp 0x51e2aa
mov eax, dword [ebp - 0xf8]
test edx, edx
ja 0x51e48d
jb 0x51e4bb
cmp eax, dword [esi + 0x44]
ja 0x51e48d
cmp dword [esi + 0x50], 0
jne 0x51e4de
lea eax, [ebp - 0x2bc]
push eax
call fcn.00523514
pop ecx
mov ecx, dword [ebp - 0xe4]
jmp 0x51e4de
xor ecx, ecx
mov dword [ebp - 0xe4], ecx
movzx eax, word [esi + 0x12]
cmp eax, dword [ebp - 0x10c]
jg 0x51e525
cmp byte [ebx + 1], 0xf8
jne 0x51e50d
mov eax, 0x800
push eax
push dword [ebx + 0x10]
mov eax, dword [ebp - 0x124]
push eax
call fcn.005237bc
add esp, 0xc
jmp 0x51ce53
mov eax, dword [ebp - 0x124]
push eax
jmp 0x51d2ac
mov ecx, dword [esi + ecx*4 + 0x58]
mov dword [ebp - 0xe4], ecx
jmp 0x51e52b
mov edx, dword [ebp - 0x124]
mov eax, 0x2460
test word [edx + 8], ax
je 0x51e549
push edx
call fcn.0052359c
mov edx, dword [ebp - 0x124]
pop ecx
mov ecx, dword [ebp - 0xe4]
mov al, byte [ebp - 0x11c]
mov edi, dword [ebp - 0x100]
mov byte [edx + 0xa], al
mov edx, dword [ebp - 0x10c]
mov eax, dword [esi + 0x48]
cmp eax, dword [edi + edx*4 + 4]
mov edi, dword [ebp - 0x108]
mov edx, dword [ebp - 0x124]
jb 0x51e61e
mov eax, dword [esi + 0x50]
mov edi, dword [ebp - 0x10c]
mov esi, dword [ebp - 0x100]
add eax, dword [esi + edi*4]
mov edi, dword [ebp - 0x108]
mov dword [ebp - 0xe8], eax
cmp ecx, 0xc
jae 0x51e5a7
push edx
push ecx
push eax
call fcn.005243ee
jmp 0x51e505
lea esi, [ecx - 0xc]
shr esi, 1
mov dword [edx + 0xc], esi
lea eax, [esi + 2]
cmp dword [edx + 0x18], eax
jge 0x51e5dd
push 0
xor ecx, ecx
push eax
inc ecx
push edx
mov word [edx + 8], cx
call fcn.0052320c
add esp, 0xc
test eax, eax
jne 0x51e81f
mov eax, dword [ebp - 0x124]
mov eax, dword [eax + 0x10]
jmp 0x51e5e3
mov eax, dword [edx + 0x14]
mov dword [edx + 0x10], eax
push esi
push dword [ebp - 0xe8]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x124]
add esp, 0xc
mov eax, dword [ecx + 0x10]
mov byte [esi + eax], 0
mov eax, dword [ecx + 0x10]
mov byte [eax + esi + 1], 0
mov eax, dword [ebp - 0xe4]
and eax, 1
mov ax, word [eax*2 + 0x57beb4]
jmp 0x51d588
mov al, byte [ebx + 3]
test al, 0xc0
je 0x51e633
cmp ecx, 0xc
jb 0x51e62f
test cl, 1
je 0x51e646
test al, al
js 0x51e646
push ecx
call fcn.00524704
add esp, 4
mov dword [ebp - 0xe8], eax
test eax, eax
jne 0x51e652
push edx
push ecx
push 0x6044f8
jmp 0x51e59d
mov ecx, dword [ebp - 0x10c]
xor eax, eax
cmp byte [esi + 4], al
push edx
sete al
push eax
mov eax, dword [ebp - 0x100]
push dword [ebp - 0xe8]
push dword [eax + ecx*4]
push dword [ebp - 0xf0]
call fcn.005231ae
add esp, 0x14
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
mov esi, dword [ebp - 0x124]
mov eax, dword [ebp - 0xe4]
push esi
push eax
push dword [esi + 0x10]
call fcn.005243ee
mov eax, 0xefff
add esp, 0xc
and word [esi + 8], ax
jmp 0x51ce53
mov eax, dword [ebx + 0x10]
imul esi, dword [ebx + 4], 0x28
mov dword [ebp - 0xe8], eax
mov al, byte [eax]
mov byte [ebp - 0x184], al
add esi, dword [ebp - 0xd8]
test al, al
je 0x51ce53
mov edi, dword [ebp - 0xe8]
mov ebx, dword [ebp - 0x11c]
push ebx
push dword [ebp - 0x184]
inc edi
push esi
call fcn.004ed854
mov al, byte [edi]
add esp, 0xc
add esi, 0x28
mov byte [ebp - 0x184], al
test al, al
jne 0x51e6e3
jmp 0x51d0be
imul ecx, dword [ebx + 4], 0x28
xor eax, eax
movzx edx, byte [edi + 0x5c]
xorps xmm0, xmm0
mov esi, dword [ebx + 0x10]
mov edi, dword [ebp - 0x108]
mov dword [ebp - 0x100], eax
imul eax, dword [ebx + 8], 0x28
add ecx, dword [ebp - 0xd8]
movlpd qword [ebp - 0x144], xmm0
movlpd qword [ebp - 0x170], xmm0
mov dword [ebp - 0xf4], ecx
add eax, 0xffffffd8
mov dword [ebp - 0x104], edx
add eax, ecx
mov dword [ebp - 0x134], eax
imul eax, dword [ebx + 0xc], 0x28
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0x10c], eax
test esi, esi
je 0x51e7ab
mov al, byte [esi]
mov edi, ecx
mov ebx, dword [ebp - 0x11c]
mov byte [ebp - 0x188], al
push ebx
push dword [ebp - 0x188]
push edi
call fcn.004ed854
add esp, 0xc
add edi, 0x28
inc esi
mov al, byte [esi]
mov byte [ebp - 0x188], al
test al, al
jne 0x51e779
mov ebx, dword [ebp - 0x110]
mov edi, dword [ebp - 0x108]
mov edx, dword [ebp - 0x104]
mov eax, dword [ebp - 0x140]
mov esi, dword [ebp - 0x134]
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0x144]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x16c]
mov dword [ebp - 0x114], eax
mov eax, dword [ebp - 0x170]
mov dword [ebp - 0xf8], eax
lea eax, [ebp - 0x178]
push eax
push edx
push esi
call fcn.005245f5
mov ecx, 0x4000
mov dword [ebp - 0xe0], eax
add esp, 0xc
mov dword [esi + 0x1c], eax
test word [esi + 8], cx
je 0x51e85e
mov ecx, dword [ebp - 0xe4]
or ecx, dword [ebp - 0xf0]
je 0x51e841
push esi
call fcn.005230d5
pop ecx
test eax, eax
je 0x51e858
mov esi, dword [ebp - 0xcc]
push esi
call fcn.00511b99
mov dword [esp], str.out_of_memory
push edi
call fcn.0051cc20
pop ecx
pop ecx
push 7
jmp 0x521938
mov ecx, dword [esi]
mov eax, ecx
cdq
add dword [ebp - 0xf8], eax
adc dword [ebp - 0x114], edx
sub dword [ebp - 0x178], ecx
mov eax, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xe4]
add ecx, dword [ebp - 0x178]
mov dword [ebp - 0xe4], ecx
adc dword [ebp - 0xf0], 0
cmp eax, 0x7f
ja 0x51e881
xor ecx, ecx
inc ecx
jmp 0x51e88d
push 0
push eax
call fcn.0051c45b
pop ecx
pop ecx
mov ecx, eax
mov eax, dword [ebp - 0x100]
add eax, ecx
mov dword [ebp - 0x100], eax
cmp esi, dword [ebp - 0xf4]
je 0x51e8b1
mov edx, dword [ebp - 0x104]
sub esi, 0x28
jmp 0x51e7e1
cmp eax, 0x7e
jle 0x51e8e3
cdq
push edx
push eax
call fcn.0051c45b
mov esi, eax
mov eax, dword [ebp - 0x100]
add eax, esi
mov dword [ebp - 0x100], eax
cdq
push edx
push eax
call fcn.0051c45b
add esp, 0x10
cmp esi, eax
mov eax, dword [ebp - 0x100]
jge 0x51e8ea
inc eax
mov dword [ebp - 0x100], eax
mov esi, dword [ebp - 0xf0]
cdq
mov ecx, edx
mov dword [ebp - 0xfc], eax
mov edx, dword [ebp - 0xe4]
add edx, eax
mov dword [ebp - 0xe8], ecx
mov eax, dword [ebp - 0xcc]
adc esi, ecx
mov dword [ebp - 0xe4], edx
mov ecx, edx
add ecx, dword [ebp - 0xf8]
mov eax, dword [eax + 0x5c]
adc esi, dword [ebp - 0x114]
cdq
cmp esi, edx
jg 0x51d8a7
jl 0x51e939
cmp ecx, eax
ja 0x51d8a7
push dword [ebp - 0xe4]
mov esi, dword [ebp - 0x10c]
push esi
call fcn.0052303f
pop ecx
pop ecx
test eax, eax
jne 0x51e81f
mov ecx, dword [ebp - 0x100]
mov edx, 0x80
mov esi, dword [esi + 0x10]
cmp ecx, edx
jae 0x51e96c
mov byte [esi], cl
inc eax
jmp 0x51e986
push dword [ebp - 0xe8]
push dword [ebp - 0xfc]
push esi
call fcn.00516431
add esp, 0xc
mov edx, 0x80
mov ebx, dword [ebp - 0xf4]
movzx edi, al
mov eax, dword [ebx + 0x1c]
lea ecx, [edi + esi]
mov dword [ebp - 0xe8], eax
cmp eax, edx
jae 0x51e9a6
mov byte [ecx], al
xor eax, eax
inc eax
jmp 0x51e9b2
push 0
push eax
push ecx
call fcn.00516431
add esp, 0xc
push dword [ebp - 0xe8]
movzx eax, al
add edi, eax
mov eax, dword [ebp - 0x100]
add eax, esi
push ebx
push eax
call fcn.00524576
add dword [ebp - 0x100], eax
add ebx, 0x28
add esp, 0xc
mov edx, 0x80
cmp ebx, dword [ebp - 0x134]
jbe 0x51e98f
mov ecx, dword [ebp - 0x10c]
mov eax, dword [ebp - 0xe4]
mov edx, dword [ebp - 0xf8]
mov ebx, dword [ebp - 0x110]
mov edi, dword [ebp - 0x108]
mov dword [ecx + 0xc], eax
push 0x10
pop eax
mov word [ecx + 8], ax
mov eax, edx
or eax, dword [ebp - 0x114]
je 0x51ea22
mov eax, 0x4010
mov dword [ecx], edx
mov word [ecx + 8], ax
xor eax, eax
inc eax
mov byte [ecx + 0xa], al
mov esi, dword [ebp - 0xcc]
jmp case.0x51cd74.110
mov ecx, dword [ebx + 4]
xorps xmm0, xmm0
mov eax, dword [edi + 0x38]
movlpd qword [ebp - 0x144], xmm0
mov eax, dword [eax + ecx*4]
lea ecx, [ebp - 0x144]
push ecx
push dword [eax + 0x14]
call fcn.00504e57
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x521ca7
push ebx
push edi
call fcn.004fbc82
pop ecx
pop ecx
mov ecx, dword [ebp - 0x144]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x140]
jmp 0x51cf2b
mov ecx, dword [ebx + 4]
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0xe4], ecx
mov dword [ebp - 0xf4], eax
test ecx, ecx
jne 0x51eb72
cmp dword [esi + 0xa0], ecx
jg 0x521929
push eax
call fcn.00519db1
mov esi, eax
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0xe8], esi
mov ecx, dword [eax + 0x1b4]
add ecx, dword [eax + 0x1b0]
push ecx
push 0
push eax
call fcn.005257d2
add esp, 0x10
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
lea eax, [esi + 0x21]
push 0
push eax
push dword [ebp - 0xcc]
call fcn.00508851
mov esi, eax
add esp, 0xc
test esi, esi
je 0x51ce53
mov ecx, dword [ebp - 0xe8]
lea edx, [esi + 0x20]
inc ecx
mov dword [esi], edx
push ecx
push dword [ebp - 0xf4]
push edx
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0xcc]
add esp, 0xc
cmp byte [ecx + 0x43], 0
je 0x51eb32
mov byte [ecx + 0x43], 0
mov byte [ecx + 0x4b], 1
jmp 0x51eb38
inc dword [ecx + 0x1b0]
mov eax, dword [ecx + 0x1a8]
mov dword [esi + 0x18], eax
mov eax, dword [ecx + 0x1b8]
mov dword [ecx + 0x1a8], esi
mov dword [esi + 8], eax
mov eax, dword [ecx + 0x1bc]
mov dword [esi + 0xc], eax
mov eax, dword [ecx + 0x1c0]
mov dword [esi + 0x10], eax
mov eax, dword [ecx + 0x1c4]
mov dword [esi + 0x14], eax
mov esi, ecx
jmp 0x51cdc1
and dword [ebp - 0x10c], 0
mov esi, dword [esi + 0x1a8]
test esi, esi
je 0x52197e
mov edi, dword [ebp - 0xf4]
mov ebx, dword [ebp - 0x10c]
push edi
push dword [esi]
call fcn.00519d43
pop ecx
pop ecx
test eax, eax
je 0x51eba9
mov esi, dword [esi + 0x18]
inc ebx
test esi, esi
jne 0x51eb93
mov edi, dword [ebp - 0x108]
mov dword [ebp - 0x10c], ebx
mov ebx, dword [ebp - 0x110]
test esi, esi
je 0x521978
mov ecx, dword [ebp - 0xcc]
xor eax, eax
mov edx, dword [ebp - 0xe4]
inc eax
cmp dword [ecx + 0xa0], 0
jle 0x51ebe3
cmp edx, eax
je 0x52193e
cmp dword [esi + 0x18], 0
jne 0x51ec44
cmp byte [ecx + 0x4b], 0
je 0x51ec44
mov dword [ebp - 0xf0], eax
cmp edx, eax
jne 0x51ec4b
push eax
push edi
call fcn.0051c815
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x5219b3
mov eax, dword [ebp - 0xcc]
push edi
mov byte [eax + 0x43], 1
call fcn.005224e6
pop ecx
push 5
pop ecx
cmp eax, ecx
je 0x521952
mov edx, dword [ebp - 0xcc]
mov byte [edx + 0x4b], 0
mov eax, dword [edi + 0x50]
mov dword [ebp - 0xd4], eax
jmp 0x51eda8
and dword [ebp - 0xf0], 0
mov eax, dword [ecx + 0x1b0]
sub eax, dword [ebp - 0x10c]
dec eax
mov dword [ebp - 0x10c], eax
mov eax, dword [ecx + 0x14]
cmp edx, 2
jne 0x51ed02
mov ecx, dword [ecx + 0x18]
and dword [ebp - 0xe0], 0
shr ecx, 1
and ecx, 1
mov dword [ebp - 0xf4], ecx
test eax, eax
jle 0x51ed0a
mov edx, ecx
xor edx, 1
xor ecx, ecx
mov dword [ebp - 0xe8], edx
mov dword [ebp - 0x104], ecx
mov eax, dword [ebp - 0xcc]
push edx
push 0x204
mov eax, dword [eax + 0x10]
push dword [ecx + eax + 4]
call fcn.00506828
add esp, 0xc
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
mov ecx, dword [ebp - 0x104]
mov edx, dword [ebp - 0xe0]
push 0x10
pop eax
add ecx, eax
inc edx
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0xe0], edx
mov dword [ebp - 0x104], ecx
mov eax, dword [eax + 0x14]
cmp edx, eax
mov edx, dword [ebp - 0xe8]
jl 0x51ec9a
mov ecx, dword [ebp - 0xf4]
mov edx, dword [ebp - 0xe4]
jmp 0x51ed0a
xor ecx, ecx
mov dword [ebp - 0xf4], ecx
and dword [ebp - 0xe0], 0
test eax, eax
jle 0x51ed7c
xor ecx, ecx
mov dword [ebp - 0x104], ecx
mov eax, dword [ebp - 0xcc]
push dword [ebp - 0x10c]
push edx
mov eax, dword [eax + 0x10]
push dword [ecx + eax + 4]
call fcn.00506516
add esp, 0xc
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
mov ecx, dword [ebp - 0x104]
mov eax, dword [ebp - 0xe0]
push 0x10
pop edx
add ecx, edx
inc eax
mov edx, dword [ebp - 0xcc]
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0x104], ecx
cmp eax, dword [edx + 0x14]
mov edx, dword [ebp - 0xe4]
jl 0x51ed1d
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
je 0x51eda2
mov ecx, dword [ebp - 0xcc]
push ecx
call fcn.00509f7d
push ecx
call fcn.00516a80
mov edx, dword [ebp - 0xcc]
pop ecx
pop ecx
push 2
pop eax
or dword [edx + 0x18], eax
jmp 0x51eda8
mov edx, dword [ebp - 0xcc]
cmp dword [edx + 0x1a8], esi
je 0x51ede8
mov edi, dword [ebp - 0xcc]
mov ecx, dword [edi + 0x1a8]
push ecx
push edi
mov eax, dword [ecx + 0x18]
mov dword [edi + 0x1a8], eax
call fcn.005087dc
dec dword [edi + 0x1b0]
pop ecx
pop ecx
cmp dword [edi + 0x1a8], esi
jne 0x51edb6
mov edi, dword [ebp - 0x108]
mov edx, dword [ebp - 0xcc]
mov ecx, dword [ebp - 0xe4]
cmp ecx, 1
jne 0x51ee26
mov eax, dword [esi + 0x18]
push esi
mov esi, dword [ebp - 0xcc]
push esi
mov dword [edx + 0x1a8], eax
call fcn.005087dc
cmp dword [ebp - 0xf0], 0
pop ecx
pop ecx
jne 0x51f0e7
dec dword [esi + 0x1b0]
mov ecx, dword [ebp - 0xe4]
jmp 0x51ee64
cmp dword [ebp - 0xf0], 0
mov eax, dword [esi + 8]
mov dword [edx + 0x1b8], eax
mov eax, dword [esi + 0xc]
mov dword [edx + 0x1bc], eax
mov eax, dword [esi + 0x10]
mov dword [edx + 0x1c0], eax
mov eax, dword [esi + 0x14]
mov esi, dword [ebp - 0xcc]
mov dword [esi + 0x1c4], eax
je 0x51ee64
push 2
pop eax
cmp ecx, eax
jne 0x51f0e7
push dword [ebp - 0x10c]
push ecx
push esi
call fcn.005257d2
add esp, 0xc
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca7
jmp 0x51db7d
cmp dword [ebx + 8], 0
je 0x51ee9a
test dword [esi + 0x18], 0x4000000
jne 0x521995
mov ecx, dword [ebx + 4]
mov eax, dword [esi + 0x10]
add ecx, ecx
mov esi, dword [eax + ecx*8 + 4]
mov dword [ebp - 0xe0], esi
test esi, esi
je 0x51efd0
push dword [ebx + 8]
push esi
call fcn.005048ec
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
cmp al, 5
je 0x521999
test eax, eax
jne 0x521ca1
cmp dword [ebx + 8], eax
je 0x51efa1
push 0x10
pop eax
test byte [edi + 0x60], al
je 0x51efa1
mov edx, dword [ebp - 0xcc]
cmp byte [edx + 0x43], 0
je 0x51ef03
cmp dword [edx + 0x9c], 1
jle 0x51efa1
mov eax, dword [edi + 0x70]
test eax, eax
jne 0x51ef1f
mov eax, dword [edx + 0x1b0]
inc dword [edx + 0x1b4]
add eax, dword [edx + 0x1b4]
mov dword [edi + 0x70], eax
dec eax
push eax
push 0
push edx
call fcn.005257d2
add esp, 0xc
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x51ef6b
mov eax, dword [ebp - 0xe0]
mov esi, dword [edi + 0x70]
push eax
mov edi, dword [eax + 4]
call fcn.00505284
push esi
push dword [edi]
call fcn.00512eea
mov esi, dword [ebp - 0xe0]
push esi
mov dword [ebp - 0xd4], eax
call fcn.005059b0
mov edi, dword [ebp - 0x108]
add esp, 0x10
mov ecx, dword [ebp - 0xcc]
mov eax, dword [ecx + 0x1b8]
mov dword [edi + 0xa0], eax
mov eax, dword [ecx + 0x1bc]
mov dword [edi + 0xa4], eax
mov eax, dword [ecx + 0x1c0]
mov dword [edi + 0xa8], eax
mov eax, dword [ecx + 0x1c4]
mov dword [edi + 0xac], eax
lea eax, [ebp - 0x198]
push eax
push 1
push esi
call fcn.00505321
mov edx, dword [ebp - 0xcc]
add esp, 0xc
mov ecx, dword [ebx + 4]
mov esi, dword [ebp - 0x198]
add ecx, ecx
mov eax, dword [edx + 0x10]
mov eax, dword [eax + ecx*8 + 0xc]
mov eax, dword [eax + 4]
jmp 0x51efe0
mov edx, dword [ebp - 0xcc]
xor esi, esi
mov dword [ebp - 0x198], esi
xor eax, eax
cmp byte [ebx + 3], 0
je 0x51db71
cmp esi, dword [ebx + 0xc]
jne 0x51eff8
cmp eax, dword [ebx + 0x10]
je 0x51db71
push dword [edi + 0x2c]
push edx
call fcn.005087dc
push str.database_schema_has_changed
push dword [ebp - 0xcc]
call fcn.00508a0a
mov edx, dword [ebp - 0xcc]
add esp, 0x10
mov dword [edi + 0x2c], eax
mov ecx, dword [ebx + 4]
add ecx, ecx
mov eax, dword [edx + 0x10]
mov eax, dword [eax + ecx*8 + 0xc]
cmp dword [eax], esi
je 0x51f038
push dword [ebx + 4]
push edx
call fcn.00516ad2
pop ecx
pop ecx
or dword [edi + 0x58], 1
push 0x11
pop eax
mov dword [ebp - 0xd4], eax
jmp 0x51db77
mov ecx, dword [ebx + 4]
lea eax, [ebp - 0x19c]
push eax
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [ebx + 0xc]
push dword [eax + ecx*8 + 4]
call fcn.00505321
push ebx
push edi
call fcn.004fbc82
mov ecx, eax
add esp, 0x14
mov eax, dword [ebp - 0x19c]
jmp 0x51cf0d
mov eax, dword [ebp - 0xcc]
mov esi, dword [ebx + 4]
push dword [ebx + 0xc]
shl esi, 4
add esi, dword [eax + 0x10]
push dword [ebx + 8]
push dword [esi + 4]
call fcn.005068da
add esp, 0xc
mov dword [ebp - 0xd4], eax
xor edx, edx
inc edx
push 2
cmp dword [ebx + 8], edx
jne 0x51f0c0
mov ecx, dword [esi + 0xc]
mov eax, dword [ebx + 0xc]
mov esi, dword [ebp - 0xcc]
mov dword [ecx], eax
pop eax
or dword [esi + 0x18], eax
jmp 0x51f0d5
pop eax
cmp dword [ebx + 8], eax
jne 0x51f0cf
mov ecx, dword [esi + 0xc]
mov al, byte [ebx + 0xc]
mov byte [ecx + 0x4c], al
mov esi, dword [ebp - 0xcc]
cmp dword [ebx + 4], edx
jne 0x51f0e7
push esi
call fcn.00509f7d
add esp, 4
and dword [edi + 0x58], 0xfffffffe
mov eax, dword [ebp - 0xd4]
jmp 0x51db7d
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov esi, dword [eax + ecx*4]
test esi, esi
je 0x51f10b
mov eax, dword [esi + 0xc]
cmp eax, dword [ebx + 8]
je 0x51f23f
mov esi, dword [ebp - 0xcc]
mov cl, byte [ebp - 0xd9]
test byte [edi + 0x58], 1
jne 0x5219f3
mov edx, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
mov eax, esi
and dword [ebp - 0xfc], 0
and dword [ebp - 0xf0], 0
mov dword [ebp - 0xf4], edx
mov edx, dword [ebp - 0xcc]
shl eax, 4
mov dword [ebp - 0xe8], esi
add eax, dword [edx + 0x10]
mov edx, dword [eax + 4]
mov dword [ebp - 0x104], edx
mov edx, dword [ebp - 0xf4]
cmp cl, 0x67
jne 0x51f183
mov eax, dword [eax + 0xc]
movzx ecx, byte [ebx + 3]
and ecx, 8
or ecx, 4
mov al, byte [eax + 0x4c]
mov dword [ebp - 0xe0], ecx
cmp al, byte [edi + 0x5c]
jae 0x51f18a
mov byte [edi + 0x5c], al
jmp 0x51f18a
and dword [ebp - 0xe0], 0
push 0x10
pop eax
test byte [ebx + 3], al
je 0x51f1b0
imul esi, edx, 0x28
add esi, dword [ebp - 0xd8]
push esi
call fcn.00523377
mov eax, dword [esi]
mov esi, dword [ebp - 0xe8]
pop ecx
mov dword [ebp - 0xf4], eax
mov al, byte [ebx + 1]
cmp al, 0xfa
jne 0x51f1cc
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0xf0], eax
movzx ecx, word [eax + 8]
movzx eax, word [eax + 6]
add ecx, eax
jmp 0x51f1db
cmp al, 0xf2
jne 0x51f1d5
mov ecx, dword [ebx + 0x10]
jmp 0x51f1db
mov ecx, dword [ebp - 0xfc]
push 0
push esi
push ecx
push dword [ebx + 4]
push edi
call fcn.004ecbe9
mov esi, eax
add esp, 0x14
test esi, esi
je 0x51e81f
push 4
pop eax
push dword [esi + 0x14]
or dword [esi + 8], eax
push dword [ebp - 0xf0]
mov eax, dword [ebp - 0xf4]
push dword [ebp - 0xe0]
mov byte [esi + 2], 1
push eax
push dword [ebp - 0x104]
mov dword [esi + 0xc], eax
call fcn.00504f82
mov dword [ebp - 0xd4], eax
add esp, 0x14
mov eax, dword [ebp - 0xf0]
mov dword [esi + 0x1c], eax
cmp byte [ebx + 1], 0xfa
setne al
mov byte [esi + 4], al
mov cl, byte [ebx + 3]
mov eax, dword [esi + 0x14]
and cl, 3
mov byte [eax + 0x43], cl
jmp 0x51db71
push 0
push 0xffffffffffffffff
push dword [ebx + 8]
push dword [ebx + 4]
push edi
call fcn.004ecbe9
mov esi, eax
add esp, 0x14
test esi, esi
je 0x51e81f
xor ecx, ecx
lea eax, [esi + 8]
inc ecx
mov dword [ebp - 0xfc], eax
or dword [eax], ecx
mov byte [esi + 2], cl
lea ecx, [esi + 0x18]
movzx eax, byte [ebx + 3]
push 0x41e
or eax, 5
push eax
mov eax, dword [ebp - 0xcc]
push ecx
push eax
push 0
push dword [eax]
call fcn.00505e2c
add esp, 0x18
test eax, eax
jne 0x521ca1
push 1
push dword [esi + 0x18]
call fcn.005048ec
pop ecx
pop ecx
test eax, eax
jne 0x521ca1
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0xe8], eax
test eax, eax
je 0x51f31d
movzx eax, byte [ebx + 3]
push 2
pop ecx
or eax, ecx
push eax
lea eax, [ebp - 0x1a0]
push eax
push dword [esi + 0x18]
call fcn.00504f56
add esp, 0xc
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x51f319
push dword [esi + 0x14]
mov eax, dword [ebp - 0xe8]
push eax
push 4
mov dword [esi + 0x1c], eax
pop eax
push eax
push dword [ebp - 0x1a0]
push dword [esi + 0x18]
call fcn.00504f82
add esp, 0x14
mov dword [ebp - 0xd4], eax
xor cl, cl
jmp 0x51f33b
push dword [esi + 0x14]
push 0
push 4
pop eax
push eax
push 1
push dword [esi + 0x18]
call fcn.00504f82
add esp, 0x14
mov dword [ebp - 0xd4], eax
mov cl, 1
mov byte [esi + 4], cl
mov esi, dword [ebp - 0xcc]
test eax, eax
jne 0x521ca7
mov edx, dword [ebp - 0xfc]
xor ecx, ecx
cmp byte [ebx + 3], 8
push 4
pop eax
cmovne ecx, eax
mov eax, dword [edx]
and eax, 0xfffffffb
or ecx, eax
mov dword [edx], ecx
jmp 0x51cdc1
push eax
push 0xffffffffffffffff
push dword [ebx + 8]
push dword [ebx + 4]
push edi
call fcn.004ecbe9
add esp, 0x14
test eax, eax
je 0x51e825
mov ecx, dword [ebx + 0x10]
push eax
mov dword [eax + 0x1c], ecx
push dword [ebx + 0xc]
push esi
call fcn.005248a9
add esp, 0xc
mov dword [ebp - 0xd4], eax
jmp 0x51db7d
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 4]
mov edx, dword [eax + ecx*4]
mov edi, dword [edx + 0x28]
mov ecx, edi
mov esi, dword [edx + 0x2c]
add ecx, 1
mov eax, esi
mov dword [edx + 0x28], ecx
adc eax, 0
or edi, esi
mov edi, dword [ebp - 0x108]
mov dword [edx + 0x2c], eax
je 0x521865
jmp 0x51ce53
push 3
push 0xffffffffffffffff
push dword [ebx + 0xc]
push dword [ebx + 4]
push edi
call fcn.004ecbe9
add esp, 0x14
test eax, eax
je 0x51e825
xor edx, edx
inc edx
mov byte [eax + 2], dl
mov ecx, dword [ebx + 8]
mov dword [eax + 0x14], ecx
mov byte [eax + 4], dl
jmp 0x51cdc1
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
push dword [eax + ecx*4]
push edi
call fcn.005223e5
mov eax, dword [edi + 0x38]
pop ecx
pop ecx
mov ecx, dword [ebx + 4]
and dword [eax + ecx*4], 0
jmp 0x51cdc1
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov esi, dword [eax + ecx*4]
xor ecx, ecx
mov dword [ebp - 0xf0], ecx
mov byte [esi + 2], cl
cmp byte [esi + 4], cl
je 0x51f52d
imul ecx, dword [ebx + 0xc], 0x28
push 2
pop edx
add ecx, dword [ebp - 0xd8]
mov dword [ebp - 0xf4], ecx
mov al, byte [ecx + 8]
and al, 0xe
cmp al, dl
jne 0x51f46e
push 0
push ecx
call fcn.004ed8be
pop ecx
pop ecx
mov ecx, dword [ebp - 0xf4]
push ecx
call fcn.00522905
pop ecx
mov ecx, dword [ebp - 0xf4]
push 4
mov dword [ebp - 0xf8], eax
pop eax
movzx ecx, word [ecx + 8]
mov dword [ebp - 0x114], edx
test al, cl
jne 0x51f4e6
test cl, 8
je 0x521865
mov ecx, dword [ebp - 0xf8]
call fcn.00536fc0
mov eax, dword [ebp - 0xf4]
movsd xmm1, qword [eax]
comisd xmm0, xmm1
jbe 0x51f4cf
mov ecx, dword [ebp - 0xe4]
test cl, 1
lea eax, [ecx - 1]
cmovne eax, ecx
mov ecx, eax
mov dword [ebp - 0xe4], ecx
jmp 0x51f4e6
comisd xmm1, xmm0
jbe 0x51f4e6
mov eax, dword [ebp - 0xe4]
test al, 1
je 0x51f4e6
inc eax
mov dword [ebp - 0xe4], eax
lea eax, [ebp - 0x130]
push eax
push 0
push dword [ebp - 0x114]
push dword [ebp - 0xf8]
push 0
push dword [esi + 0x14]
call fcn.00505a4e
mov ecx, dword [ebp - 0xf8]
add esp, 0x18
mov dword [esi + 0x30], ecx
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0xd4], eax
mov dword [esi + 0x34], ecx
test eax, eax
jne 0x521ca1
jmp 0x51f5e3
mov eax, dword [esi + 0x14]
push 0
mov al, byte [eax + 0x43]
and al, 2
mov byte [ebp - 0xd9], al
pop eax
setne al
mov dword [ebp - 0xf0], eax
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x1bc], eax
mov ax, word [ebx + 0x10]
mov word [ebp - 0x1b4], ax
lea eax, [edx - 1]
and al, 1
mov edx, 0x4000
neg al
sbb al, al
and al, 0xfe
inc al
mov byte [ebp - 0x1b2], al
imul eax, dword [ebx + 0xc], 0x28
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0x1b8], eax
test word [eax + 8], dx
je 0x51f592
push eax
call fcn.005230d5
pop ecx
xor ecx, ecx
lea eax, [ebp - 0x130]
mov byte [ebp - 0x1ae], cl
push eax
push ecx
push ecx
push ecx
lea eax, [ebp - 0x1bc]
push eax
push dword [esi + 0x14]
call fcn.00505a4e
add esp, 0x18
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
cmp byte [ebp - 0xd9], al
je 0x51f5e3
cmp byte [ebp - 0x1ae], 0
mov eax, dword [ebp - 0xf0]
mov dword [ebp - 0xf0], eax
je 0x51f66f
and dword [esi + 0x40], 0
mov eax, dword [ebp - 0xe4]
mov byte [esi + 3], 0
mov ecx, dword [ebp - 0x130]
cmp eax, 0x19
jl 0x51f628
test ecx, ecx
js 0x51f610
jne 0x51f607
cmp eax, 0x1a
je 0x51f610
and dword [ebp - 0x130], 0
jmp 0x51f67c
and dword [ebp - 0x130], 0
lea eax, [ebp - 0x130]
push eax
push dword [esi + 0x14]
call fcn.00505dc1
jmp 0x51f65f
test ecx, ecx
jg 0x51f649
jne 0x51f635
push 0x17
pop ecx
cmp eax, ecx
je 0x51f649
mov eax, dword [esi + 0x14]
xor ecx, ecx
cmp byte [eax + 0x42], 1
setne cl
mov dword [ebp - 0x130], ecx
jmp 0x51f66f
and dword [ebp - 0x130], 0
lea eax, [ebp - 0x130]
push eax
push dword [esi + 0x14]
call fcn.005063ba
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x521ca1
cmp dword [ebp - 0x130], 0
jne 0x521865
cmp dword [ebp - 0xf0], 0
lea eax, [ebx + 0x14]
cmove eax, ebx
mov ebx, eax
jmp 0x51ce53
imul esi, dword [ebx + 0xc], 0x28
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
and dword [ebp - 0x134], 0
add esi, dword [ebp - 0xd8]
cmp dword [ebx + 0x10], 0
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x104], eax
jle 0x51f734
mov eax, dword [eax + 0x1c]
xor edx, edx
movzx ecx, word [ebx + 0x10]
mov dword [ebp - 0x1fc], eax
xor eax, eax
mov word [ebp - 0x1f4], cx
mov dword [ebp - 0x1f8], esi
mov dword [ebp - 0xe0], edx
cmp ax, cx
jae 0x51f726
xor edi, edi
mov ebx, 0x4000
lea eax, [edi + esi]
test word [eax + 8], bx
je 0x51f709
push eax
call fcn.005230d5
mov esi, dword [ebp - 0x1f8]
mov edx, dword [ebp - 0xe0]
pop ecx
mov cx, word [ebp - 0x1f4]
inc edx
movzx eax, cx
add edi, 0x28
mov dword [ebp - 0xe0], edx
cmp edx, eax
jl 0x51f6e6
mov ebx, dword [ebp - 0x110]
mov edi, dword [ebp - 0x108]
mov esi, dword [ebp - 0x104]
lea eax, [ebp - 0x1fc]
jmp 0x51f796
lea ecx, [ebp - 0x134]
push ecx
push 0xb7
lea ecx, [ebp - 0xbc]
push ecx
push dword [eax + 0x1c]
call fcn.0051c6bd
add esp, 0x10
mov dword [ebp - 0xe0], eax
test eax, eax
je 0x51e81f
mov ecx, 0x4000
test word [esi + 8], cx
je 0x51f778
push esi
call fcn.005230d5
mov eax, dword [ebp - 0xe0]
pop ecx
push eax
push dword [esi + 0x10]
push dword [esi + 0xc]
mov esi, dword [ebp - 0x104]
push dword [esi + 0x1c]
call fcn.00524224
mov eax, dword [ebp - 0xe0]
add esp, 0x10
and dword [ebp - 0xe0], 0
mov byte [eax + 0xa], 0
cmp byte [ebx], 0x1d
jne 0x51f7d9
movzx ecx, word [eax + 8]
xor edx, edx
mov dword [ebp - 0xe8], ecx
test ecx, ecx
je 0x51f7d9
mov ecx, dword [eax + 4]
add ecx, 8
test byte [ecx], 1
jne 0x51f7cf
inc edx
add ecx, 0x28
cmp edx, dword [ebp - 0xe8]
jl 0x51f7bc
jmp 0x51f7d9
mov dword [ebp - 0xe0], 1
lea ecx, [ebp - 0x1a4]
push ecx
xor ecx, ecx
push ecx
push ecx
push ecx
push eax
push dword [esi + 0x14]
call fcn.00505a4e
push dword [ebp - 0x134]
mov dword [ebp - 0xd4], eax
push dword [ebp - 0xcc]
call fcn.005087dc
mov eax, dword [ebp - 0xd4]
add esp, 0x20
test eax, eax
jne 0x521ca1
mov eax, dword [ebp - 0x1a4]
xor ecx, ecx
test eax, eax
mov dword [esi + 0x20], eax
mov byte [esi + 3], 0
sete cl
test eax, eax
setne al
and dword [esi + 0x40], 0
mov byte [esi + 2], al
cmp byte [ebx], 0x1f
jne 0x51f842
test ecx, ecx
jmp 0x51dc1b
cmp dword [ebp - 0xe0], 0
jne 0x521865
test ecx, ecx
jmp 0x51f3cb
mov eax, dword [edi + 0x38]
xor edx, edx
mov ecx, dword [ebx + 4]
mov dword [ebp - 0xe0], edx
mov ebx, dword [eax + ecx*4]
mov eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0xd8]
imul eax, dword [eax + 0xc], 0x28
mov esi, dword [eax + ecx]
mov edi, dword [eax + ecx + 4]
lea eax, [ebp - 0xe0]
push eax
push edx
push edi
push esi
push edx
push dword [ebx + 0x14]
call fcn.00505a4e
mov dword [ebp - 0xd4], eax
add esp, 0x18
xor eax, eax
mov dword [ebx + 0x30], esi
mov word [ebx + 2], ax
mov dword [ebx + 0x40], eax
mov eax, dword [ebp - 0xe0]
mov dword [ebx + 0x34], edi
mov dword [ebx + 0x20], eax
mov ebx, dword [ebp - 0x110]
test eax, eax
je 0x51f8d9
cmp dword [ebx + 8], 0
jne 0x52185f
push 0x13b6c
call fcn.0050775b
pop ecx
mov dword [ebp - 0xd4], eax
jmp 0x51f8df
mov eax, dword [ebp - 0xd4]
mov edi, dword [ebp - 0x108]
jmp 0x51db77
push ebx
push edi
call fcn.004fbc82
mov edx, dword [ebx + 4]
pop ecx
pop ecx
mov ecx, dword [edi + 0x38]
mov edx, dword [ecx + edx*4]
mov ecx, dword [edx + 0x28]
mov dword [eax], ecx
mov ecx, dword [edx + 0x2c]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov eax, dword [eax + ecx*4]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], 0
jmp 0x51cdc1
and dword [ebp - 0xf0], 0
xorps xmm0, xmm0
push ebx
push edi
movlpd qword [ebp - 0x12c], xmm0
call fcn.004fbc82
mov edx, dword [ebx + 4]
pop ecx
pop ecx
mov ecx, dword [edi + 0x38]
push 2
mov dword [ebp - 0xfc], eax
pop eax
mov ecx, dword [ecx + edx*4]
mov dword [ebp - 0x10c], ecx
test byte [ecx + 8], al
jne 0x51f9e5
lea eax, [ebp - 0xf0]
push eax
push dword [ecx + 0x14]
call fcn.00505958
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x521ca7
cmp dword [ebp - 0xf0], eax
je 0x51f991
inc eax
xor esi, esi
mov dword [ebp - 0x12c], eax
mov dword [ebp - 0x128], esi
jmp 0x51f9f1
lea eax, [ebp - 0x12c]
push eax
mov eax, dword [ebp - 0x10c]
push dword [eax + 0x14]
call fcn.00505937
mov esi, dword [ebp - 0x128]
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0x12c]
mov dword [ebp - 0xe4], eax
pop ecx
pop ecx
cmp esi, 0x7fffffff
jl 0x51f9dd
jg 0x51f9cf
cmp eax, 0xffffffff
jb 0x51f9dd
mov ecx, dword [ebp - 0x10c]
push 2
pop edx
or dword [ecx + 8], edx
jmp 0x51f9f7
add eax, 1
adc esi, 0
jmp 0x51f983
mov esi, dword [ebp - 0x128]
mov eax, dword [ebp - 0x12c]
mov dword [ebp - 0xe4], eax
mov edx, dword [ebx + 0xc]
test edx, edx
je 0x51faa4
mov ecx, dword [edi + 0xb8]
test ecx, ecx
jne 0x51fa87
imul eax, edx, 0x28
add eax, dword [ebp - 0xd8]
push eax
mov dword [ebp - 0xe0], eax
call fcn.00523377
pop ecx
mov ecx, dword [ebp - 0xe0]
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
cmp edx, 0xffffffff
jne 0x51fa3d
cmp eax, 0x7fffffff
je 0x51fb3d
mov edi, dword [ebp - 0x10c]
test byte [edi + 8], 2
mov edi, dword [ebp - 0x108]
jne 0x51fb3d
add edx, 1
adc eax, 0
mov dword [ebp - 0xe8], eax
cmp esi, eax
jg 0x51fa99
jl 0x51fa6f
mov eax, dword [ebp - 0xe4]
cmp eax, edx
jae 0x51fa9f
mov esi, dword [ebp - 0xe8]
mov eax, edx
mov dword [ebp - 0x12c], eax
mov dword [ebp - 0x128], esi
jmp 0x51fa9f
mov ecx, eax
mov eax, dword [ecx + 4]
test eax, eax
jne 0x51fa85
imul eax, edx, 0x28
add eax, dword [ecx + 0x10]
jmp 0x51fa15
mov eax, dword [ebp - 0xe4]
mov dword [ecx], eax
mov dword [ecx + 4], esi
mov ecx, dword [ebp - 0x10c]
push 2
pop edx
test byte [ecx + 8], dl
je 0x51fb50
and dword [ebp - 0xe0], 0
lea eax, [ebp - 0x12c]
push eax
push 8
pop eax
push eax
call fcn.004e7650
mov esi, dword [ebp - 0x128]
lea ecx, [ebp - 0xf0]
mov eax, dword [ebp - 0x12c]
and esi, 0x3fffffff
push 0
pop edx
add eax, 1
push ecx
push edx
adc esi, edx
mov dword [ebp - 0xe4], eax
push esi
push eax
mov dword [ebp - 0x12c], eax
mov eax, dword [ebp - 0x10c]
push edx
mov dword [ebp - 0x128], esi
push dword [eax + 0x14]
call fcn.00505a4e
add esp, 0x20
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
cmp dword [ebp - 0xf0], eax
jne 0x51fb44
mov eax, dword [ebp - 0xe0]
inc eax
mov dword [ebp - 0xe0], eax
cmp eax, 0x64
jl 0x51fabd
push 0xd
jmp 0x51daf5
mov eax, dword [ebp - 0xe4]
mov ecx, dword [ebp - 0x10c]
and dword [ecx + 0x40], 0
mov byte [ecx + 3], 0
mov ecx, dword [ebp - 0xfc]
mov dword [ecx], eax
mov dword [ecx + 4], esi
jmp 0x51ce53
imul esi, dword [ebx + 8], 0x28
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov edx, dword [ebp - 0xd8]
and dword [ebp - 0x104], 0
add esi, edx
cmp byte [ebp - 0xd9], 0x71
mov ecx, dword [eax + ecx*4]
mov dword [ebp - 0xe0], ecx
jne 0x51fbb8
imul eax, dword [ebx + 0xc], 0x28
mov edi, dword [ebp - 0xd8]
mov edx, dword [eax + edx]
mov eax, dword [eax + edi + 4]
mov edi, dword [ebp - 0x108]
mov dword [ebp - 0xf8], edx
mov dword [ebp - 0xf0], eax
jmp 0x51fbca
mov eax, dword [ebx + 0xc]
cdq
mov dword [ebp - 0xf0], edx
mov edx, eax
mov dword [ebp - 0xf8], eax
cmp byte [ebx + 1], 0xec
jne 0x51fc14
mov eax, dword [ebp - 0xcc]
cmp dword [eax + 0xd8], 0
je 0x51fc14
movsx ecx, byte [ecx + 1]
mov eax, dword [eax + 0x10]
add ecx, ecx
push 4
mov eax, dword [eax + ecx*8]
mov dword [ebp - 0x114], eax
mov eax, dword [ebx + 0x10]
pop ecx
mov dword [ebp - 0xf4], eax
mov al, byte [ebx + 3]
test cl, al
push 0x12
pop ecx
cmovne ecx, dword [ebp - 0x1a8]
mov dword [ebp - 0x104], ecx
jmp 0x51fc25
and dword [ebp - 0xf4], 0
and dword [ebp - 0x114], 0
mov al, byte [ebx + 3]
test al, 1
je 0x51fc2f
inc dword [edi + 0x64]
mov al, byte [ebx + 3]
push 2
pop ecx
test cl, al
je 0x51fc54
mov ecx, dword [ebp - 0xcc]
mov eax, dword [ebp - 0xf0]
mov dword [ebp - 0x150], edx
mov dword [ebp - 0x154], eax
mov dword [ecx + 0x20], edx
mov dword [ecx + 0x24], eax
movzx ecx, word [esi + 8]
test cl, 1
je 0x51fc65
and dword [esi + 0x10], 0
and dword [esi + 0xc], 0
mov dl, byte [ebx + 3]
push 0x10
pop eax
test al, dl
je 0x51fc7a
mov eax, dword [ebp - 0xe0]
mov eax, dword [eax + 0x20]
jmp 0x51fc7c
xor eax, eax
test ecx, 0x4000
je 0x51fc88
mov ecx, dword [esi]
jmp 0x51fc8a
xor ecx, ecx
push eax
movzx eax, dl
shr eax, 3
and eax, 1
push eax
push ecx
push dword [esi + 0xc]
push dword [esi + 0x10]
mov esi, dword [ebp - 0xe0]
push dword [ebp - 0xf0]
push dword [ebp - 0xf8]
push 0
push dword [esi + 0x14]
call fcn.00505435
and dword [esi + 0x40], 0
add esp, 0x24
mov byte [esi + 3], 0
mov esi, dword [ebp - 0xcc]
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca7
mov eax, dword [esi + 0xd8]
test eax, eax
je 0x51cdc1
mov ecx, dword [ebp - 0x104]
test ecx, ecx
je 0x51cdc1
push dword [ebp - 0xf0]
mov edx, dword [ebp - 0xf4]
push dword [ebp - 0xf8]
push dword [edx]
push dword [ebp - 0x114]
push ecx
push dword [esi + 0xd4]
call eax
add esp, 0x18
jmp 0x51cdc1
cmp byte [ebx + 1], 0xec
mov eax, dword [ebx + 8]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0xe8], eax
mov eax, dword [edi + 0x38]
mov esi, dword [eax + ecx*4]
jne 0x51fd7e
mov eax, dword [ebp - 0xcc]
cmp dword [eax + 0xd8], 0
je 0x51fd7e
movsx ecx, byte [esi + 1]
mov eax, dword [eax + 0x10]
add ecx, ecx
push 2
mov eax, dword [eax + ecx*8]
mov dword [ebp - 0x104], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0xe0], eax
pop eax
test byte [ebx + 3], al
je 0x51fd8c
cmp byte [esi + 4], 0
je 0x51fd8c
lea eax, [esi + 0x30]
push eax
push dword [esi + 0x14]
call fcn.00505937
pop ecx
pop ecx
jmp 0x51fd8c
and dword [ebp - 0x104], 0
and dword [ebp - 0xe0], 0
movzx eax, byte [ebx + 3]
push eax
push dword [esi + 0x14]
call fcn.00505005
and dword [esi + 0x40], 0
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x521ca1
inc eax
test byte [ebp - 0xe8], al
je 0x51ea28
mov eax, dword [ebp - 0xcc]
inc dword [edi + 0x64]
mov eax, dword [eax + 0xd8]
test eax, eax
je 0x51ce53
mov ecx, dword [ebp - 0xe0]
test byte [ecx + 0x2a], 0x20
jne 0x51ce53
push dword [esi + 0x34]
push dword [esi + 0x30]
mov esi, dword [ebp - 0xcc]
push dword [ecx]
push dword [ebp - 0x104]
push 9
jmp 0x51fd0e
mov eax, dword [edi + 0x64]
add dword [esi + 0x58], eax
mov dword [esi + 0x54], eax
and dword [edi + 0x64], 0
jmp 0x51cdc1
mov eax, dword [edi + 0x38]
lea edx, [ebp - 0xe4]
mov ecx, dword [ebx + 4]
and dword [ebp - 0xe4], 0
push edx
push dword [ebx + 0x10]
mov ecx, dword [eax + ecx*4]
imul eax, dword [ebx + 0xc], 0x28
add eax, dword [ebp - 0xd8]
push eax
push ecx
call fcn.0052480b
add esp, 0x10
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca7
cmp dword [ebp - 0xe4], eax
jmp 0x51cdf3
imul edx, dword [ebx + 8], 0x28
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
add edx, dword [ebp - 0xd8]
push edx
push dword [eax + ecx*4]
call fcn.00524bfe
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x521ca7
mov ecx, dword [ebx + 0xc]
mov eax, dword [edi + 0x38]
mov eax, dword [eax + ecx*4]
and dword [eax + 0x40], 0
jmp 0x51cdc1
imul eax, dword [ebx + 8], 0x28
mov ecx, dword [ebx + 4]
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0xf4], eax
mov eax, dword [edi + 0x38]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0xe8], eax
cmp byte [eax + 4], 0
mov esi, dword [eax + 0x14]
mov dword [ebp - 0xe0], esi
jne 0x51feef
lea eax, [ebp - 0x1cc]
push eax
push esi
call fcn.00505937
mov eax, dword [ebp - 0xcc]
pop ecx
pop ecx
mov eax, dword [eax + 0x5c]
cdq
cmp dword [ebp - 0x1c8], edx
jg 0x51d8a7
mov esi, dword [ebp - 0x1cc]
jl 0x51ff08
cmp esi, eax
jmp 0x51ff02
push esi
call fcn.004f8391
mov eax, dword [ebp - 0xcc]
mov esi, dword [esi + 0x1c]
pop ecx
cmp esi, dword [eax + 0x5c]
ja 0x51d8a7
push 0x20
pop eax
cmp esi, eax
cmova eax, esi
push eax
mov eax, dword [ebp - 0xf4]
push eax
call fcn.0052303f
pop ecx
pop ecx
test eax, eax
jne 0x51e81f
mov ecx, dword [ebp - 0xf4]
mov edx, 0x3e00
push 0x10
mov ax, word [ecx + 8]
and ax, dx
mov dword [ecx + 0xc], esi
pop edx
or ax, dx
mov word [ecx + 8], ax
mov eax, dword [ecx + 0x10]
mov ecx, dword [ebp - 0xe8]
cmp byte [ecx + 4], 0
jne 0x51ff6b
push 0
push eax
push esi
push 0
push dword [ebp - 0xe0]
call fcn.004ec132
add esp, 0x14
jmp 0x51ff7d
push eax
push esi
push 0
push dword [ebp - 0xe0]
call fcn.00504fc9
add esp, 0x10
mov esi, dword [ebp - 0xcc]
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca7
mov eax, dword [ebp - 0xf4]
mov byte [eax + 0xa], 1
jmp 0x51cdc1
push ebx
push edi
call fcn.004fbc82
mov edx, dword [ebx + 4]
pop ecx
pop ecx
mov ecx, dword [edi + 0x38]
mov dword [ebp - 0xe0], eax
mov esi, dword [ecx + edx*4]
cmp byte [esi + 2], 0
je 0x51ffca
xor ecx, ecx
inc ecx
mov word [eax + 8], cx
jmp 0x51ce53
cmp byte [esi + 3], 0
je 0x51ffe7
mov eax, dword [esi + 0x30]
mov dword [ebp - 0x194], eax
mov eax, dword [esi + 0x34]
mov dword [ebp - 0x190], eax
jmp 0x52006e
push 2
pop eax
cmp byte [esi], al
jne 0x520020
mov ecx, dword [esi + 0x14]
lea edx, [ebp - 0x194]
push edx
push ecx
mov esi, dword [ecx]
mov eax, dword [esi]
call dword [eax + 0x30]
push esi
push edi
mov dword [ebp - 0xd4], eax
call fcn.00525608
mov eax, dword [ebp - 0xd4]
add esp, 0x10
test eax, eax
jne 0x521ca1
jmp 0x52006e
mov eax, dword [esi + 0x14]
cmp byte [eax + 0x42], 1
je 0x520032
push esi
call fcn.004f8764
pop ecx
jmp 0x520034
xor eax, eax
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
cmp byte [esi + 2], al
je 0x520057
mov ecx, dword [ebp - 0xe0]
inc eax
mov word [ecx + 8], ax
jmp 0x51ea28
lea eax, [ebp - 0x194]
push eax
push dword [esi + 0x14]
call fcn.00505937
pop ecx
pop ecx
mov dword [ebp - 0xd4], eax
mov ecx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0x194]
mov dword [ecx], eax
mov eax, dword [ebp - 0x190]
mov dword [ecx + 4], eax
jmp 0x51ce53
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov eax, dword [eax + ecx*4]
and dword [eax + 0x40], 0
cmp byte [eax], 0
mov byte [eax + 2], 1
jne 0x51cdc1
push dword [eax + 0x14]
call fcn.00504adc
jmp 0x51db2c
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 4]
and dword [ebp - 0x124], 0
mov esi, dword [eax + ecx*4]
lea eax, [ebp - 0x124]
push eax
push dword [esi + 0x14]
call fcn.00505958
and dword [esi + 0x40], 0
pop ecx
pop ecx
mov ecx, dword [ebp - 0x124]
mov dword [ebp - 0xd4], eax
mov byte [esi + 2], cl
mov byte [esi + 3], 0
mov eax, dword [ebx + 0xc]
mov dword [esi + 0x20], eax
mov eax, dword [ebp - 0xd4]
test eax, eax
jne 0x521ca1
cmp dword [ebx + 8], eax
jle 0x51ce53
jmp 0x51f83b
inc dword [edi + 0x7c]
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov esi, dword [eax + ecx*4]
xor ecx, ecx
inc ecx
mov eax, ecx
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0x110], eax
cmp byte [esi], cl
jne 0x520149
lea eax, [ebp - 0x110]
push eax
push esi
call fcn.00524b9b
pop ecx
pop ecx
mov ecx, dword [ebp - 0x110]
mov dword [ebp - 0xd4], eax
jmp 0x52018f
mov eax, dword [esi + 0x14]
push eax
mov dword [ebp - 0xe8], eax
call fcn.004fa643
mov dword [ebp - 0xd4], eax
pop ecx
test eax, eax
jne 0x520181
mov ecx, dword [ebp - 0xe8]
cmp byte [ecx + 0x42], al
je 0x520181
push ecx
mov dword [ebp - 0xe0], eax
call fcn.004fa574
pop ecx
mov dword [ebp - 0xd4], eax
and dword [esi + 0x40], 0
mov ecx, dword [ebp - 0xe0]
mov byte [esi + 3], 0
test eax, eax
jne 0x521ca1
mov byte [esi + 2], cl
jmp 0x51f83b
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 4]
mov esi, dword [eax + ecx*4]
lea eax, [ebp - 0x168]
and dword [ebp - 0x168], 0
push eax
push esi
push dword [ebp - 0xcc]
call fcn.00524a45
add esp, 0xc
jmp 0x5201f8
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
cmp dword [eax + ecx*4], 0
je 0x51cdc1
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 4]
mov esi, dword [eax + ecx*4]
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x168], eax
lea eax, [ebp - 0x168]
push eax
push dword [esi + 0x14]
call dword [ebx + 0x10]
pop ecx
pop ecx
mov dword [ebp - 0xd4], eax
and dword [esi + 0x40], 0
test eax, eax
jne 0x521ca1
cmp dword [ebp - 0x168], eax
jne 0x520222
mov byte [esi + 2], al
movzx eax, byte [ebx + 3]
inc dword [edi + eax*4 + 0x74]
jmp 0x5215e0
xor eax, eax
inc eax
mov byte [esi + 2], al
jmp 0x52090b
imul esi, dword [ebx + 8], 0x28
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
add esi, dword [ebp - 0xd8]
test byte [ebx + 3], 1
mov ecx, dword [eax + ecx*4]
mov dword [ebp - 0xe0], ecx
je 0x52024f
inc dword [edi + 0x64]
mov eax, 0x4000
test word [esi + 8], ax
je 0x520269
push esi
call fcn.005230d5
pop ecx
mov ecx, dword [ebp - 0xe0]
jmp 0x52026b
xor eax, eax
test eax, eax
jne 0x521ca1
cmp byte [ebx], 0x7b
jne 0x520286
push esi
push ecx
call fcn.00524c5a
pop ecx
pop ecx
jmp 0x51f03f
push 0x10
pop eax
test byte [ebx + 3], al
je 0x520293
mov eax, dword [ecx + 0x20]
jmp 0x520295
xor eax, eax
push eax
push dword [ebx + 0xc]
mov eax, dword [esi + 0xc]
push 0
push 0
push 0x559fbc
cdq
push edx
push eax
push dword [esi + 0x10]
push dword [ecx + 0x14]
call fcn.00505435
mov ecx, dword [ebp - 0xe0]
add esp, 0x24
and dword [ecx + 0x40], 0
jmp 0x51f03f
mov ecx, dword [ebx + 4]
xor edx, edx
mov eax, dword [edi + 0x38]
mov esi, dword [eax + ecx*4]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x20c], eax
mov ax, word [ebx + 0xc]
mov word [ebp - 0x204], ax
imul eax, dword [ebx + 8], 0x28
mov dword [ebp - 0xe8], ecx
mov byte [ebp - 0x202], dl
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0x208], eax
lea eax, [ebp - 0x1ac]
push eax
push edx
push edx
push edx
lea eax, [ebp - 0x20c]
push eax
push ecx
call fcn.00505a4e
add esp, 0x18
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
cmp dword [ebp - 0x1ac], eax
jne 0x520352
push 4
pop eax
push eax
push dword [ebp - 0xe8]
call fcn.00505005
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x521ca1
and dword [esi + 0x40], 0
jmp 0x51ce53
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 4]
mov esi, dword [eax + ecx*4]
mov eax, dword [esi + 0x14]
cmp byte [eax + 0x42], 1
je 0x520376
push esi
call fcn.004f8764
pop ecx
jmp 0x520378
xor eax, eax
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
cmp byte [esi + 2], al
jne 0x520416
lea eax, [ebp - 0x170]
xorps xmm0, xmm0
push eax
push dword [esi + 0x14]
movlpd qword [ebp - 0x170], xmm0
push dword [ebp - 0xcc]
call fcn.0052280e
add esp, 0xc
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
cmp byte [ebx], 0x7e
jne 0x5203f4
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 0xc]
mov ecx, dword [eax + ecx*4]
mov eax, dword [ebp - 0x170]
mov dword [ecx + 0x30], eax
mov eax, dword [ebp - 0x16c]
mov word [ecx + 2], 0x100
mov dword [ecx + 0x34], eax
mov eax, dword [ebx + 0x10]
mov dword [ecx + 0x3c], eax
mov dword [ecx + 0x38], esi
jmp 0x51ce53
push ebx
push edi
call fcn.004fbc82
pop ecx
pop ecx
mov ecx, dword [ebp - 0x170]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x16c]
push 4
mov dword [eax + 4], ecx
pop ecx
jmp 0x51ffc1
imul eax, dword [ebx + 8], 0x28
add eax, dword [ebp - 0xd8]
jmp 0x51e513
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 4]
cmp byte [ebp - 0xd9], 0x3a
mov ecx, dword [eax + ecx*4]
mov eax, dword [ecx + 0x1c]
mov dword [ebp - 0x21c], eax
mov ax, word [ebx + 0x10]
mov word [ebp - 0x214], ax
sbb al, al
and dword [ebp - 0x114], 0
mov byte [ebp - 0x212], al
imul eax, dword [ebx + 0xc], 0x28
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0x218], eax
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x21c]
push eax
push ecx
push esi
call fcn.00522775
mov ecx, dword [ebp - 0x114]
add esp, 0x10
test byte [ebx], 1
mov dword [ebp - 0xd4], eax
jne 0x520495
neg ecx
jmp 0x52049c
mov eax, dword [ebp - 0xd4]
inc ecx
test eax, eax
jne 0x521ca7
test ecx, ecx
jg 0x521865
jmp 0x51cdc1
push ebx
push edi
call fcn.004fbc82
pop ecx
pop ecx
xor ecx, ecx
mov dword [ebp - 0xe8], eax
inc ecx
mov word [eax + 8], cx
mov ecx, dword [esi + 0xa8]
inc ecx
cmp dword [esi + 0x9c], ecx
jg 0x5219fd
mov eax, dword [ebx + 0xc]
mov ecx, eax
and dword [ebp - 0x100], 0
mov esi, dword [ebx + 4]
mov dword [ebp - 0xfc], eax
mov eax, dword [ebp - 0xcc]
shl ecx, 4
mov dword [ebp - 0xe0], ecx
mov eax, dword [eax + 0x10]
mov edi, dword [ecx + eax + 4]
push edi
call fcn.00505284
lea eax, [ebp - 0x100]
push eax
push esi
push edi
call fcn.004ef87a
push edi
mov dword [ebp - 0xd4], eax
call fcn.005059b0
mov ecx, dword [ebp - 0xe8]
add esp, 0x14
mov edi, dword [ebp - 0x100]
push 4
pop eax
mov word [ecx + 8], ax
mov eax, edi
cdq
mov dword [ecx], eax
mov eax, dword [ebp - 0xd4]
mov dword [ecx + 4], edx
test eax, eax
jne 0x521c9b
test edi, edi
je 0x51d0c4
mov eax, dword [ebx + 4]
mov edx, dword [ebp - 0xe0]
mov dword [ebp - 0x104], eax
mov eax, dword [ebp - 0xcc]
mov esi, dword [eax + 0x10]
mov ecx, dword [edx + esi + 0xc]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x52059d
mov edx, dword [ebp - 0x104]
mov ecx, dword [eax + 8]
cmp dword [ecx + 0x1c], edi
jne 0x52058d
mov dword [ecx + 0x1c], edx
mov eax, dword [eax]
test eax, eax
jne 0x520582
mov edx, dword [ebp - 0xe0]
mov ecx, dword [edx + esi + 0xc]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x5205c1
mov ebx, dword [ebp - 0x104]
mov ecx, dword [eax + 8]
cmp dword [ecx + 0x2c], edi
jne 0x5205b5
mov dword [ecx + 0x2c], ebx
mov eax, dword [eax]
test eax, eax
jne 0x5205aa
mov ebx, dword [ebp - 0x110]
mov al, byte [ebp - 0xfc]
inc al
mov byte [ebp - 0x11d], al
jmp 0x51d0c4
and dword [ebp - 0xfc], 0
lea eax, [ebp - 0xfc]
xor ecx, ecx
cmp dword [ebx + 0xc], ecx
cmove eax, ecx
mov ecx, dword [ebx + 8]
push eax
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [ebx + 4]
push dword [eax + ecx*8 + 4]
call fcn.00504af7
add esp, 0xc
mov dword [ebp - 0xd4], eax
cmp dword [ebx + 0xc], 0
je 0x51db7d
mov edx, dword [ebp - 0xfc]
add dword [edi + 0x64], edx
mov ecx, dword [ebx + 0xc]
test ecx, ecx
jle 0x51db7d
mov esi, dword [ebp - 0xd8]
mov eax, edx
imul ecx, ecx, 0x28
cdq
add dword [ecx + esi], eax
mov eax, esi
adc dword [ecx + eax + 4], edx
jmp 0x51db71
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov eax, dword [eax + ecx*4]
cmp byte [eax], 1
jne 0x52065c
push dword [eax + 0x14]
push esi
call fcn.00524abb
pop ecx
jmp 0x51db2c
mov eax, dword [eax + 0x14]
push 0
push dword [eax + 0x34]
push dword [eax]
call fcn.00504af7
jmp 0x51f396
push ebx
push edi
call fcn.004fbc82
mov edx, dword [ebx + 4]
mov esi, eax
mov eax, dword [ebp - 0xcc]
xor ecx, ecx
and dword [ebp - 0xe8], 0
shl edx, 4
add edx, dword [eax + 0x10]
lea eax, [ebp - 0xe8]
cmp byte [ebx], 0x84
setne cl
inc ecx
push ecx
push eax
push dword [edx + 4]
call fcn.00504f56
add esp, 0x14
mov dword [ebp - 0xd4], eax
test eax, eax
jne 0x521ca1
mov eax, dword [ebp - 0xe8]
cdq
jmp 0x51e060
mov ecx, dword [ebx + 4]
lea eax, [edi + 0x2c]
push dword [ebx + 0x10]
mov dword [ebp - 0x1e8], eax
cmp ecx, 1
mov edx, str.sqlite_temp_master
mov dword [ebp - 0x1e4], ecx
mov eax, str.sqlite_master
mov dword [ebp - 0x1ec], esi
cmove eax, edx
add ecx, ecx
push eax
mov eax, dword [esi + 0x10]
push dword [eax + ecx*8]
push str.SELECT_name__rootpage__sql_FROM__q._s_WHERE__s_ORDER_BY_rowid
push esi
call fcn.00511529
mov esi, eax
add esp, 0x14
test esi, esi
je 0x521a0b
mov eax, dword [ebp - 0xcc]
lea ecx, [ebp - 0x1ec]
and dword [ebp - 0x1e0], 0
push 0
push ecx
push fcn.0050f741
push esi
push eax
mov byte [eax + 0x95], 1
call fcn.004e6a45
test eax, eax
push esi
cmove eax, dword [ebp - 0x1e0]
mov esi, dword [ebp - 0xcc]
push esi
mov dword [ebp - 0xd4], eax
call fcn.005087dc
add esp, 0x1c
mov byte [esi + 0x95], 0
cmp dword [ebp - 0xd4], 0
jne 0x521a1a
jmp 0x51cdc1
push dword [ebx + 4]
push esi
call fcn.005032fd
pop ecx
pop ecx
jmp 0x51f399
mov eax, dword [ebx + 4]
shl eax, 4
add eax, dword [esi + 0x10]
push 0
push dword [ebx + 0x10]
mov eax, dword [eax + 0xc]
push 8
pop ecx
add eax, ecx
push eax
call fcn.0050f280
push eax
push esi
call fcn.00509429
add esp, 0x14
push 2
pop eax
or dword [esi + 0x18], eax
jmp 0x51cdc1
push dword [ebx + 0x10]
push dword [ebx + 4]
push esi
call fcn.0051a4b2
jmp 0x51d249
push dword [ebx + 0x10]
push dword [ebx + 4]
push esi
call fcn.0051a520
jmp 0x51d249
imul eax, dword [ebx + 4], 0x28
imul esi, dword [ebx + 0xc], 0x28
movzx ecx, byte [ebx + 3]
add ecx, ecx
add eax, dword [ebp - 0xd8]
add esi, dword [ebp - 0xd8]
mov dword [ebp - 0xe8], eax
lea eax, [ebp - 0x148]
push eax
mov eax, dword [ebp - 0xcc]
push dword [esi]
push dword [ebx + 8]
mov eax, dword [eax + 0x10]
push dword [ebx + 0x10]
push dword [eax + ecx*8 + 4]
call fcn.0050562e
mov dword [ebp - 0xfc], eax
mov eax, dword [ebp - 0x148]
cdq
sub dword [esi], eax
sbb dword [esi + 4], edx
mov esi, dword [ebp - 0xe8]
push esi
call fcn.0052359c
add esp, 0x18
cmp dword [ebp - 0x148], 0
je 0x520861
mov eax, dword [ebp - 0xfc]
test eax, eax
je 0x51e81f
push fcn.004e7553
push 1
push 0xffffffffffffffff
push eax
push esi
call fcn.00523634
add esp, 0x14
movzx eax, byte [ebp - 0x11c]
push eax
push esi
call fcn.0051c71e
pop ecx
jmp 0x51d2b1
imul esi, dword [ebx + 4], 0x28
imul eax, dword [ebx + 8], 0x28
add esi, dword [ebp - 0xd8]
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0xe8], eax
test byte [esi + 8], 0x20
jne 0x5208ac
push esi
call fcn.005235bf
test byte [esi + 8], 0x20
pop ecx
je 0x51e81f
mov eax, dword [ebp - 0xe8]
push dword [eax + 4]
push dword [eax]
push dword [esi]
call fcn.00516f72
jmp 0x51e505
imul esi, dword [ebx + 4], 0x28
add esi, dword [ebp - 0xd8]
test byte [esi + 8], 0x20
je 0x520980
lea eax, [ebp - 0x1d4]
push eax
push dword [esi]
call fcn.00516fbe
pop ecx
pop ecx
test eax, eax
je 0x520980
imul eax, dword [ebx + 0xc], 0x28
push dword [ebp - 0x1d0]
push dword [ebp - 0x1d4]
add eax, dword [ebp - 0xd8]
push eax
call fcn.00523566
add esp, 0xc
xor eax, eax
inc eax
mov esi, dword [ebp - 0xcc]
cmp dword [esi + 0xf8], 0
jne 0x521c6b
mov ecx, dword [esi + 0x130]
mov edx, dword [ebp - 0xd0]
test ecx, ecx
je 0x51cdca
cmp edx, dword [ebp - 0x14c]
jb 0x51cdca
mov eax, dword [esi + 0x138]
mov dword [ebp - 0x14c], eax
mov eax, edx
xor edx, edx
div dword [ebp - 0x14c]
mov eax, dword [ebp - 0x14c]
push dword [esi + 0x134]
sub eax, edx
add eax, dword [ebp - 0xd0]
mov dword [ebp - 0x14c], eax
call ecx
pop ecx
test eax, eax
je 0x51cdc1
push 9
jmp 0x521938
push esi
call fcn.0052359c
pop ecx
jmp 0x5215e0
imul esi, dword [ebx + 4], 0x28
imul eax, dword [ebx + 0xc], 0x28
mov ecx, dword [ebx + 0x10]
mov dword [ebp - 0xe8], ecx
add esi, dword [ebp - 0xd8]
add eax, dword [ebp - 0xd8]
mov dword [ebp - 0xfc], eax
test byte [esi + 8], 0x20
jne 0x5209d2
push esi
call fcn.005235bf
test byte [esi + 8], 0x20
pop ecx
je 0x51e81f
mov eax, dword [ebp - 0xfc]
mov ecx, dword [ebp - 0xe8]
test ecx, ecx
je 0x5209f6
push dword [eax + 4]
push dword [eax]
push ecx
push dword [esi]
call fcn.0051701e
add esp, 0x10
test eax, eax
jne 0x521865
mov ecx, dword [ebp - 0xe8]
test ecx, ecx
js 0x51ce53
mov eax, dword [ebp - 0xfc]
jmp 0x5208ac
imul eax, dword [ebx + 0xc], 0x28
mov esi, dword [ebx + 0x10]
mov dword [ebp - 0xf8], esi
add eax, dword [ebp - 0xd8]
cmp byte [ebx + 3], 0
mov dword [ebp - 0xf0], eax
je 0x520a4d
mov eax, dword [edi + 0xb8]
mov ecx, dword [esi + 0x14]
test eax, eax
je 0x520a47
cmp dword [eax + 0x1c], ecx
je 0x520a3f
mov eax, dword [eax + 4]
test eax, eax
jne 0x520a33
test eax, eax
jne 0x51ce53
mov eax, dword [ebp - 0xf0]
mov edx, dword [ebp - 0xcc]
mov ecx, dword [edi + 0xc0]
cmp ecx, dword [edx + 0x84]
jge 0x521a37
test byte [eax + 8], 0x40
jne 0x520b6f
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
add eax, edx
test edx, edx
lea ecx, [eax + 1]
cmovne ecx, eax
mov dword [ebp - 0xe8], ecx
lea eax, [ecx + 2]
imul ecx, eax, 0xa
mov eax, dword [esi + 0x10]
add ecx, edx
lea eax, [eax + ecx*4]
cdq
push edx
push eax
push dword [ebp - 0xcc]
call fcn.00508901
mov esi, eax
add esp, 0xc
test esi, esi
je 0x51e81f
push dword [ebp - 0xf0]
call fcn.00523514
mov eax, dword [ebp - 0xf0]
sub ebx, dword [ebp - 0x118]
pop ecx
push 0x40
mov dword [eax], esi
pop ecx
mov word [eax + 8], cx
mov eax, dword [ebp - 0xf8]
mov ecx, dword [ebp - 0xe8]
mov dword [esi + 0x40], ecx
mov dword [esi], edi
mov eax, dword [eax + 0xc]
mov dword [esi + 0x44], eax
mov eax, ebx
cdq
push 0x14
pop ebx
idiv ebx
mov ebx, dword [ebp - 0xf8]
mov dword [esi + 0x30], eax
mov eax, dword [edi + 8]
mov dword [esi + 0x10], eax
mov eax, dword [edi + 0x1c]
mov dword [esi + 0x38], eax
mov eax, dword [edi + 0x38]
mov dword [esi + 0x18], eax
mov eax, dword [edi + 0x24]
mov dword [esi + 0x2c], eax
mov eax, dword [edi + 4]
mov dword [esi + 8], eax
mov eax, dword [edi + 0x20]
mov dword [esi + 0x34], eax
mov eax, dword [ebx + 0x14]
mov dword [esi + 0x1c], eax
mov eax, dword [edi + 0xd0]
mov dword [esi + 0x14], eax
mov eax, dword [edi + 0xcc]
mov dword [esi + 0x3c], eax
lea eax, [ecx + 2]
imul ecx, eax, 0x28
lea eax, [esi + 0x50]
add ecx, esi
cmp eax, ecx
je 0x520b67
mov edx, dword [ebp - 0xcc]
mov edi, 0x80
mov word [eax + 8], di
mov dword [eax + 0x20], edx
add eax, 0x28
cmp eax, ecx
jne 0x520b4d
mov edi, dword [ebp - 0x108]
mov ebx, dword [ebp - 0xf8]
mov ecx, dword [edi + 0xc0]
jmp 0x520b77
mov esi, dword [eax]
mov ebx, dword [ebp - 0xf8]
lea eax, [ecx + 1]
mov dword [edi + 0xc0], eax
lea ecx, [esi + 0x50]
mov eax, dword [edi + 0xb8]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x150]
mov dword [esi + 0x20], eax
mov eax, dword [ebp - 0x154]
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0x64]
mov dword [esi + 0x48], eax
mov eax, dword [edi]
mov dword [ebp - 0xd8], ecx
mov eax, dword [eax + 0x54]
mov dword [esi + 0x4c], eax
mov eax, dword [edi + 0xd4]
mov dword [esi + 0x28], eax
and dword [edi + 0xd4], 0
and dword [edi + 0x64], 0
mov dword [edi + 8], ecx
mov dword [edi + 0xb8], esi
mov eax, dword [esi + 0x40]
mov dword [edi + 0x1c], eax
movzx edx, word [esi + 0x44]
imul eax, eax, 0x28
mov dword [edi + 0x24], edx
add ecx, eax
mov dword [edi + 0x38], ecx
mov esi, dword [ebx]
mov dword [edi + 4], esi
mov eax, dword [ebx + 4]
lea ecx, [ecx + edx*4]
mov dword [edi + 0x20], eax
mov dword [edi + 0xd0], ecx
mov eax, dword [ebx + 0x10]
lea ebx, [esi - 0x14]
push eax
push 0
push ecx
mov dword [ebp - 0x118], esi
mov dword [edi + 0xcc], eax
call sub.VCRUNTIME140.dll_memset
jmp 0x51e505
push ebx
push edi
call fcn.004fbc82
mov esi, dword [edi + 0xb8]
mov ecx, 0x1000
push ecx
imul edx, dword [esi + 0x30], 0x14
mov ecx, dword [esi + 8]
mov ecx, dword [edx + ecx + 4]
add ecx, dword [ebx + 4]
imul ecx, ecx, 0x28
add ecx, dword [esi + 0x10]
push ecx
jmp 0x51d143
test dword [esi + 0x18], 0x2000000
mov eax, dword [ebx + 8]
cdq
je 0x520c63
add dword [esi + 0x1c0], eax
adc dword [esi + 0x1c4], edx
jmp 0x51cdc1
cmp dword [ebx + 4], 0
je 0x520c7a
add dword [esi + 0x1b8], eax
adc dword [esi + 0x1bc], edx
jmp 0x51cdc1
add dword [edi + 0x98], eax
adc dword [edi + 0x9c], edx
jmp 0x51cdc1
cmp dword [ebx + 4], 0
je 0x520cb4
mov eax, dword [esi + 0x1b8]
or eax, dword [esi + 0x1bc]
jne 0x51cdc1
mov eax, dword [esi + 0x1c0]
or eax, dword [esi + 0x1c4]
jmp 0x51e0f7
mov eax, dword [edi + 0x98]
or eax, dword [edi + 0x9c]
jmp 0x520c9d
mov ecx, dword [edi + 0xb8]
test ecx, ecx
jne 0x520d1e
imul eax, dword [ebx + 4], 0x28
add eax, dword [ebp - 0xd8]
push eax
mov dword [ebp - 0xe8], eax
call fcn.00523377
imul esi, dword [ebx + 8], 0x28
add esi, dword [ebp - 0xd8]
push esi
call fcn.00523377
mov eax, dword [ebp - 0xe8]
mov edx, dword [esi + 4]
pop ecx
pop ecx
mov ecx, dword [esi]
cmp dword [eax + 4], edx
jg 0x51ce53
jl 0x520d12
cmp dword [eax], ecx
jae 0x51ce53
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp 0x51ce53
mov ecx, eax
mov eax, dword [ecx + 4]
test eax, eax
jne 0x520d1c
imul eax, dword [ebx + 4], 0x28
add eax, dword [ecx + 0x10]
jmp 0x520cd6
imul ecx, dword [ebx + 4], 0x28
add ecx, dword [ebp - 0xd8]
mov eax, dword [ecx + 4]
mov esi, dword [ecx]
test eax, eax
jl 0x51ce53
jg 0x520d4f
test esi, esi
je 0x51ce53
mov eax, dword [ebx + 0xc]
cdq
sub esi, eax
mov eax, dword [ecx + 4]
mov dword [ecx], esi
sbb eax, edx
mov dword [ecx + 4], eax
jmp 0x521865
imul eax, dword [ebx + 0xc], 0x28
imul esi, dword [ebx + 4], 0x28
push ebx
push edi
add eax, dword [ebp - 0xd8]
add esi, dword [ebp - 0xd8]
mov dword [ebp - 0xe8], eax
call fcn.004fbc82
cmp dword [esi + 4], 0
mov edx, eax
pop ecx
pop ecx
jg 0x520d9d
jl 0x520d96
cmp dword [esi], 0
ja 0x520d9d
or eax, 0xffffffff
or ecx, eax
jmp 0x520dce
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
test ecx, ecx
jl 0x520db2
jg 0x520dc9
test eax, eax
jne 0x520dc9
xorps xmm0, xmm0
movlpd qword [ebp - 0x144], xmm0
mov ecx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x144]
add eax, dword [esi]
adc ecx, dword [esi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
jmp 0x51ce53
imul ecx, dword [ebx + 4], 0x28
add ecx, dword [ebp - 0xd8]
mov esi, dword [ecx]
mov eax, esi
or eax, dword [ecx + 4]
jmp 0x520d49
imul ecx, dword [ebx + 4], 0x28
add ecx, dword [ebp - 0xd8]
add dword [ecx], 0xffffffff
mov eax, dword [ecx]
adc dword [ecx + 4], 0xffffffff
or eax, dword [ecx + 4]
jmp 0x51e0f7
mov al, byte [ebx + 3]
mov byte [ebp - 0xd9], al
movzx eax, al
push 7
cdq
pop ecx
add eax, ecx
adc edx, 0
shld edx, eax, 2
push edx
shl eax, 2
push eax
push esi
call fcn.00508851
mov esi, eax
add esp, 0xc
test esi, esi
je 0x51e81f
and dword [esi + 8], 0
mov eax, ebx
mov ecx, dword [ebx + 0x10]
sub eax, dword [ebp - 0x118]
mov dword [esi + 4], ecx
push 0x14
cdq
pop ecx
idiv ecx
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], eax
mov al, byte [ebp - 0xd9]
mov byte [esi + 0x1a], al
mov word [ebx], 0xeb92
mov dword [ebx + 0x10], esi
imul edx, dword [ebx + 0xc], 0x28
mov esi, dword [ebx + 0x10]
add edx, dword [ebp - 0xd8]
mov dword [ebp - 0xe8], edx
cmp dword [esi + 8], edx
je 0x520eb9
movzx ecx, byte [esi + 0x1a]
sub ecx, 1
mov dword [esi + 8], edx
js 0x520eb9
lea edi, [ecx + 7]
push 4
lea edi, [esi + edi*4]
pop edx
mov eax, dword [ebx + 8]
add eax, ecx
imul eax, eax, 0x28
add eax, dword [ebp - 0xd8]
mov dword [edi], eax
sub edi, edx
sub ecx, 1
jns 0x520e96
mov edi, dword [ebp - 0x108]
mov edx, dword [ebp - 0xe8]
inc dword [edx + 0xc]
xor eax, eax
inc eax
xor ecx, ecx
mov word [ebp - 0x264], ax
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x24c], eax
lea eax, [ebp - 0x26c]
mov dword [ebp - 0x254], ecx
mov dword [esi], eax
lea eax, [esi + 0x1c]
push eax
movzx eax, byte [esi + 0x1a]
mov word [esi + 0x18], cx
mov ecx, dword [esi + 4]
push eax
push esi
call dword [ecx + 0xc]
add esp, 0xc
cmp byte [esi + 0x19], 0
je 0x520f46
cmp dword [esi + 0x14], 0
je 0x520f2b
lea eax, [ebp - 0x26c]
push 1
push eax
call fcn.0051c41c
push eax
push 0x57e68c
push edi
call fcn.0051cc20
mov eax, dword [esi + 0x14]
add esp, 0x14
mov dword [ebp - 0xd4], eax
lea eax, [ebp - 0x26c]
push eax
call fcn.00523514
mov eax, dword [ebp - 0xd4]
pop ecx
test eax, eax
jne 0x521ca1
cmp byte [esi + 0x18], 0
je 0x51ce53
mov eax, dword [ebx - 0x10]
test eax, eax
je 0x51ce53
imul eax, eax, 0x28
push 0
push 1
add eax, dword [ebp - 0xd8]
push eax
call fcn.00523566
jmp 0x51e505
imul esi, dword [ebx + 4], 0x28
push dword [ebx + 0x10]
add esi, dword [ebp - 0xd8]
push esi
call fcn.0052312e
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x521a59
movzx eax, byte [ebp - 0x11c]
push eax
push esi
call fcn.0051c71e
push esi
jmp 0x51d897
and dword [ebp - 0xc8], 0
lea eax, [ebp - 0xc0]
or dword [ebp - 0xc0], 0xffffffff
or dword [ebp - 0xc4], 0xffffffff
push eax
lea eax, [ebp - 0xc4]
push eax
push dword [ebx + 8]
push dword [ebx + 4]
push esi
call fcn.005069d0
add esp, 0x14
mov dword [ebp - 0xd4], eax
test eax, eax
je 0x521001
cmp eax, 5
jne 0x521ca7
xor eax, eax
mov dword [ebp - 0xc8], 1
mov dword [ebp - 0xd4], eax
imul esi, dword [ebx + 0xc], 0x28
add esi, dword [ebp - 0xd8]
xor edi, edi
mov eax, dword [ebp + edi*4 - 0xc8]
cdq
push edx
push eax
push esi
call fcn.00523566
add esp, 0xc
add esi, 0x28
inc edi
cmp edi, 3
jl 0x52100d
jmp 0x51d0c4
push ebx
push edi
call fcn.004fbc82
mov edx, dword [ebx + 4]
pop ecx
add edx, edx
mov dword [ebp - 0xe0], eax
cmp dword [ebx + 0xc], 0xffffffff
pop ecx
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx + edx*8 + 4]
mov dword [ebp - 0xfc], eax
mov ecx, dword [eax + 4]
mov ecx, dword [ecx]
mov dword [ebp - 0xe4], ecx
movzx edx, byte [ecx + 5]
mov eax, edx
mov dword [ebp - 0xf4], edx
cmovne eax, dword [ebx + 0xc]
cmp byte [ecx + 0x11], 3
mov dword [ebp - 0xe8], eax
jb 0x52107e
xor eax, eax
jmp 0x521097
mov eax, dword [ecx + 0x44]
cmp dword [eax], 0
je 0x521094
cmp dword [ecx + 0x54], 0
jl 0x521094
jg 0x52107a
cmp dword [ecx + 0x50], 0
ja 0x52107a
xor eax, eax
inc eax
test eax, eax
mov esi, edx
mov eax, 0x559fbc
cmovne esi, dword [ebp - 0xe8]
cmp byte [ecx + 0x10], 0
jne 0x5210b3
mov eax, dword [ecx + 0xb0]
cmp esi, 5
jne 0x5210e9
push eax
call fcn.00519db1
pop ecx
test eax, eax
je 0x5210d3
push dword [ebp - 0xe4]
call fcn.00513617
pop ecx
test eax, eax
jne 0x5210dd
mov edx, dword [ebp - 0xf4]
mov esi, edx
jmp 0x5210e3
mov edx, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xe4]
cmp esi, edx
je 0x52117a
cmp edx, 5
je 0x5210fb
cmp esi, 5
jne 0x52117a
mov eax, dword [ebp - 0xcc]
cmp byte [eax + 0x43], 0
je 0x521a70
cmp dword [eax + 0x9c], 1
jg 0x521a70
cmp edx, 5
jne 0x52113e
push ecx
call fcn.005122e0
mov dword [ebp - 0xd4], eax
pop ecx
test eax, eax
jne 0x521182
push esi
push dword [ebp - 0xe4]
call fcn.0051316b
pop ecx
pop ecx
jmp 0x52115b
push 4
pop eax
cmp edx, eax
jne 0x521151
push 2
pop eax
push eax
push ecx
call fcn.0051316b
pop ecx
pop ecx
mov eax, dword [ebp - 0xd4]
test eax, eax
jne 0x521182
xor eax, eax
cmp esi, 5
sete al
inc eax
push eax
push dword [ebp - 0xfc]
call fcn.005067a8
pop ecx
pop ecx
mov dword [ebp - 0xd4], eax
jmp 0x521180
mov eax, dword [ebp - 0xd4]
test eax, eax
mov eax, dword [ebp - 0xf4]
cmove eax, esi
push eax
push dword [ebp - 0xe4]
call fcn.0051316b
mov esi, dword [ebp - 0xe0]
pop ecx
pop ecx
mov ecx, 0xa02
mov word [esi + 8], cx
cmp eax, 6
jne 0x5211b1
xor eax, eax
jmp 0x5211b8
mov eax, dword [eax*4 + 0x57bf10]
push eax
mov dword [esi + 0x10], eax
call fcn.00519db1
mov dword [esi + 0xc], eax
movzx eax, byte [ebp - 0x11c]
push eax
push esi
mov byte [esi + 0xa], 1
call fcn.0051c71e
jmp 0x51db6e
lea eax, [edi + 0x2c]
push esi
push eax
call fcn.00517455
jmp 0x52077b
mov ecx, dword [ebx + 4]
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [eax + ecx*8 + 4]
call fcn.0050536a
mov dword [ebp - 0xd4], eax
pop ecx
test eax, eax
je 0x51cdc1
cmp eax, 0x65
jne 0x521ca7
and dword [ebp - 0xd4], 0
jmp 0x521865
cmp dword [ebx + 4], 0
jne 0x521233
push esi
call fcn.00509f7d
add esp, 4
jmp 0x51cdc1
or dword [edi + 0x58], eax
jmp case.0x51cd74.110
mov al, byte [ebx + 0xc]
mov byte [ebp - 0x174], al
test al, al
jne 0x521256
mov eax, 0x4000
test dword [esi + 0x18], eax
jne 0x51cdc1
mov ecx, dword [ebx + 4]
push dword [ebp - 0x174]
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [ebx + 8]
push dword [eax + ecx*8 + 4]
call fcn.005059fd
add esp, 0xc
mov dword [ebp - 0xd4], eax
test eax, eax
je 0x51cdc1
cmp al, 6
jne 0x521ca7
push dword [ebx + 0x10]
push str.database_table_is_locked:__s
push edi
call fcn.0051cc20
add esp, 0xc
mov eax, dword [ebp - 0xd4]
jmp 0x521ca7
mov esi, dword [ebx + 0x10]
push esi
push dword [ebp - 0xcc]
call fcn.00524fd7
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test esi, esi
je 0x51db77
push dword [esi + 8]
push edi
call fcn.00525608
pop ecx
pop ecx
jmp 0x51db71
push 0x28
lea eax, [ebp - 0x294]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
imul eax, dword [ebx + 8], 0x28
mov dword [ebp - 0x274], esi
add eax, dword [ebp - 0xd8]
push eax
lea eax, [ebp - 0x294]
push eax
call fcn.0052306a
mov dword [ebp - 0xd4], eax
lea eax, [ebp - 0x294]
push 1
push eax
call fcn.0051c41c
add esp, 0x1c
test eax, eax
je 0x521333
lea ecx, [edi + 0x2c]
push ecx
push eax
push dword [ebx + 4]
push esi
call fcn.005251ca
add esp, 0x10
mov dword [ebp - 0xd4], eax
lea eax, [ebp - 0x294]
push eax
call fcn.00523514
pop ecx
jmp 0x51f0e7
inc dword [esi + 0xa8]
push dword [ebx + 0x10]
push dword [ebx + 4]
push esi
call fcn.00525282
add esp, 0xc
mov dword [ebp - 0xd4], eax
dec dword [esi + 0xa8]
jmp 0x51db7d
mov eax, dword [ebx + 0x10]
and dword [ebp - 0xf8], 0
mov esi, dword [eax + 8]
test esi, esi
je 0x521ab0
mov eax, dword [esi]
mov dword [ebp - 0xe8], eax
test eax, eax
je 0x521ab0
lea ecx, [ebp - 0xf8]
push ecx
push esi
call dword [eax + 0x18]
push esi
push edi
mov dword [ebp - 0xd4], eax
call fcn.00525608
mov eax, dword [ebp - 0xd4]
add esp, 0x10
test eax, eax
jne 0x521ca1
mov eax, dword [ebp - 0xf8]
push 2
mov dword [eax], esi
pop eax
push eax
push 0xffffffffffffffff
push 0
push dword [ebx + 4]
push edi
call fcn.004ecbe9
add esp, 0x14
test eax, eax
je 0x521a9b
mov ecx, dword [ebp - 0xf8]
mov dword [eax + 0x14], ecx
inc dword [esi + 4]
jmp 0x51ce53
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
imul edx, dword [ebx + 0xc], 0x28
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0xf4], eax
add edx, dword [ebp - 0xd8]
mov esi, dword [eax + 0x14]
mov ecx, dword [edx + 0x28]
mov eax, dword [esi]
mov dword [ebp - 0x104], eax
mov eax, dword [eax]
mov dword [ebp - 0xfc], eax
mov eax, dword [edx]
mov dword [ebp - 0xe0], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0xe8], eax
xor eax, eax
test ecx, ecx
jle 0x52144e
mov edi, dword [ebp - 0xe8]
add edx, 0x50
mov dword [edi + eax*4], edx
inc eax
add edx, 0x28
cmp eax, ecx
jl 0x52143d
mov edi, dword [ebp - 0x108]
push dword [ebp - 0xe8]
mov eax, dword [ebp - 0xfc]
push ecx
push dword [ebx + 0x10]
push dword [ebp - 0xe0]
push esi
call dword [eax + 0x20]
push dword [ebp - 0x104]
mov dword [ebp - 0xd4], eax
push edi
call fcn.00525608
mov eax, dword [ebp - 0xd4]
add esp, 0x1c
test eax, eax
jne 0x521ca1
mov eax, dword [ebp - 0xfc]
push esi
call dword [eax + 0x28]
pop ecx
mov ecx, dword [ebp - 0xf4]
test eax, eax
mov byte [ecx + 2], 0
jmp 0x51dc1b
mov eax, dword [edi + 0x38]
mov ecx, dword [ebx + 4]
mov ecx, dword [eax + ecx*4]
imul eax, dword [ebx + 0xc], 0x28
mov dword [ebp - 0xfc], ecx
add eax, dword [ebp - 0xd8]
cmp byte [ecx + 2], 0
mov dword [ebp - 0xe8], eax
je 0x5214d7
push eax
call fcn.0052359c
jmp 0x51db2c
mov eax, dword [ecx + 0x14]
push 0x20
push 0
mov edi, dword [eax]
lea eax, [ebp - 0x244]
push eax
mov esi, dword [edi]
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [ebp - 0xe8]
mov edx, 0x3e00
mov dword [ebp - 0x244], ecx
mov ax, word [ecx + 8]
and ax, dx
xor edx, edx
inc edx
or ax, dx
mov word [ecx + 8], ax
lea eax, [ebp - 0x244]
push dword [ebx + 8]
push eax
mov eax, dword [ebp - 0xfc]
push dword [eax + 0x14]
call dword [esi + 0x2c]
push edi
mov edi, dword [ebp - 0x108]
push edi
mov dword [ebp - 0xd4], eax
call fcn.00525608
cmp dword [ebp - 0x230], 0
mov eax, dword [ebp - 0xd4]
cmovne eax, dword [ebp - 0x230]
mov esi, dword [ebp - 0xe8]
mov dword [ebp - 0xd4], eax
movzx eax, byte [ebp - 0x11c]
push eax
push esi
call fcn.0051c71e
push esi
call fcn.005238a5
add esp, 0x2c
test eax, eax
jne 0x51d8a7
jmp 0x51db71
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x38]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0xe8], eax
cmp byte [eax + 2], 0
jne 0x51cdc1
mov eax, dword [eax + 0x14]
push eax
mov esi, dword [eax]
mov ecx, dword [esi]
mov dword [ebp - 0xfc], ecx
call dword [ecx + 0x24]
push esi
push edi
mov dword [ebp - 0xd4], eax
call fcn.00525608
mov eax, dword [ebp - 0xd4]
add esp, 0xc
test eax, eax
jne 0x521ca1
mov eax, dword [ebp - 0xe8]
push dword [eax + 0x14]
mov eax, dword [ebp - 0xfc]
call dword [eax + 0x28]
pop ecx
test eax, eax
jne 0x520908
mov esi, dword [ebp - 0xcc]
imul eax, dword [ebx + 8], 0x14
mov ebx, dword [ebp - 0x118]
add ebx, 0xffffffec
add ebx, eax
xor eax, eax
inc eax
jmp 0x520911
imul esi, dword [ebx + 4], 0x28
mov eax, dword [ebx + 0x10]
push 1
add esi, dword [ebp - 0xd8]
mov eax, dword [eax + 8]
push esi
mov dword [ebp - 0xe8], eax
call fcn.0051c71e
pop ecx
pop ecx
test eax, eax
jne 0x521ca1
mov ecx, dword [ebp - 0xe8]
push dword [esi + 0x10]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x4c]
push dword [ebp - 0xe8]
mov dword [ebp - 0xd4], eax
push edi
call fcn.00525608
add esp, 0x10
and dword [edi + 0x58], 0xfffffffe
jmp 0x51db71
mov eax, dword [ebx + 0x10]
mov esi, dword [eax + 8]
test esi, esi
je 0x521ab0
mov eax, dword [esi]
mov dword [ebp - 0xfc], eax
test eax, eax
je 0x521ab0
cmp dword [eax + 0x34], 0
mov edx, dword [ebx + 8]
je 0x51ce53
mov eax, dword [ebp - 0xcc]
xor ecx, ecx
mov al, byte [eax + 0x4a]
mov byte [ebp - 0xd9], al
mov eax, dword [edi + 0xc]
mov dword [ebp - 0xe8], eax
imul eax, dword [ebx + 0xc], 0x28
add eax, dword [ebp - 0xd8]
test edx, edx
jle 0x5216bc
mov edi, dword [ebp - 0xe8]
mov dword [edi + ecx*4], eax
add eax, 0x28
inc ecx
cmp ecx, edx
jl 0x5216ab
mov edi, dword [ebp - 0x108]
mov ecx, dword [ebp - 0xcc]
mov al, byte [ebx + 3]
mov byte [ecx + 0x4a], al
lea eax, [ebp - 0x1dc]
push eax
push dword [ebp - 0xe8]
mov eax, dword [ebp - 0xfc]
push edx
push esi
call dword [eax + 0x34]
mov ecx, dword [ebp - 0xcc]
mov dword [ebp - 0xd4], eax
mov al, byte [ebp - 0xd9]
push esi
push edi
mov byte [ecx + 0x4a], al
call fcn.00525608
mov eax, dword [ebp - 0xd4]
add esp, 0x18
mov esi, dword [ebp - 0xcc]
test eax, eax
jne 0x521732
cmp dword [ebx + 4], eax
je 0x521732
mov ecx, dword [ebp - 0x1dc]
mov edx, dword [ebp - 0x1d8]
mov dword [ebp - 0x150], ecx
mov dword [ebp - 0x154], edx
mov dword [esi + 0x20], ecx
mov dword [esi + 0x24], edx
cmp al, 0x13
jne 0x52176a
mov eax, dword [ebx + 0x10]
cmp byte [eax + 0x10], 0
je 0x52176a
mov cl, byte [ebx + 3]
push 4
pop eax
cmp cl, al
jne 0x521756
xor eax, eax
mov dword [ebp - 0xd4], eax
jmp 0x51cdc1
movzx eax, cl
cmp cl, 5
push 2
pop ecx
cmove eax, ecx
mov byte [edi + 0x56], al
jmp 0x51f0e7
inc dword [edi + 0x64]
jmp 0x51f0e7
push ebx
push edi
call fcn.004fbc82
mov edx, dword [ebx + 4]
pop ecx
pop ecx
mov ecx, dword [esi + 0x10]
add edx, edx
mov ecx, dword [ecx + edx*8 + 4]
mov ecx, dword [ecx + 4]
mov ecx, dword [ecx + 0x2c]
and dword [eax + 4], 0
mov dword [eax], ecx
jmp 0x51cdc1
push ebx
push edi
call fcn.004fbc82
mov edx, dword [ebx + 4]
pop ecx
pop ecx
mov ecx, dword [esi + 0x10]
add edx, edx
xor esi, esi
mov dword [ebp - 0xfc], eax
mov ecx, dword [ecx + edx*8 + 4]
mov edx, dword [ebx + 0xc]
mov dword [ebp - 0xe8], ecx
test edx, edx
je 0x5217cd
mov eax, dword [ecx + 4]
mov esi, dword [eax + 0x2c]
cmp esi, edx
cmovb esi, edx
push ecx
call fcn.00505284
pop ecx
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ecx + 4]
mov eax, dword [eax]
test esi, esi
jle 0x5217eb
mov dword [eax + 0xa4], esi
jmp 0x5217f1
mov esi, dword [eax + 0xa4]
push ecx
call fcn.005059b0
pop ecx
mov ecx, dword [ebp - 0xfc]
mov eax, esi
jmp 0x51ddfb
cmp dword [esi + 0xb4], 0
je 0x521853
push 2
pop eax
test byte [edi + 0x58], al
jne 0x521853
mov eax, dword [ebx + 0x10]
test eax, eax
jne 0x521827
mov eax, dword [edi + 0xb0]
test eax, eax
je 0x521853
push eax
push edi
call fcn.00521fd0
mov esi, eax
mov eax, dword [ebp - 0xcc]
push esi
push dword [eax + 0xb8]
call dword [eax + 0xb4]
push esi
mov esi, dword [ebp - 0xcc]
push esi
call fcn.005087dc
add esp, 0x18
cmp dword [ebx + 8], 0
je 0x51cdc1
jmp 0x521865
mov edi, dword [ebp - 0x108]
imul eax, dword [ebx + 8], 0x14
mov ebx, dword [ebp - 0x118]
add ebx, 0xffffffec
add ebx, eax
jmp 0x51ce53
mov dword [edi + 0x50], ecx
mov al, byte [ebx + 8]
mov byte [edi + 0x56], al
mov dword [edi + 0x4c], esi
test ecx, ecx
je 0x5218f7
mov al, byte [ebx + 3]
test al, al
je 0x5218cc
movzx eax, al
push dword [eax*4 + 0x57be94]
push str._s_constraint_failed
push edi
call fcn.0051cc20
add esp, 0xc
cmp dword [ebx + 0x10], 0
je 0x5218dd
push dword [ebx + 0x10]
push dword [edi + 0x2c]
push str._z:__s
push dword [ebp - 0xcc]
call fcn.00511529
add esp, 0x10
mov dword [edi + 0x2c], eax
jmp 0x5218dd
push dword [ebx + 0x10]
push 0x57e68c
push edi
call fcn.0051cc20
add esp, 0xc
push dword [edi + 0x2c]
push dword [edi + 0xb0]
push esi
push str.abort_at__d_in___s_:__s
push dword [ebx + 4]
call fcn.004eae5d
add esp, 0x14
push edi
call fcn.005224e6
mov esi, dword [ebp - 0xcc]
pop ecx
push 5
pop ecx
mov dword [ebp - 0xd4], eax
cmp eax, ecx
je 0x521973
cmp dword [edi + 0x50], 0
push 0x65
pop eax
push 1
pop ecx
cmovne eax, ecx
mov dword [ebp - 0xd4], eax
jmp 0x5219b9
push str.cannot_open_savepoint___SQL_statements_in_progress
push edi
call fcn.0051cc20
pop ecx
pop ecx
push 5
pop eax
jmp 0x521ca7
push str.cannot_release_savepoint___SQL_statements_in_progress
push edi
call fcn.0051cc20
pop ecx
pop ecx
push 5
jmp 0x51daf5
sub ebx, dword [ebp - 0x118]
mov eax, ebx
mov esi, dword [ebp - 0xcc]
push 0x14
cdq
pop ebx
idiv ebx
mov dword [edi + 0x4c], eax
mov byte [esi + 0x43], 0
mov dword [ebp - 0xd4], ecx
mov dword [edi + 0x50], ecx
jmp 0x5219b9
mov eax, dword [ebp - 0xf4]
push eax
push str.no_such_savepoint:__s
push edi
call fcn.0051cc20
add esp, 0xc
xor eax, eax
inc eax
jmp 0x521ca1
push 8
jmp 0x521938
sub ebx, dword [ebp - 0x118]
mov eax, ebx
push 0x14
cdq
pop ecx
idiv ecx
mov dword [edi + 0x4c], eax
mov eax, dword [ebp - 0xd4]
mov dword [edi + 0x50], eax
mov esi, dword [ebp - 0xcc]
mov eax, dword [ebp - 0x150]
mov dword [esi + 0x20], eax
mov eax, dword [ebp - 0x154]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0xd0]
add dword [edi + 0x84], eax
push edi
call fcn.005229f4
mov eax, dword [ebp - 0xd4]
pop ecx
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005364e2
leave
ret
mov eax, 0x204
jmp 0x521ca7
push 6
pop eax
push 2
pop ecx
mov byte [edi + 0x56], cl
jmp 0x521ca7
mov esi, dword [ebp - 0xcc]
push 7
pop eax
mov dword [ebp - 0xd4], eax
push esi
call fcn.00516a80
mov eax, dword [ebp - 0xd4]
pop ecx
push 7
pop ecx
cmp eax, ecx
je 0x51e825
jmp 0x521caa
push str.too_many_levels_of_trigger_recursion
push edi
mov dword [ebp - 0xd4], 1
call fcn.0051cc20
pop ecx
pop ecx
mov eax, dword [ebp - 0xd4]
jmp 0x521ca1
push esi
call fcn.004e8c65
push eax
push 0x57e68c
push edi
call fcn.0051cc20
add esp, 0x10
jmp 0x521a4e
mov ecx, str.out_of
mov dword [ebp - 0xd4], 1
cmp esi, 5
mov eax, str.into
cmovne eax, ecx
push eax
push str.cannot_change__s_wal_mode_from_within_a_transaction
push edi
call fcn.0051cc20
add esp, 0xc
jmp 0x521a4e
mov eax, dword [ebp - 0xe8]
push dword [ebp - 0xf8]
call dword [eax + 0x1c]
pop ecx
jmp 0x51e81f
push 6
jmp 0x51daf5
mov eax, dword [esi + 0x130]
test eax, eax
je 0x521ae0
mov edx, dword [ebp - 0xd0]
cmp edx, dword [ebp - 0x14c]
jb 0x521ae0
push dword [esi + 0x134]
call eax
pop ecx
test eax, eax
jne 0x520979
push 0
push edi
call fcn.0051c815
pop ecx
pop ecx
test eax, eax
jne 0x521ca7
push 1
push edi
call fcn.0051c92c
mov eax, dword [edi + 0x48]
and dword [ebp - 0x148], 0
pop ecx
pop ecx
push 2
pop ecx
add eax, ecx
or eax, 1
mov dword [edi + 0x48], eax
imul esi, dword [ebx + 4], 0x28
add esi, dword [ebp - 0xd8]
mov dword [edi + 0x14], esi
cmp dword [ebx + 8], 0
jle 0x521b5a
mov eax, 0x1000
test word [esi + 8], ax
je 0x521b3e
push esi
call fcn.005233a3
pop ecx
test eax, eax
jne 0x51e81f
push esi
call fcn.00523451
mov eax, dword [ebp - 0x148]
add esi, 0x28
inc eax
pop ecx
mov dword [ebp - 0x148], eax
cmp eax, dword [ebx + 8]
jl 0x521b24
mov esi, dword [ebp - 0xcc]
cmp byte [esi + 0x45], 0
jne 0x51e825
sub ebx, dword [ebp - 0x118]
mov eax, ebx
mov dword [ebp - 0xd4], 0x64
push 0x14
cdq
pop ecx
idiv ecx
inc eax
mov dword [edi + 0x4c], eax
jmp 0x5219b9
mov eax, dword [ebp - 0xcc]
mov edx, dword [ebx + 4]
mov esi, dword [ebx + 8]
mov dword [ebp - 0x148], edx
movzx eax, byte [eax + 0x43]
cmp edx, eax
je 0x521c44
test esi, esi
mov esi, dword [ebp - 0xcc]
je 0x521bc4
push 0x204
push esi
call fcn.00516e33
pop ecx
pop ecx
mov al, 1
jmp 0x521c05
test edx, edx
je 0x521bdb
cmp dword [esi + 0xa0], 0
jle 0x521bdb
push str.cannot_commit_transaction___SQL_statements_in_progress
jmp 0x52192e
push 1
push edi
mov dword [ebp - 0x174], edx
call fcn.0051c815
mov dword [ebp - 0xd4], eax
pop ecx
pop ecx
test eax, eax
jne 0x5219b9
mov eax, dword [ebp - 0x174]
mov byte [ebp - 0x148], al
push edi
mov byte [esi + 0x43], al
call fcn.005224e6
pop ecx
push 5
pop ecx
cmp eax, ecx
jne 0x521c38
sub ebx, dword [ebp - 0x118]
mov eax, ebx
cdq
push 0x14
pop ebx
idiv ebx
mov dword [edi + 0x4c], eax
xor eax, eax
inc eax
sub al, byte [ebp - 0x148]
mov byte [esi + 0x43], al
jmp 0x52196d
push esi
call fcn.00506b91
pop ecx
jmp 0x521911
test esi, esi
mov eax, str.cannot_commit___no_transaction_is_active
mov ecx, str.cannot_rollback___no_transaction_is_active
cmove ecx, eax
test edx, edx
mov eax, str.cannot_start_a_transaction_within_a_transaction
cmovne eax, ecx
push eax
push edi
call fcn.0051cc20
pop ecx
pop ecx
jmp 0x52198d
cmp byte [esi + 0x45], 0
push 9
pop eax
push 7
pop ecx
cmovne eax, ecx
push eax
mov dword [ebp - 0xd4], eax
mov dword [edi + 0x50], eax
call fcn.00509e47
push eax
push 0x57e68c
push edi
call fcn.0051cc20
add esp, 0x10
jmp 0x52129a
mov edi, dword [ebp - 0x108]
mov esi, dword [ebp - 0xcc]
push 7
pop ecx
cmp byte [esi + 0x45], 0
cmovne eax, ecx
cmp dword [edi + 0x2c], 0
mov dword [ebp - 0xd4], eax
jne 0x521cdf
cmp eax, 0xc0a
je 0x521cdf
push eax
call fcn.00509e47
push eax
push 0x57e68c
push edi
call fcn.0051cc20
mov eax, dword [ebp - 0xd4]
add esp, 0x10
push eax
push esi
mov dword [edi + 0x50], eax
call fcn.00519e21
push dword [edi + 0x2c]
sub ebx, dword [ebp - 0x118]
push dword [edi + 0xb0]
mov eax, ebx
mov ebx, dword [ebp - 0xd4]
push 0x14
pop ecx
cdq
idiv ecx
push eax
push str.statement_aborts_at__d:___s___s
push ebx
call fcn.004eae5d
push edi
call fcn.005224e6
add esp, 0x20
cmp ebx, 0xc0a
jne 0x521d2c
push esi
call fcn.00511b99
add esp, 4
mov al, byte [ebp - 0x11d]
mov dword [ebp - 0xd4], 1
test al, al
je 0x5219b9
movzx eax, al
dec eax
push eax
push esi
call fcn.00516ad2
pop ecx
pop ecx
jmp 0x5219b9