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

Disassembly:
sub esp, 0x1bc
mov eax, dword [0x1030fff4]
xor eax, esp
mov dword [esp + 0x1b8], eax
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x1d0]
xor ecx, ecx
mov ebx, ecx
mov dword [esp + 0x68], edi
xorps xmm0, xmm0
mov dword [esp + 0x18], ebx
push edi
mov esi, dword [edi]
mov eax, dword [edi + 0x68]
mov ebp, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], esi
mov al, byte [esi + 0x4e]
mov byte [esp + 0x5c], al
mov eax, dword [edi + 0x58]
mov byte [esp + 0x7b], cl
mov dword [esp + 0x90], ecx
movlpd qword [esp + 0x9c], xmm0
mov dword [esp + 0x20], eax
call fcn.10159ff0
pop ecx
xor ecx, ecx
cmp dword [esi + 0x158], ecx
je 0x1015a0ff
mov ecx, dword [esi + 0x160]
xor edx, edx
mov eax, dword [edi + 0xb4]
div ecx
sub ecx, edx
mov dword [esp + 0x7c], ecx
xor ecx, ecx
mov dword [esp + 0x88], ecx
jmp 0x1015a110
or eax, 0xffffffff
mov dword [esp + 0x7c], eax
or eax, 0xffffffff
mov dword [esp + 0x88], eax
cmp dword [edi + 0x28], 7
mov dword [esp + 0x100], 0x14
je 0x1015f31c
mov dword [edi + 0x28], ecx
mov dword [edi + 0x38], ecx
mov dword [edi + 0x3c], ecx
mov dword [edi + 0x78], ecx
mov dword [esi + 0x1ac], ecx
cmp dword [esi + 0x110], ecx
jne 0x1015f2fb
imul ebp, dword [edi + 0x24], 0x14
xorps xmm0, xmm0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x9c]
mov ecx, dword [esp + 0x98]
movsd qword [esp + 0x154], xmm0
add ebp, eax
add ecx, 1
mov dword [esp + 0x34], ebp
mov dword [esp + 0x90], ecx
push 0
pop ecx
adc edx, ecx
mov cl, byte [ebp]
mov dword [esp + 0x94], edx
movzx edx, cl
mov byte [esp + 0x2b], cl
mov dword [esp + 0x30], edx
cmp edx, 0xab
ja case.0x1015a19b.85
jmp dword [edx*4 + 0x1015f482]
imul ecx, dword [ebp + 4], 0x28
push 4
pop eax
push 0x14
pop esi
add ecx, dword [esp + 0x1c]
mov word [ecx + 8], ax
mov eax, ebp
sub eax, dword [esp + 0x14]
cdq
idiv esi
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x1015ef08
imul eax, dword [ebp + 4], 0x28
mov ecx, 0x80
add eax, dword [esp + 0x1c]
imul ebp, dword [eax], 0x14
mov word [eax + 8], cx
add ebp, dword [esp + 0x14]
jmp 0x1015a434
imul ecx, dword [ebp + 4], 0x28
mov eax, dword [ebp + 0xc]
push 4
add ecx, dword [esp + 0x20]
dec eax
cdq
mov dword [ecx], eax
pop eax
mov word [ecx + 8], ax
xor eax, eax
mov dword [ecx + 4], edx
cmp dword [ebp + 8], eax
jne 0x1015ef08
jmp 0x1015a434
imul ecx, dword [ebp + 4], 0x28
mov edx, dword [esp + 0x14]
add ecx, dword [esp + 0x1c]
lea ebp, [edx - 0x14]
imul eax, dword [ecx], 0x14
imul eax, dword [eax + edx + 8], 0x14
add ebp, eax
mov eax, 0x80
mov word [ecx + 8], ax
jmp 0x1015a434
imul esi, dword [ebp + 4], 0x28
sub ebp, eax
push 4
pop ecx
mov eax, ebp
cdq
push 0x14
pop ebp
idiv ebp
add esi, dword [esp + 0x1c]
cdq
mov word [esi + 8], cx
mov ecx, dword [esi]
imul ebp, ecx, 0x14
mov dword [esi], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 4], edx
add ebp, eax
mov esi, dword [esp + 0x10]
jmp case.0x1015a19b.85
imul eax, dword [ebp + 0xc], 0x28
xor edx, edx
mov ecx, dword [esp + 0x1c]
inc edx
test byte [eax + ecx + 8], dl
je 0x1015a434
mov eax, ebp
sub eax, dword [esp + 0x14]
push 0x14
pop ecx
cdq
idiv ecx
mov ecx, dword [ebp + 4]
mov esi, eax
test ecx, ecx
jne 0x1015ef18
mov edx, dword [edi + 0xc8]
test edx, edx
je 0x1015ef18
mov eax, dword [edx + 4]
mov esi, dword [esp + 0x10]
dec dword [edi + 0xd0]
mov dword [edi + 0xc8], eax
mov eax, dword [edi + 0x2c]
add dword [esi + 0x68], eax
push edx
mov dword [esi + 0x64], eax
call fcn.1015fb86
mov edx, dword [edi + 0x68]
pop ecx
push 4
pop ecx
mov dword [esp + 0x14], edx
cmp dword [ebp + 8], ecx
jne 0x1015a2de
imul eax, eax, 0x14
mov eax, dword [eax + edx + 8]
dec eax
mov ecx, dword [edi + 0x58]
imul ebp, eax, 0x14
mov dword [esp + 0x1c], ecx
add ebp, edx
jmp 0x1015a434
push ebp
push edi
call fcn.10131951
pop ecx
pop ecx
mov ecx, eax
mov eax, dword [ebp + 4]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x1015a434
push ebp
push edi
call fcn.10131951
pop ecx
pop ecx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [eax], edx
mov dword [eax + 4], ecx
jmp 0x1015a434
push ebp
push edi
call fcn.10131951
pop ecx
pop ecx
push 8
pop ecx
mov word [eax + 8], cx
mov ecx, dword [ebp + 0x10]
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
jmp 0x1015a434
push ebp
push edi
call fcn.10131951
push dword [ebp + 0x10]
mov esi, eax
call fcn.1015666b
xor ecx, ecx
mov dword [ebp + 4], eax
inc ecx
add esp, 0xc
cmp byte [esp + 0x58], cl
je 0x1015a3ce
xor eax, eax
push eax
push ecx
push 0xffffffffffffffff
push dword [ebp + 0x10]
push esi
call fcn.10160e2c
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f158
movzx ecx, byte [esp + 0x58]
push ecx
push esi
call fcn.101599b3
pop ecx
pop ecx
test eax, eax
jne 0x1015f103
mov dword [esi + 0x18], eax
mov eax, 0x800
or word [esi + 8], ax
cmp byte [ebp + 1], 0xf9
jne 0x1015a3be
cmp dword [ebp + 0x10], ebx
je 0x1015a3be
push dword [ebp + 0x10]
push dword [esp + 0x14]
call fcn.10141a5b
pop ecx
pop ecx
mov byte [ebp + 1], 0xf9
mov eax, dword [esi + 0x10]
mov dword [ebp + 0x10], eax
mov eax, dword [esi + 0xc]
mov dword [ebp + 4], eax
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 4]
cmp eax, dword [esi + 0x6c]
jg 0x1015f15c
mov byte [ebp], 0x47
push ebp
push edi
call fcn.10131951
mov esi, eax
mov eax, 0xa02
pop ecx
pop ecx
mov word [esi + 8], ax
mov ecx, dword [ebp + 0x10]
mov al, byte [esp + 0x58]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp + 4]
mov dword [esi + 0xc], ecx
mov byte [esi + 0xa], al
mov eax, dword [ebp + 0xc]
test eax, eax
jle 0x1015a430
mov edi, dword [esp + 0x1c]
imul ecx, eax, 0x28
movzx eax, word [ebp + 2]
cdq
cmp dword [ecx + edi], eax
jne 0x1015a430
cmp dword [ecx + edi + 4], edx
jne 0x1015a430
mov eax, 0xa10
mov word [esi + 8], ax
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x94]
push 0x14
pop ecx
add ebp, ecx
mov ecx, dword [esp + 0x90]
jmp 0x1015a167
push ebp
push edi
call fcn.10131951
mov edi, dword [ebp + 0xc]
mov esi, 0x101
mov edx, dword [ebp + 8]
pop ecx
pop ecx
xor ecx, ecx
inc ecx
cmp dword [ebp + 4], 0
cmovne ecx, esi
lea esi, [eax + 0xc]
movzx ecx, cx
sub edi, edx
mov word [eax + 8], cx
xor eax, eax
mov dword [esp + 0x20], ecx
mov dword [esi], eax
test edi, edi
jle 0x1015a430
mov ebx, ecx
lea esi, [esi + 0x28]
lea eax, [esi - 0xc]
push eax
call fcn.10160d98
xor eax, eax
mov word [esi - 4], bx
dec edi
mov dword [esi], eax
pop ecx
test edi, edi
jg 0x1015a48c
mov ebx, dword [esp + 0x18]
jmp 0x1015a430
imul ecx, dword [ebp + 4], 0x28
mov edx, 0xff41
add ecx, dword [esp + 0x1c]
mov ax, word [ecx + 8]
and ax, dx
xor edx, edx
inc edx
or ax, dx
jmp 0x1015a22c
push ebp
push edi
call fcn.10131951
mov esi, eax
xor eax, eax
push eax
push eax
push dword [ebp + 4]
push dword [ebp + 0x10]
push esi
call fcn.10160e2c
mov al, byte [esp + 0x74]
add esp, 0x1c
mov byte [esi + 0xa], al
jmp 0x1015a430
imul ecx, dword [ebp + 4], 0x28
mov eax, dword [edi + 0x64]
add ecx, 0xffffffd8
add eax, ecx
push eax
mov dword [esp + 0x24], eax
call fcn.101610a4
pop ecx
test eax, eax
jne 0x1015f15c
imul esi, dword [ebp + 8], 0x28
mov eax, 0x2400
add esi, dword [esp + 0x1c]
test word [esi + 8], ax
je 0x1015a52c
push esi
call fcn.10160d98
pop ecx
push 0x14
pop eax
push eax
push dword [esp + 0x24]
push esi
call sub.VCRUNTIME140.dll_memcpy
mov ax, word [esi + 8]
mov ecx, 0xebff
and ax, cx
add esp, 0xc
mov ecx, 0x840
or ax, cx
jmp 0x1015a42c
mov eax, dword [ebp + 0xc]
imul esi, dword [ebp + 8], 0x28
mov dword [esp + 0x34], eax
imul eax, dword [ebp + 4], 0x28
add eax, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
push eax
push esi
call fcn.10160be6
mov eax, 0x1000
pop ecx
pop ecx
test word [esi + 8], ax
je 0x1015a594
push esi
call fcn.10160b9c
pop ecx
test eax, eax
jne 0x1015f103
mov eax, dword [esp + 0x3c]
add esi, 0x28
add eax, 0x28
sub dword [esp + 0x34], 1
mov dword [esp + 0x3c], eax
jne 0x1015a571
jmp 0x1015a430
mov eax, dword [ebp + 0xc]
imul esi, dword [ebp + 8], 0x28
mov dword [esp + 0x3c], eax
imul eax, dword [ebp + 4], 0x28
add eax, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
push 0x1000
push eax
push esi
mov dword [esp + 0x40], eax
call fcn.1021b520
mov eax, 0x1000
add esp, 0xc
test word [esi + 8], ax
je 0x1015a5f2
push esi
call fcn.10160b9c
pop ecx
test eax, eax
jne 0x1015f103
mov ecx, dword [esp + 0x3c]
mov eax, ecx
dec ecx
mov dword [esp + 0x3c], ecx
test eax, eax
je 0x1015a430
mov eax, dword [esp + 0x34]
add esi, 0x28
add eax, 0x28
jmp 0x1015a5c5
mov eax, 0x1000
push eax
imul eax, dword [ebp + 4], 0x28
add eax, dword [esp + 0x20]
push eax
imul eax, dword [ebp + 8], 0x28
add eax, dword [esp + 0x24]
push eax
call fcn.1021b520
add esp, 0xc
jmp 0x1015a434
imul eax, dword [ebp + 4], 0x28
mov edi, dword [esp + 0x1c]
push dword [eax + edi + 4]
push dword [eax + edi]
imul eax, dword [ebp + 8], 0x28
add eax, edi
push eax
call fcn.1021b520
jmp 0x1015a62e
imul edx, dword [ebp + 4], 0x28
mov eax, dword [esp + 0x1c]
imul esi, dword [ebp + 8], 0x28
imul ecx, dword [ebp + 0xc], 0x28
add edx, eax
mov dword [esp + 0x30], edx
add esi, eax
add ecx, eax
movzx eax, word [edx + 8]
mov dword [esp + 0x2c], eax
mov al, byte [esi + 8]
or al, byte [esp + 0x2c]
mov dword [esp + 0x3c], ecx
test al, 1
je 0x1015a690
push ecx
call fcn.10160d98
pop ecx
jmp 0x1015a430
mov ecx, dword [esp + 0x2c]
test cl, 0x12
jne 0x1015a6ca
xor eax, eax
push eax
push dword [esp + 0x5c]
push edx
call fcn.10161033
add esp, 0xc
test eax, eax
jne 0x1015f103
mov eax, dword [esp + 0x30]
mov ecx, 0xfffd
mov ax, word [eax + 8]
and ax, cx
movzx ecx, ax
mov dword [esp + 0x2c], ecx
jmp 0x1015a6f6
bt ecx, 0xe
jae 0x1015a6f6
push edx
call fcn.1016086e
pop ecx
test eax, eax
jne 0x1015f103
mov eax, dword [esp + 0x30]
mov ecx, 0xfffd
mov ax, word [eax + 8]
and ax, cx
movzx eax, ax
mov dword [esp + 0x2c], eax
movzx eax, word [esi + 8]
mov dword [esp + 0x34], eax
test al, 0x12
jne 0x1015a714
xor eax, eax
push eax
push dword [esp + 0x5c]
push esi
call fcn.10161033
add esp, 0xc
jmp 0x1015a721
bt eax, 0xe
jae 0x1015a73c
push esi
call fcn.1016086e
pop ecx
test eax, eax
jne 0x1015f103
mov ax, word [esi + 8]
mov ecx, 0xfffd
and ax, cx
movzx eax, ax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x30]
mov edx, dword [eax + 0xc]
mov eax, dword [esp + 0x10]
add edx, dword [esi + 0xc]
mov dword [esp + 0x20], edx
cmp edx, dword [eax + 0x6c]
jg 0x1015f154
mov ecx, dword [esp + 0x3c]
xor eax, eax
cmp ecx, esi
sete al
push eax
lea eax, [edx + 3]
push eax
push ecx
call fcn.10160a09
add esp, 0xc
test eax, eax
jne 0x1015f103
mov edi, dword [esp + 0x3c]
mov ecx, 0x3e40
push 2
mov ax, word [edi + 8]
and ax, cx
pop ecx
or ax, cx
mov word [edi + 8], ax
cmp edi, esi
je 0x1015a7af
push dword [esi + 0xc]
push dword [esi + 0x10]
push dword [edi + 0x10]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x40]
add esp, 0xc
mov word [esi + 8], ax
mov eax, dword [esp + 0x30]
push dword [eax + 0xc]
push dword [eax + 0x10]
mov eax, dword [edi + 0x10]
add eax, dword [esi + 0xc]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x3c]
xor edx, edx
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov word [eax + 8], cx
mov eax, dword [edi + 0x10]
mov ecx, dword [esp + 0x20]
mov byte [ecx + eax], dl
mov eax, dword [edi + 0x10]
mov byte [eax + ecx + 1], dl
mov eax, dword [edi + 0x10]
mov byte [eax + ecx + 2], dl
mov eax, 0x200
or word [edi + 8], ax
mov al, byte [esp + 0x58]
mov dword [edi + 0xc], ecx
mov byte [edi + 0xa], al
jmp 0x1015a430
imul esi, dword [ebp + 4], 0x28
add esi, dword [esp + 0x1c]
push esi
call fcn.10131348
imul edi, dword [ebp + 8], 0x28
movzx ebx, ax
add edi, dword [esp + 0x20]
push edi
mov dword [esp + 0x28], edi
call fcn.10131348
pop ecx
pop ecx
movzx ecx, ax
imul eax, dword [ebp + 0xc], 0x28
and cl, bl
push 4
pop edx
add eax, dword [esp + 0x1c]
mov dword [esp + 0x5c], eax
mov ax, word [edi + 8]
or ax, word [esi + 8]
movzx eax, ax
test dl, cl
je 0x1015a9d2
mov eax, dword [edi + 4]
mov ebx, dword [edi]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov dword [esp + 0xac], eax
movzx eax, byte [ebp]
mov dword [esp + 0xa8], ebx
sub eax, 0x69
je 0x1015a99a
sub eax, 1
je 0x1015a989
sub eax, 1
je 0x1015a978
sub eax, 1
mov eax, ecx
je 0x1015a8b9
or eax, edx
je 0x1015a9dd
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x1015a8a8
xor eax, eax
mov edx, eax
lea ecx, [eax + 1]
mov eax, dword [edi + 4]
push edx
push ecx
push eax
push ebx
call fcn.102362e0
jmp 0x1015a9c2
or eax, edx
je 0x1015a9dd
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x1015a96a
xor eax, eax
cmp ebx, eax
mov eax, dword [edi + 4]
jne 0x1015a96d
cmp eax, 0x80000000
jne 0x1015a96d
xor ebx, ebx
inc ebx
push esi
call fcn.1021b520
fstp qword [esp + 0x54]
push edi
call fcn.1021b520
movzx eax, byte [ebp]
pop ecx
fstp qword [esp + 0x4c]
pop ecx
sub eax, 0x69
je 0x1015aa29
sub eax, 1
je 0x1015aa1b
sub eax, 1
je 0x1015aa0d
sub eax, 1
je 0x1015a9ec
push esi
call fcn.1016012f
push dword [esp + 0x24]
mov esi, eax
mov edi, edx
call fcn.1016012f
pop ecx
pop ecx
mov ecx, esi
or ecx, edi
je 0x1015a9dd
mov ecx, esi
and ecx, edi
cmp ecx, 0xffffffff
jne 0x1015a955
xor ecx, ecx
mov esi, ebx
mov edi, ecx
push edi
push esi
push edx
push eax
call fcn.102362e0
mov ecx, eax
call fcn.10236670
jmp 0x1015aa35
mov eax, dword [edi + 4]
push edx
push ecx
push eax
push ebx
call fcn.10236230
jmp 0x1015a9c2
push edx
push ecx
lea eax, [esp + 0xb0]
push eax
call fcn.1014d2fa
jmp 0x1015a9a9
push edx
push ecx
lea eax, [esp + 0xb0]
push eax
call fcn.10156685
jmp 0x1015a9a9
push edx
push ecx
lea eax, [esp + 0xb0]
push eax
call fcn.1013aa55
add esp, 0xc
test eax, eax
jne 0x1015a8e6
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x5c]
push 4
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x1015aa5d
xor ebx, ebx
inc ebx
test bl, al
je 0x1015a8e9
push dword [esp + 0x5c]
call fcn.10160d98
pop ecx
jmp 0x1015a4a6
movsd xmm1, qword [esp + 0x50]
ucomisd xmm1, qword [esp + 0x154]
lahf
test ah, 0x44
jnp 0x1015a9dd
movsd xmm0, qword [esp + 0x48]
divsd xmm0, xmm1
jmp 0x1015aa35
movsd xmm0, qword [esp + 0x48]
mulsd xmm0, qword [esp + 0x50]
jmp 0x1015aa35
movsd xmm0, qword [esp + 0x48]
subsd xmm0, qword [esp + 0x50]
jmp 0x1015aa35
movsd xmm0, qword [esp + 0x48]
addsd xmm0, qword [esp + 0x50]
push ecx
push ecx
movsd qword [esp + 0x28], xmm0
movsd qword [esp], xmm0
call fcn.1021b520
pop ecx
pop ecx
test eax, eax
jne 0x1015a9dd
mov ecx, dword [esp + 0x5c]
movsd xmm0, qword [esp + 0x20]
push 8
movsd qword [ecx], xmm0
mov ax, word [ecx + 8]
mov edx, 0x3e40
and ax, dx
pop edx
or ax, dx
movzx eax, ax
mov word [ecx + 8], ax
jmp 0x1015a4a6
mov eax, dword [ebp + 4]
test eax, eax
je 0x1015a434
xor ecx, ecx
imul eax, eax, 0x28
push ecx
push ecx
add eax, dword [esp + 0x24]
jmp 0x1015a64b
imul ecx, dword [ebp + 8], 0x28
xor edx, edx
imul esi, dword [ebp + 4], 0x28
inc edx
mov eax, dword [esp + 0x1c]
imul edi, dword [ebp + 0xc], 0x28
add ecx, eax
add esi, eax
add edi, eax
mov al, byte [ecx + 8]
or al, byte [esi + 8]
mov dword [esp + 0x34], edi
test dl, al
je 0x1015aac1
push edi
jmp 0x1015a685
push ecx
call fcn.1016012f
push esi
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
call fcn.1016012f
pop ecx
pop ecx
mov cl, byte [ebp]
mov esi, eax
mov byte [esp + 0x2b], cl
cmp cl, 0x65
jne 0x1015aafe
and dword [esp + 0x80], esi
and dword [esp + 0x84], edx
jmp 0x1015ac59
cmp cl, 0x66
jne 0x1015ab16
or dword [esp + 0x80], esi
or dword [esp + 0x84], edx
jmp 0x1015ac59
mov eax, esi
or eax, edx
je 0x1015ac59
xor eax, eax
cmp edx, eax
jg 0x1015ab56
jl 0x1015ab2c
cmp esi, eax
jae 0x1015ab4b
mov al, 0xcf
sub al, cl
mov byte [esp + 0x2b], al
mov cl, al
cmp edx, 0xffffffff
jl 0x1015ab56
jg 0x1015ab42
cmp esi, 0xffffffc0
jbe 0x1015ab56
neg esi
push 0
pop eax
adc edx, eax
neg edx
cmp edx, eax
jl 0x1015ab9c
jg 0x1015ab56
cmp esi, 0x40
jb 0x1015ab9c
xor edx, edx
cmp dword [esp + 0x84], edx
jg 0x1015ab78
jl 0x1015ab6c
cmp dword [esp + 0x80], edx
jae 0x1015ab78
cmp cl, 0x67
je 0x1015ab78
or eax, 0xffffffff
or ecx, eax
jmp 0x1015ab89
xorps xmm0, xmm0
movlpd qword [esp + 0x20], xmm0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], ecx
jmp 0x1015ac59
push 8
pop eax
push eax
lea eax, [esp + 0x84]
push eax
lea eax, [esp + 0xa8]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0xac]
add esp, 0xc
cmp byte [esp + 0x2b], 0x67
mov ecx, esi
mov edx, dword [esp + 0xa4]
jne 0x1015abe4
call fcn.10236af0
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
jmp 0x1015ac3d
call fcn.10236b10
mov edi, eax
mov eax, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0xa4], eax
xor eax, eax
mov dword [esp + 0xa0], edi
cmp dword [esp + 0x84], eax
jg 0x1015ac39
jl 0x1015ac15
cmp dword [esp + 0x80], eax
jae 0x1015ac39
push 0x40
pop ecx
sub ecx, esi
or eax, 0xffffffff
or edx, 0xffffffff
call fcn.10236af0
or eax, edi
or edx, dword [esp + 0x20]
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
mov edi, dword [esp + 0x34]
push 8
pop eax
push eax
lea eax, [esp + 0xa4]
push eax
lea eax, [esp + 0x88]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov dword [edi], eax
mov ax, word [edi + 8]
mov dword [edi + 4], ecx
mov ecx, 0x3e40
and ax, cx
push 4
pop ecx
or ax, cx
mov word [edi + 8], ax
jmp 0x1015a430
imul esi, dword [ebp + 4], 0x28
add esi, dword [esp + 0x1c]
push esi
call fcn.10160b73
mov eax, dword [ebp + 8]
cdq
add dword [esi], eax
pop ecx
adc dword [esi + 4], edx
jmp 0x1015a430
imul esi, dword [ebp + 4], 0x28
push 4
pop edx
add esi, dword [esp + 0x1c]
movzx eax, word [esi + 8]
mov ecx, eax
test dl, al
jne 0x1015acea
push dword [esp + 0x58]
push 0x43
push esi
call fcn.1012067a
movzx eax, word [esi + 8]
add esp, 0xc
mov ecx, eax
push 4
pop edx
test dl, al
jne 0x1015acea
xor eax, eax
cmp dword [ebp + 8], eax
jne 0x1015ef08
push 0x14
pop eax
mov ebx, eax
jmp 0x1015f341
mov eax, 0x3e40
and ecx, eax
push 4
pop eax
or ecx, eax
mov word [esi + 8], cx
jmp 0x1015a430
imul eax, dword [ebp + 4], 0x28
add eax, dword [esp + 0x1c]
test byte [eax + 8], 0x24
je 0x1015a434
push eax
call fcn.10160cea
pop ecx
jmp 0x1015a434
imul esi, dword [ebp + 4], 0x28
mov eax, 0x4000
add esi, dword [esp + 0x1c]
test word [esi + 8], ax
je 0x1015ad41
push esi
call fcn.1016086e
mov ebx, eax
pop ecx
test ebx, ebx
jne 0x1015f341
push dword [esp + 0x58]
movzx eax, byte [ebp + 8]
push eax
push esi
call fcn.10160728
add esp, 0xc
mov ebx, eax
mov dword [esp + 0x18], ebx
mov esi, dword [esp + 0x10]
test ebx, ebx
jne 0x1015f345
jmp 0x1015a434
imul edi, dword [ebp + 4], 0x28
imul eax, dword [ebp + 0xc], 0x28
mov ecx, dword [esp + 0x1c]
add edi, ecx
add ecx, eax
mov dword [esp + 0x38], ecx
movzx eax, word [edi + 8]
movzx esi, word [ecx + 8]
mov ecx, esi
mov dword [esp + 0x30], eax
mov edx, ecx
mov dword [esp + 0x2c], ecx
or edx, eax
xor eax, eax
inc eax
test al, dl
je 0x1015ae18
movzx eax, word [ebp + 2]
mov edx, 0x80
test dl, al
je 0x1015adda
mov al, byte [esp + 0x2c]
xor edx, edx
and al, byte [esp + 0x30]
inc edx
test dl, al
je 0x1015adca
test ecx, 0x100
jne 0x1015adca
mov esi, dword [esp + 0x38]
xor eax, eax
jmp 0x1015af69
not ecx
and ecx, edx
lea ecx, [ecx*2 - 1]
jmp 0x1015aea6
test al, 0x20
je 0x1015ae08
imul ecx, dword [ebp + 8], 0x28
xor edx, edx
mov esi, 0x3e40
inc edx
mov dword [esp + 0x8c], edx
add ecx, dword [esp + 0x1c]
mov ax, word [ecx + 8]
and ax, si
or ax, dx
mov word [ecx + 8], ax
jmp 0x1015a430
push 0x10
pop ecx
test cl, al
jne 0x1015ef08
jmp 0x1015a430
mov al, byte [ebp + 2]
and al, 0x47
cmp al, 0x43
jb 0x1015aec7
push 2
pop eax
mov ecx, esi
test al, dl
je 0x1015ae7f
mov al, byte [esp + 0x30]
push 2
and al, 0x2e
pop ecx
cmp al, cl
jne 0x1015ae54
xor eax, eax
push eax
push edi
call fcn.1021b520
mov esi, dword [esp + 0x40]
pop ecx
pop ecx
movzx eax, word [esi + 8]
mov dword [esp + 0x2c], eax
jmp 0x1015ae58
mov esi, dword [esp + 0x38]
mov al, byte [esp + 0x2c]
movzx ecx, word [esp + 0x2c]
and al, 0x2e
push 2
pop edx
cmp al, dl
jne 0x1015ae7f
xor eax, eax
push eax
push esi
call fcn.1021b520
mov eax, dword [esp + 0x40]
pop ecx
pop ecx
movzx ecx, word [eax + 8]
jmp 0x1015ae83
mov eax, dword [esp + 0x38]
and cl, byte [edi + 8]
push 4
pop edx
test dl, cl
je 0x1015af58
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp eax, dword [edi + 4]
jl 0x1015aec2
jg 0x1015aea1
cmp ecx, dword [edi]
jbe 0x1015aeaf
xor eax, eax
lea ecx, [eax + 1]
mov esi, dword [esp + 0x38]
jmp 0x1015af6b
cmp eax, dword [edi + 4]
jg 0x1015adbf
jl 0x1015aec2
cmp ecx, dword [edi]
jae 0x1015adbf
or ecx, 0xffffffff
jmp 0x1015aea6
cmp al, 0x42
jne 0x1015af58
mov al, byte [esp + 0x30]
push 2
pop ecx
test cl, al
jne 0x1015af1f
test al, 0x2c
je 0x1015af1f
xor eax, eax
inc eax
push eax
push dword [esp + 0x5c]
push edi
call fcn.10161033
mov ax, word [edi + 8]
add esp, 0xc
xor ax, word [esp + 0x30]
mov ecx, 0x3e40
mov esi, dword [esp + 0x38]
and ax, cx
xor word [esp + 0x30], ax
push 2
pop ecx
cmp edi, esi
jne 0x1015af23
mov eax, dword [esp + 0x30]
or eax, ecx
movzx eax, ax
mov dword [esp + 0x2c], eax
jmp 0x1015af23
mov esi, dword [esp + 0x38]
mov al, byte [esp + 0x2c]
test cl, al
jne 0x1015af5c
test al, 0x2c
je 0x1015af5c
xor eax, eax
inc eax
push eax
push dword [esp + 0x5c]
push esi
call fcn.10161033
mov ax, word [esi + 8]
mov ecx, 0x3e40
xor ax, word [esp + 0x38]
add esp, 0xc
and ax, cx
xor word [esp + 0x2c], ax
jmp 0x1015af5c
mov esi, dword [esp + 0x38]
push dword [ebp + 0x10]
push edi
push esi
call fcn.1021b520
add esp, 0xc
mov ecx, eax
movzx eax, byte [ebp]
test ecx, ecx
jns 0x1015af7b
mov al, byte [eax + 0x10281064]
jmp 0x1015af8b
jne 0x1015af85
mov al, byte [eax + 0x1028106c]
jmp 0x1015af8b
mov al, byte [eax + 0x10281074]
movzx edx, al
mov ax, word [esp + 0x2c]
mov word [esi + 8], ax
mov ax, word [esp + 0x30]
mov word [edi + 8], ax
movzx eax, word [ebp + 2]
test al, 0x20
je 0x1015afef
imul esi, dword [ebp + 8], 0x28
mov dword [esp + 0x8c], ecx
add esi, dword [esp + 0x1c]
test al, 8
je 0x1015afcc
xor eax, eax
cmp byte [ebp], 0x35
sete al
cmp eax, edx
je 0x1015a430
mov cx, word [esi + 8]
mov eax, 0x3e40
and cx, ax
push 4
pop eax
or cx, ax
mov eax, edx
mov word [esi + 8], cx
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x1015a430
test edx, edx
jmp 0x1015ae0d
cmp dword [esp + 0x8c], 0
jne 0x1015ef08
jmp case.0x1015a19b.85
xor eax, eax
inc eax
test byte [ebp + 2], al
jne 0x1015b015
xor eax, eax
jmp 0x1015b01d
mov eax, dword [ebp - 4]
push 4
pop ecx
add eax, ecx
mov esi, dword [ebp + 4]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x64], esi
mov esi, dword [ebp + 8]
mov dword [esp + 0x70], esi
xor esi, esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x5c], edx
test ecx, ecx
jle 0x1015a430
lea ecx, [edx + 0x14]
mov dword [esp + 0x3c], ecx
test eax, eax
je 0x1015b057
mov edi, dword [eax + esi*4]
jmp 0x1015b059
mov edi, esi
mov eax, dword [edx + 0x10]
xor edx, edx
push dword [ecx]
inc edx
movzx eax, byte [eax + esi]
and eax, edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x74]
add eax, edi
imul eax, eax, 0x28
add eax, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x6c]
add eax, edi
imul eax, eax, 0x28
add eax, dword [esp + 0x24]
push eax
call fcn.1021b520
mov edx, eax
add esp, 0xc
mov dword [esp + 0x8c], edx
test edx, edx
jne 0x1015b0bd
mov ecx, dword [esp + 0x3c]
inc esi
mov edx, dword [esp + 0x5c]
push 4
pop eax
add ecx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], ecx
cmp esi, dword [esp + 0x20]
jl 0x1015b04e
jmp 0x1015a430
mov eax, dword [esp + 0x5c]
push 2
pop ecx
mov eax, dword [eax + 0x10]
test byte [esi + eax], cl
je 0x1015b0f9
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x1c]
add eax, edi
imul eax, eax, 0x28
test byte [eax + ecx + 8], 1
jne 0x1015b0f0
mov eax, dword [esp + 0x70]
add eax, edi
imul eax, eax, 0x28
test byte [eax + ecx + 8], 1
je 0x1015b0f9
neg edx
mov dword [esp + 0x8c], edx
cmp dword [esp + 0x48], 0
mov esi, dword [esp + 0x10]
je 0x1015a434
neg edx
mov dword [esp + 0x8c], edx
jmp 0x1015a434
mov edx, dword [esp + 0x8c]
test edx, edx
jns 0x1015b127
imul ebp, dword [ebp + 4], 0x14
jmp 0x1015b133
jne 0x1015b12f
imul ebp, dword [ebp + 8], 0x14
jmp 0x1015b133
imul ebp, dword [ebp + 0xc], 0x14
add ebp, eax
add ebp, 0xffffffec
jmp case.0x1015a19b.85
mov edi, dword [esp + 0x1c]
push 2
pop eax
push eax
imul eax, dword [ebp + 4], 0x28
add eax, edi
push eax
call fcn.1021b520
imul ecx, dword [ebp + 8], 0x28
mov esi, eax
push 2
pop eax
push eax
add ecx, edi
push ecx
call fcn.1021b520
add esp, 0x10
imul ecx, esi, 3
cmp byte [ebp], 0x2c
jne 0x1015b178
mov dl, byte [ecx + eax + 0x10281044]
jmp 0x1015b17f
mov dl, byte [ecx + eax + 0x102810b0]
imul esi, dword [ebp + 0xc], 0x28
mov ecx, 0x3e40
push 2
add esi, edi
mov ax, word [esi + 8]
and ax, cx
movzx ecx, ax
pop eax
cmp dl, al
jne 0x1015b1a0
xor eax, eax
inc eax
jmp 0x1015b1ac
movzx eax, dl
cdq
push 4
mov dword [esi], eax
mov dword [esi + 4], edx
pop eax
or ecx, eax
movzx eax, cx
jmp 0x1015a42c
imul eax, dword [ebp + 4], 0x28
push dword [ebp + 0xc]
add eax, dword [esp + 0x20]
push eax
call fcn.1021b520
xor eax, dword [ebp + 0x10]
cdq
push edx
push eax
imul eax, dword [ebp + 8], 0x28
add eax, dword [esp + 0x2c]
push eax
call fcn.1021b520
add esp, 0x14
jmp 0x1015a434
imul eax, dword [ebp + 4], 0x28
xor ecx, ecx
imul esi, dword [ebp + 8], 0x28
inc ecx
add eax, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
test byte [eax + 8], cl
jne 0x1015b21b
xor ecx, ecx
push ecx
push eax
call fcn.1021b520
neg eax
sbb eax, eax
xor ecx, ecx
push ecx
inc eax
push eax
push esi
call fcn.1021b520
add esp, 0x14
jmp 0x1015a430
push esi
jmp 0x1015a685
imul esi, dword [ebp + 8], 0x28
imul edi, dword [ebp + 4], 0x28
add esi, dword [esp + 0x1c]
add edi, dword [esp + 0x1c]
push esi
call fcn.10160d98
xor eax, eax
inc eax
pop ecx
test byte [edi + 8], al
jne 0x1015a430
push 4
pop eax
push edi
mov word [esi + 8], ax
call fcn.1016012f
pop ecx
not eax
not edx
jmp 0x1015afe5
cmp dword [edi + 0xc8], 0
je 0x1015b2aa
mov eax, ebp
sub eax, dword [edi + 0x68]
cdq
push 0x14
pop ecx
idiv ecx
xor edx, edx
mov ecx, eax
inc edx
mov eax, dword [edi + 0xc8]
mov esi, ecx
shr esi, 3
and ecx, 7
shl edx, cl
mov eax, dword [eax + 0x18]
mov dword [esp + 0x20], eax
movzx eax, byte [esi + eax]
test eax, edx
jne 0x1015ef08
bts eax, ecx
mov ecx, dword [esp + 0x20]
mov byte [esi + ecx], al
mov ecx, dword [edi + 0x68]
mov esi, dword [esp + 0x10]
jmp 0x1015b2b9
mov ecx, dword [edi + 0x68]
mov eax, dword [ecx + 4]
cmp eax, dword [ebp + 4]
je 0x1015ef08
mov eax, dword [ecx + 4]
mov dword [ebp + 4], eax
jmp 0x1015a434
imul eax, dword [ebp + 4], 0x28
push dword [ebp + 0xc]
add eax, dword [esp + 0x20]
push eax
call fcn.1021b520
pop ecx
pop ecx
test eax, eax
jmp 0x1015a203
xor eax, eax
xor ecx, ecx
cmp dword [ebp + 0xc], ecx
sete al
push eax
imul eax, dword [ebp + 4], 0x28
add eax, dword [esp + 0x20]
push eax
call fcn.1021b520
pop ecx
pop ecx
test eax, eax
je 0x1015ef08
jmp 0x1015a434
imul eax, dword [ebp + 4], 0x28
xor edx, edx
mov ecx, dword [esp + 0x1c]
inc edx
test byte [eax + ecx + 8], dl
jmp 0x1015a203
imul eax, dword [ebp + 4], 0x28
xor edx, edx
mov ecx, dword [esp + 0x1c]
inc edx
test byte [eax + ecx + 8], dl
jmp 0x1015b2fb
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
cmp byte [eax + 2], 0
je 0x1015a434
imul eax, dword [ebp + 0xc], 0x28
add eax, dword [esp + 0x1c]
push eax
call fcn.10160d98
pop ecx
jmp 0x1015ef08
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x74]
push eax
call fcn.10159c54
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f345
imul eax, dword [ebp + 0xc], 0x28
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esi + 0x50]
add ecx, eax
mov eax, dword [esi + 0x24]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], edx
cmp eax, dword [edi + 0x20]
je 0x1015b468
cmp byte [esi + 2], bl
je 0x1015b3d1
cmp byte [esi], 3
jne 0x1015a684
imul ecx, dword [esi + 0x28], 0x28
add ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [esi + 0x5c], eax
mov dword [esi + 0x58], eax
mov eax, dword [ecx + 0x10]
mov dword [esi + 0x54], eax
jmp 0x1015b40c
mov esi, dword [esi + 0x30]
push esi
call fcn.1012d251
mov ecx, dword [esp + 0x74]
mov eax, dword [esi + 0x2c]
mov dword [ecx + 0x58], eax
lea eax, [ecx + 0x5c]
push eax
push esi
call fcn.1013ee35
mov esi, dword [esp + 0x7c]
add esp, 0xc
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x54], eax
mov eax, dword [esi + 0x58]
cmp eax, dword [ecx + 0x6c]
ja 0x1015f150
mov edx, dword [esp + 0x2c]
mov eax, dword [edi + 0x20]
mov dword [esi + 0x24], eax
mov eax, dword [esi + 0x54]
mov cl, byte [eax]
cmp cl, 0x80
jae 0x1015b426
movzx eax, cl
mov dword [edx], eax
xor eax, eax
inc eax
jmp 0x1015b433
push edx
push eax
call fcn.1021b520
mov edx, dword [esp + 0x34]
pop ecx
pop ecx
movzx eax, al
mov dword [esi + 0x38], eax
xor eax, eax
mov word [esi + 0x42], ax
mov ecx, dword [edx]
cmp dword [esi + 0x5c], ecx
jae 0x1015b4ee
xor ecx, ecx
mov dword [esi + 0x54], ecx
mov dword [esi + 0x5c], ecx
mov eax, dword [edx]
cmp eax, 0x18003
ja 0x1015b61f
cmp eax, dword [esi + 0x58]
ja 0x1015b61f
movzx eax, word [esi + 0x42]
mov ecx, dword [esp + 0x38]
mov edx, eax
mov dword [esp + 0x20], edx
cmp eax, ecx
ja 0x1015b6ac
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi + 0x38]
mov ecx, dword [ecx]
cmp eax, ecx
jae 0x1015b669
mov edi, dword [esi + 0x54]
test edi, edi
mov dword [esp + 0x5c], edi
mov edi, dword [esp + 0x68]
jne 0x1015b4fe
xor eax, eax
push 0x28
push eax
lea eax, [esp + 0x174]
push eax
call sub.VCRUNTIME140.dll_memset
lea eax, [esp + 0x178]
push eax
mov eax, dword [esp + 0x3c]
push dword [eax]
push dword [esi + 0x30]
call fcn.1021b520
mov ebx, eax
add esp, 0x18
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x17c]
movzx edx, word [esi + 0x42]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
jmp 0x1015b4f9
mov eax, dword [esi + 0x54]
mov dword [esp + 0x5c], eax
xor eax, eax
mov edx, eax
mov eax, dword [esi + 0x38]
jmp 0x1015b501
movzx edx, dx
movzx ebx, dx
mov edx, dword [esp + 0x2c]
mov edx, dword [edx + ebx*4]
mov dword [esp + 0x6c], edx
xor edx, edx
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x5c]
lea edi, [eax + edx]
lea eax, [edx + ecx]
lea ecx, [esi + 0x60]
mov dword [esp + 0x3c], eax
mov esi, dword [esp + 0x64]
lea ecx, [ecx + ebx*4]
mov dword [esp + 0x50], ecx
mov ebp, eax
movzx eax, byte [edi]
mov edx, 0x80
mov dword [esp + 0x44], eax
mov dword [esp + 0x64], eax
mov dword [ecx], eax
cmp eax, edx
jae 0x1015b561
movzx eax, al
inc edi
movzx eax, byte [eax + 0x10280368]
cdq
add dword [esp + 0x6c], eax
adc esi, edx
mov edx, dword [esp + 0x6c]
jmp 0x1015b597
lea eax, [esp + 0x64]
push eax
push edi
call fcn.1021b520
mov ecx, dword [esp + 0x58]
movzx eax, al
add edi, eax
mov eax, dword [esp + 0x6c]
push eax
mov dword [esp + 0x50], eax
mov dword [ecx], eax
call fcn.10161fdc
mov edx, dword [esp + 0x78]
add esp, 0xc
add edx, eax
mov dword [esp + 0x6c], edx
push 0
pop eax
adc esi, eax
push 4
pop eax
add ecx, eax
inc ebx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x50], ecx
mov dword [eax + ebx*4], edx
cmp ebx, dword [esp + 0x38]
ja 0x1015b5b2
cmp edi, ebp
jb 0x1015b533
mov ecx, dword [esp + 0x3c]
cmp edi, ecx
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x6c], edi
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x70]
jb 0x1015b5ed
cmp eax, ecx
ja 0x1015b5fc
cmp edx, dword [esi + 0x58]
jne 0x1015b5fc
mov ecx, dword [esp + 0x64]
test ecx, ecx
jne 0x1015b5fc
jmp 0x1015b5f1
mov ecx, dword [esp + 0x64]
test ecx, ecx
jb 0x1015b63b
ja 0x1015b5fc
cmp edx, dword [esi + 0x58]
jbe 0x1015b63b
mov eax, dword [esp + 0x2c]
xor ecx, ecx
cmp dword [eax], ecx
jne 0x1015b60c
mov eax, dword [esp + 0x3c]
jmp 0x1015b63f
cmp dword [esi + 0x54], ecx
jne 0x1015b61f
lea eax, [esp + 0x16c]
push eax
call fcn.10160d10
pop ecx
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0xc]
test eax, eax
jle 0x1015efb6
imul eax, eax, 0x14
lea ebp, [edx - 0x14]
add ebp, eax
jmp 0x1015a430
mov ecx, dword [esp + 0x50]
sub eax, dword [esp + 0x5c]
mov word [esi + 0x42], cx
mov dword [esi + 0x38], eax
xor eax, eax
cmp dword [esi + 0x54], eax
jne 0x1015b65f
lea eax, [esp + 0x16c]
push eax
call fcn.10160d10
pop ecx
movzx eax, word [esi + 0x42]
mov edx, dword [esp + 0x44]
jmp 0x1015b678
xor eax, eax
mov edx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x44], edx
movzx eax, ax
movzx eax, ax
cmp eax, dword [esp + 0x38]
ja 0x1015b6b4
cmp byte [ebp + 1], 0xf5
jne 0x1015b6a2
mov eax, 0x800
push eax
push dword [ebp + 0x10]
mov eax, dword [esp + 0x38]
push eax
call fcn.1021b520
add esp, 0xc
jmp 0x1015a430
mov eax, dword [esp + 0x30]
push eax
jmp 0x1015a685
mov edx, dword [esi + ecx*4 + 0x60]
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 0x30]
mov eax, 0x2400
test word [ecx + 8], ax
je 0x1015b6ce
push ecx
call fcn.10160d98
mov edx, dword [esp + 0x48]
pop ecx
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
mov eax, dword [esi + 0x5c]
cmp eax, dword [edi + ecx*4 + 4]
mov edi, dword [esp + 0x68]
mov ecx, dword [esp + 0x30]
jb 0x1015b78a
mov eax, dword [esi + 0x54]
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x2c]
add eax, dword [esi + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x20], eax
cmp edx, 0xc
jae 0x1015b710
push ecx
push edx
push eax
call fcn.1021b520
jmp 0x1015b69a
mov al, byte [esp + 0x58]
lea esi, [edx - 0xc]
shr esi, 1
mov byte [ecx + 0xa], al
mov dword [ecx + 0xc], esi
lea eax, [esi + 2]
cmp dword [ecx + 0x18], eax
jge 0x1015b74f
xor edx, edx
inc edx
lfence
mov word [ecx + 8], dx
xor edx, edx
push edx
push eax
push ecx
call fcn.10160a09
add esp, 0xc
test eax, eax
jne 0x1015f103
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x10]
jmp 0x1015b755
mov eax, dword [ecx + 0x14]
mov dword [ecx + 0x10], eax
push esi
push dword [esp + 0x24]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [esp + 0x3c]
xor edx, edx
add esp, 0xc
mov eax, dword [ecx + 0x10]
mov byte [esi + eax], dl
mov eax, dword [ecx + 0x10]
mov byte [esi + eax + 1], dl
inc edx
mov eax, dword [esp + 0x44]
and eax, edx
mov ax, word [eax*2 + 0x102810bc]
jmp 0x1015adff
mov al, byte [esp + 0x58]
mov byte [ecx + 0xa], al
movzx eax, word [ebp + 2]
test al, 0xc0
je 0x1015b7a7
cmp edx, 0xc
jb 0x1015b7a3
test dl, 1
je 0x1015b7b4
test al, al
js 0x1015b7b4
push edx
call fcn.10161fdc
add esp, 4
test eax, eax
jne 0x1015b7c0
push ecx
push edx
push 0x10280138
jmp 0x1015b709
push ecx
mov ecx, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x34]
push dword [eax + ecx*4]
push dword [esi + 0x30]
call fcn.10160931
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x44]
push esi
push eax
push dword [esi + 0x10]
call fcn.1021b520
mov eax, 0xefff
add esp, 0xc
and word [esi + 8], ax
jmp 0x1015a430
imul esi, dword [ebp + 4], 0x28
mov edi, dword [ebp + 0x10]
add esi, dword [esp + 0x1c]
mov al, byte [edi]
push dword [esp + 0x58]
mov byte [esp + 0xe0], al
push dword [esp + 0xe0]
push esi
call fcn.1012067a
add esp, 0xc
cmp byte [edi], 0x45
jne 0x1015b890
movzx ecx, word [esi + 8]
push 4
pop eax
mov dword [esp + 0x20], ecx
test al, cl
je 0x1015b890
mov edx, dword [esi]
xor eax, eax
add edx, eax
mov eax, dword [esi + 4]
adc eax, 0x8000
cmp eax, 0xffff
ja 0x1015b870
jb 0x1015b861
cmp edx, 0xffffffff
ja 0x1015b870
and ecx, 0xfffb
or ecx, 0x20
mov word [esi + 8], cx
jmp 0x1015b890
mov edx, dword [esi + 4]
mov ecx, dword [esi]
call fcn.10236670
mov eax, dword [esp + 0x20]
push 8
and eax, 0xfffb
movsd qword [esi], xmm0
pop ecx
or eax, ecx
mov word [esi + 8], ax
inc edi
mov al, byte [edi]
test al, al
je 0x1015a430
add esi, 0x28
jmp 0x1015b816
imul edx, dword [ebp + 4], 0x28
xor eax, eax
mov ecx, dword [ebp + 0x10]
xorps xmm0, xmm0
mov dword [esp + 0x38], eax
imul eax, dword [ebp + 8], 0x28
movlpd qword [esp + 0x3c], xmm0
add edx, dword [esp + 0x1c]
movlpd qword [esp + 0x5c], xmm0
mov dword [esp + 0x50], ecx
add eax, 0xffffffd8
mov dword [esp + 0x48], edx
add eax, edx
mov dword [esp + 0x20], eax
mov al, byte [edi + 0x93]
mov byte [esp + 0x2b], al
imul eax, dword [ebp + 0xc], 0x28
add eax, dword [esp + 0x1c]
mov dword [esp + 0x64], eax
test ecx, ecx
je 0x1015b947
mov ebx, dword [esp + 0x58]
lea esi, [edx + 8]
mov edi, ecx
mov al, byte [edi]
mov byte [esp + 0xe0], al
push ebx
push dword [esp + 0xe4]
lea eax, [esi - 8]
push eax
call fcn.1012067a
add esp, 0xc
cmp byte [edi], 0x45
jne 0x1015b932
movzx eax, word [esi]
push 4
pop ecx
test cl, al
je 0x1015b932
and eax, 0xfffb
or eax, 0x20
mov word [esi], ax
inc edi
add esi, 0x28
mov al, byte [edi]
mov byte [esp + 0xe0], al
test al, al
jne 0x1015b904
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x40]
add eax, 0x1c
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x44], ecx
mov dword [esp + 0x70], edx
movzx edx, word [eax - 0x14]
mov dword [esp + 0x30], eax
mov dword [esp + 0x5c], edx
test dl, 1
je 0x1015b9a0
mov eax, 0x4000
and edx, eax
movzx eax, dx
mov edx, dword [esp + 0x30]
neg eax
sbb eax, eax
and eax, 0xa
mov dword [edx], eax
mov edx, dword [esp + 0x38]
inc edx
jmp 0x1015bbb0
test dl, 0x24
je 0x1015bafb
mov ecx, dword [eax - 0x1c]
mov eax, dword [eax - 0x18]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x50], eax
test eax, eax
jg 0x1015b9c5
jl 0x1015b9c1
test ecx, ecx
jae 0x1015b9c5
not ecx
not eax
inc dword [esp + 0x38]
test eax, eax
ja 0x1015ba78
jb 0x1015b9d8
cmp ecx, 0x7f
ja 0x1015ba15
mov eax, dword [esp + 0x3c]
and eax, 1
cmp eax, dword [esp + 0x3c]
jne 0x1015b9fb
xor eax, eax
cmp eax, dword [esp + 0x50]
jne 0x1015b9fd
push 4
pop edx
cmp byte [esp + 0x2b], dl
jb 0x1015b9fd
lea eax, [ecx + 8]
jmp 0x1015ba0c
xor eax, eax
xor ecx, ecx
inc ecx
add dword [esp + 0x44], ecx
adc esi, eax
mov eax, ecx
mov dword [esp + 0x2c], esi
mov ecx, dword [esp + 0x44]
jmp 0x1015baec
test eax, eax
ja 0x1015ba78
jb 0x1015ba23
cmp ecx, 0x7fff
ja 0x1015ba27
push 2
jmp 0x1015ba60
test eax, eax
ja 0x1015ba78
jb 0x1015ba35
cmp ecx, 0x7fffff
ja 0x1015ba50
mov ecx, dword [esp + 0x44]
push 0
add ecx, 3
pop eax
adc esi, eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x2c], esi
push 3
jmp 0x1015baeb
test eax, eax
ja 0x1015ba78
jb 0x1015ba5e
cmp ecx, 0x7fffffff
ja 0x1015ba78
push 4
mov ecx, dword [esp + 0x48]
pop edx
add ecx, edx
push 0
pop eax
adc esi, eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x2c], esi
mov eax, edx
jmp 0x1015baec
cmp eax, 0x7fff
ja 0x1015ba9e
jb 0x1015ba86
cmp ecx, 0xffffffff
ja 0x1015ba9e
mov ecx, dword [esp + 0x44]
push 0
add ecx, 6
pop eax
adc esi, eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x2c], esi
push 5
jmp 0x1015baeb
mov ecx, dword [esp + 0x44]
push 8
pop eax
add ecx, eax
push 0
pop eax
adc esi, eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x2c], esi
test dl, 0x20
je 0x1015bae9
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x3c]
call fcn.10236670
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x5c]
push 8
pop edx
and eax, 0xffdf
movsd qword [ecx - 0x1c], xmm0
or eax, edx
mov word [ecx - 0x14], ax
mov ecx, dword [esp + 0x44]
push 7
jmp 0x1015baeb
push 6
pop eax
mov edx, dword [esp + 0x30]
mov dword [edx], eax
mov edx, dword [esp + 0x38]
jmp 0x1015bbb4
test dl, 8
je 0x1015bb22
mov edx, dword [esp + 0x38]
inc edx
mov dword [eax], 7
add ecx, 8
mov dword [esp + 0x38], edx
mov dword [esp + 0x44], ecx
adc esi, 0
mov dword [esp + 0x2c], esi
jmp 0x1015bbb8
mov ecx, dword [eax - 0x10]
mov eax, edx
shr eax, 1
and eax, 1
mov dword [esp + 0x50], ecx
lea eax, [eax + ecx*2]
add eax, 0xc
mov dword [esp + 0x5c], eax
test edx, 0x4000
je 0x1015bb86
mov esi, dword [esp + 0x30]
add esi, 0xffffffe4
mov edx, dword [esi]
lea eax, [eax + edx*2]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x44]
or eax, dword [esp + 0x2c]
je 0x1015bb73
push esi
call fcn.1016086e
pop ecx
test eax, eax
jne 0x1015f103
mov ecx, dword [esp + 0x50]
add ecx, dword [esi]
jmp 0x1015bb7e
mov eax, edx
cdq
add dword [esp + 0x70], eax
adc dword [esp + 0x6c], edx
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x5c]
add dword [esp + 0x44], ecx
push 0
pop ecx
push ecx
adc esi, ecx
push eax
mov dword [esp + 0x34], esi
call fcn.101595ed
mov edx, dword [esp + 0x40]
pop ecx
pop ecx
mov ecx, dword [esp + 0x30]
add edx, eax
mov eax, dword [esp + 0x5c]
mov dword [ecx], eax
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x30]
add eax, 0xffffffe4
cmp eax, dword [esp + 0x48]
je 0x1015bbcd
mov eax, dword [esp + 0x30]
sub eax, 0x28
jmp 0x1015b96e
cmp edx, 0x7e
jle 0x1015bbff
mov eax, edx
cdq
push edx
push eax
call fcn.101595ed
mov esi, eax
mov eax, dword [esp + 0x40]
add eax, esi
mov dword [esp + 0x40], eax
cdq
push edx
push eax
call fcn.101595ed
mov edx, dword [esp + 0x48]
add esp, 0x10
cmp esi, eax
mov esi, dword [esp + 0x2c]
jge 0x1015bc04
inc edx
mov dword [esp + 0x38], edx
mov eax, edx
cdq
mov ecx, eax
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x44]
add eax, ecx
mov dword [esp + 0x3c], ecx
mov ecx, eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x64]
adc esi, edx
add ecx, dword [esp + 0x70]
adc esi, dword [esp + 0x6c]
mov eax, dword [eax + 0x18]
cdq
cmp esi, edx
jg 0x1015bc45
jl 0x1015bc39
cmp ecx, eax
ja 0x1015bc45
mov ecx, dword [esp + 0x64]
mov eax, dword [ecx + 0x14]
mov dword [ecx + 0x10], eax
jmp 0x1015bc7f
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x6c]
cdq
cmp esi, edx
jg 0x1015f158
jl 0x1015bc5f
cmp ecx, eax
ja 0x1015f158
mov eax, dword [esp + 0x44]
push eax
push dword [esp + 0x68]
mov dword [esp + 0x4c], eax
call fcn.101607da
pop ecx
pop ecx
test eax, eax
jne 0x1015f103
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x70]
mov dword [ecx + 0xc], eax
push 0x10
pop eax
mov word [ecx + 8], ax
mov eax, edx
or eax, dword [esp + 0x6c]
je 0x1015bca4
mov eax, 0x4010
mov dword [ecx], edx
mov word [ecx + 8], ax
mov eax, dword [esp + 0x38]
mov edx, 0x80
mov esi, dword [ecx + 0x10]
lea edi, [esi + eax]
cmp eax, edx
jae 0x1015bcc0
xor ecx, ecx
mov byte [esi], al
inc ecx
mov eax, ecx
jmp 0x1015bcd7
push dword [esp + 0x50]
push dword [esp + 0x40]
push esi
call fcn.1021b520
xor ecx, ecx
add esp, 0xc
inc ecx
lea edx, [ecx + 0x7f]
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x20]
movzx eax, al
add esi, eax
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x20], eax
cmp eax, edx
jae 0x1015bcf5
mov byte [esi], al
mov eax, ecx
jmp 0x1015bd02
xor ecx, ecx
push ecx
push eax
push esi
call fcn.1021b520
add esp, 0xc
push dword [esp + 0x20]
movzx eax, al
push ebx
push edi
add esi, eax
call fcn.1021b520
add esp, 0xc
add ebx, 0x28
add edi, eax
push 1
pop ecx
lea edx, [ecx + 0x7f]
cmp ebx, ebp
jbe 0x1015bce4
mov ebp, dword [esp + 0x34]
jmp 0x1015a4a6
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
mov eax, dword [eax + 0x30]
cmp dword [ebp + 0xc], ecx
je 0x1015bd4f
push eax
call fcn.1013ef96
pop ecx
mov esi, eax
mov dword [esp + 0x20], edx
jmp 0x1015bd81
lea ecx, [esp + 0x48]
xorps xmm0, xmm0
push ecx
push eax
push esi
movlpd qword [esp + 0x54], xmm0
call fcn.1013d545
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f345
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x20], eax
push ebp
push edi
call fcn.10131951
pop ecx
pop ecx
mov ecx, dword [esp + 0x20]
mov dword [eax], esi
mov dword [eax + 4], ecx
xor ecx, ecx
mov esi, dword [esp + 0x10]
cmp dword [esi + 0x110], ecx
jne 0x1015f134
mov edx, dword [esp + 0x88]
cmp dword [esp + 0x94], edx
jb 0x1015a434
mov ecx, dword [esp + 0x7c]
jbe 0x1015be11
mov eax, dword [esi + 0x158]
test eax, eax
je 0x1015a434
add ecx, dword [esi + 0x160]
push 0
mov dword [esp + 0x80], ecx
pop ecx
push dword [esi + 0x15c]
adc edx, ecx
mov dword [esp + 0x8c], edx
call eax
pop ecx
test eax, eax
jne 0x1015f127
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x7c]
cmp dword [esp + 0x94], edx
ja 0x1015bdbf
jb 0x1015a434
cmp dword [esp + 0x90], ecx
jae 0x1015bdbf
jmp 0x1015a434
mov ecx, dword [ebp + 4]
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x3c], eax
test ecx, ecx
jne 0x1015befa
xor ebx, ebx
cmp dword [esi + 0xb8], ebx
jg 0x1015efc6
push eax
call fcn.1015666b
mov esi, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], esi
mov ecx, dword [eax + 0x1e0]
add ecx, dword [eax + 0x1dc]
push ecx
push ebx
push eax
call fcn.10163303
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov edi, dword [esp + 0x10]
lea eax, [esi + 0x21]
xor ecx, ecx
push ecx
push eax
push edi
call fcn.10141b1e
mov esi, eax
add esp, 0xc
test esi, esi
je 0x1015bef3
mov ecx, dword [esp + 0x20]
lea edx, [esi + 0x20]
inc ecx
mov dword [esi], edx
push ecx
push dword [esp + 0x40]
push edx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp byte [edi + 0x4f], bl
je 0x1015beba
xor eax, eax
mov byte [edi + 0x4f], al
inc eax
mov byte [edi + 0x57], al
jmp 0x1015bec0
inc dword [edi + 0x1dc]
mov eax, dword [edi + 0x1d0]
mov dword [esi + 0x18], eax
mov eax, dword [edi + 0x1e8]
mov ecx, dword [edi + 0x1ec]
mov dword [edi + 0x1d0], esi
mov dword [esi + 8], eax
mov dword [esi + 0xc], ecx
mov eax, dword [edi + 0x1f0]
mov ecx, dword [edi + 0x1f4]
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
mov esi, edi
jmp 0x1015a434
mov esi, dword [esi + 0x1d0]
xor ecx, ecx
mov dword [esp + 0x2c], ecx
push eax
test esi, esi
je 0x1015f006
push dword [esi]
call fcn.101565fc
pop ecx
pop ecx
test eax, eax
je 0x1015bf29
inc dword [esp + 0x2c]
mov esi, dword [esi + 0x18]
mov eax, dword [esp + 0x3c]
jmp 0x1015bf06
mov ecx, dword [esp + 0x10]
xor eax, eax
mov edx, dword [esp + 0x30]
cmp dword [ecx + 0xb8], eax
jle 0x1015bf44
inc eax
cmp edx, eax
je 0x1015efd0
lea eax, [esi + 0x18]
cmp dword [eax], 0
mov dword [esp + 0x5c], eax
jne 0x1015c040
cmp byte [ecx + 0x57], 0
je 0x1015c040
xor eax, eax
inc eax
mov dword [esp + 0x34], eax
cmp edx, eax
jne 0x1015c046
push eax
push edi
call fcn.10159aa3
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f3e8
mov eax, dword [esp + 0x10]
xor ecx, ecx
inc ecx
push edi
mov byte [eax + 0x4f], cl
call fcn.1015fcfa
pop ecx
push 5
pop ecx
cmp eax, ecx
je 0x1015efe4
mov ebx, dword [edi + 0x28]
xor ecx, ecx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
test ebx, ebx
je 0x1015c038
mov byte [eax + 0x4f], cl
mov eax, dword [esp + 0x10]
test ebx, ebx
jne 0x1015f341
mov ecx, dword [eax + 0x1d0]
cmp ecx, esi
je 0x1015bff4
mov edi, dword [esp + 0x10]
mov eax, dword [ecx + 0x18]
push ecx
push edi
mov dword [edi + 0x1d0], eax
call fcn.10141a5b
pop ecx
pop ecx
mov ecx, dword [edi + 0x1d0]
dec dword [edi + 0x1dc]
cmp ecx, esi
jne 0x1015bfce
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x30]
xor eax, eax
inc eax
cmp edx, eax
jne 0x1015c16c
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x5c]
push esi
mov esi, ecx
push esi
mov eax, dword [eax]
mov dword [ecx + 0x1d0], eax
call fcn.10141a5b
cmp dword [esp + 0x3c], 0
pop ecx
pop ecx
jne 0x1015a434
dec dword [esi + 0x1dc]
mov edx, dword [esp + 0x30]
jmp 0x1015c1ae
mov byte [eax + 0x57], cl
jmp 0x1015bfb4
xor eax, eax
mov dword [esp + 0x34], eax
mov eax, dword [ecx + 0x1dc]
sub eax, dword [esp + 0x2c]
dec eax
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 0x14]
cmp edx, 2
jne 0x1015c0d9
mov ecx, dword [ecx + 0x18]
and dword [esp + 0x20], 0
and ecx, 1
mov dword [esp + 0x3c], ecx
test eax, eax
jle 0x1015c0df
xor eax, eax
mov edx, ecx
inc eax
xor edx, eax
xor eax, eax
mov dword [esp + 0x50], edx
mov ecx, eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x10]
push edx
push 0x204
mov eax, dword [eax + 0x10]
push dword [ecx + eax + 4]
call fcn.1013f325
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x20]
push 0x10
pop eax
add ecx, eax
inc edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], edx
mov dword [esp + 0x48], ecx
mov eax, dword [eax + 0x14]
cmp edx, eax
mov edx, dword [esp + 0x50]
jl 0x1015c083
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x30]
jmp 0x1015c0df
xor ecx, ecx
mov dword [esp + 0x3c], ecx
and dword [esp + 0x20], 0
test eax, eax
jle 0x1015c13d
xor eax, eax
mov ecx, eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x10]
push dword [esp + 0x2c]
push edx
mov eax, dword [eax + 0x10]
push dword [ecx + eax + 4]
call fcn.1021b520
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x20]
push 0x10
pop edx
add ecx, edx
inc eax
mov edx, dword [esp + 0x10]
mov dword [esp + 0x20], eax
mov dword [esp + 0x48], ecx
cmp eax, dword [edx + 0x14]
mov edx, dword [esp + 0x30]
jl 0x1015c0f0
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1015bfb4
xor eax, eax
push eax
push dword [esp + 0x14]
call fcn.101435b3
push dword [esp + 0x18]
call fcn.10152aff
mov eax, dword [esp + 0x1c]
xor ecx, ecx
inc ecx
add esp, 0xc
or dword [eax + 0x18], ecx
jmp 0x1015bfb8
cmp dword [esp + 0x34], 0
mov edi, dword [esp + 0x10]
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov dword [edi + 0x1e8], eax
mov eax, edi
mov dword [eax + 0x1ec], ecx
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov esi, edi
mov edi, dword [esp + 0x68]
mov dword [esi + 0x1f0], eax
mov dword [esi + 0x1f4], ecx
je 0x1015c1ae
push 2
pop eax
cmp edx, eax
jne 0x1015a434
push dword [esp + 0x2c]
push edx
push esi
call fcn.10163303
add esp, 0xc
mov ebx, eax
mov dword [esp + 0x18], ebx
jmp 0x1015ad5d
mov edx, dword [esp + 0x10]
xor ecx, ecx
mov esi, ecx
mov dword [esp + 0x3c], esi
cmp dword [ebp + 8], ecx
je 0x1015c1e8
mov eax, dword [edx + 0x20]
and eax, 0x100000
or eax, ecx
jne 0x1015f01e
mov ecx, dword [ebp + 4]
mov eax, dword [edx + 0x10]
add ecx, ecx
mov eax, dword [eax + ecx*8 + 4]
mov dword [esp + 0x20], eax
test eax, eax
je 0x1015c2d9
lea ecx, [esp + 0x3c]
push ecx
push dword [ebp + 8]
push eax
call fcn.1013cfad
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f02a
test byte [edi + 0x98], 0x40
mov edx, dword [esp + 0x10]
je 0x1015c2d5
cmp dword [ebp + 8], eax
je 0x1015c2d5
cmp byte [edx + 0x4f], al
je 0x1015c24b
inc eax
cmp dword [edx + 0xb4], eax
jle 0x1015c2d5
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x1015c267
mov eax, dword [edx + 0x1dc]
inc dword [edx + 0x1e0]
add eax, dword [edx + 0x1e0]
mov dword [edi + 0x30], eax
dec eax
push eax
xor eax, eax
push eax
push edx
call fcn.10163303
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015c2ad
mov eax, dword [esp + 0x20]
mov esi, dword [edi + 0x30]
push eax
mov edi, dword [eax + 4]
call fcn.1013d9c5
push esi
push dword [edi]
call fcn.1014e887
push dword [esp + 0x2c]
mov ebx, eax
mov dword [esp + 0x28], ebx
call fcn.1013e34e
mov edi, dword [esp + 0x78]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x1e8]
mov ecx, dword [edx + 0x1ec]
mov dword [edi + 0x48], eax
mov dword [edi + 0x4c], ecx
mov eax, dword [edx + 0x1f0]
mov ecx, dword [edx + 0x1f4]
mov dword [edi + 0x50], eax
mov dword [edi + 0x54], ecx
mov esi, dword [esp + 0x3c]
xor eax, eax
cmp word [ebp + 2], ax
je 0x1015ad59
cmp esi, dword [ebp + 0xc]
jne 0x1015c302
mov ecx, dword [ebp + 4]
mov eax, dword [edx + 0x10]
add ecx, ecx
mov eax, dword [eax + ecx*8 + 0xc]
mov eax, dword [eax + 4]
cmp eax, dword [ebp + 0x10]
je 0x1015ad59
cmp dword [edi + 0x7c], 0
je 0x1015c313
push dword [edi + 0x7c]
push edx
call fcn.10141a5b
pop ecx
pop ecx
mov ebx, dword [esp + 0x10]
push str.database_schema_has_changed
push ebx
call fcn.10141d69
pop ecx
mov dword [edi + 0x7c], eax
mov eax, dword [ebx + 0x10]
pop ecx
mov ecx, dword [ebp + 4]
add ecx, ecx
mov eax, dword [eax + ecx*8 + 0xc]
cmp dword [eax], esi
je 0x1015c342
push dword [ebp + 4]
push ebx
call fcn.10152b61
pop ecx
pop ecx
mov eax, dword [edi + 0x98]
xor ecx, ecx
and eax, 0xfffffffd
inc ecx
or eax, ecx
mov dword [edi + 0x98], eax
push 0x11
jmp 0x1015f05a
mov ecx, dword [ebp + 4]
lea eax, [esp + 0xfc]
push eax
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [ebp + 0xc]
push dword [eax + ecx*8 + 4]
call fcn.1013da6a
push ebp
push edi
call fcn.10131951
mov ecx, eax
add esp, 0x14
mov eax, dword [esp + 0xfc]
jmp 0x1015a2fd
mov eax, dword [esp + 0x10]
mov esi, dword [ebp + 4]
push dword [ebp + 0xc]
shl esi, 4
add esi, dword [eax + 0x10]
push dword [ebp + 8]
push dword [esi + 4]
call fcn.1013f3a3
xor edx, edx
add esp, 0xc
inc edx
mov ebx, eax
mov dword [esp + 0x18], ebx
cmp dword [ebp + 8], edx
jne 0x1015c3d4
movzx eax, word [ebp + 2]
mov ecx, dword [ebp + 0xc]
sub ecx, eax
mov eax, dword [esi + 0xc]
mov esi, dword [esp + 0x10]
mov dword [eax], ecx
or dword [esi + 0x18], edx
jmp 0x1015c3e9
push 2
pop eax
cmp dword [ebp + 8], eax
jne 0x1015c3e5
mov ecx, dword [esi + 0xc]
mov al, byte [ebp + 0xc]
mov byte [ecx + 0x4c], al
mov esi, dword [esp + 0x10]
cmp dword [ebp + 4], edx
jne 0x1015ad5d
xor eax, eax
push eax
push esi
call fcn.101435b3
and dword [edi + 0x98], 0xfffffffc
pop ecx
pop ecx
jmp 0x1015ad5d
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
test esi, esi
je 0x1015c422
mov eax, dword [esi + 0x3c]
cmp eax, dword [ebp + 8]
je 0x1015c530
mov esi, dword [esp + 0x10]
mov cl, byte [esp + 0x2b]
mov eax, dword [edi + 0x98]
xor edx, edx
and al, 3
inc edx
cmp al, dl
je 0x1015f04e
mov esi, dword [ebp + 0xc]
xor eax, eax
mov ebx, dword [esp + 0x10]
mov edx, dword [ebp + 8]
mov dword [esp + 0x50], eax
mov dword [esp + 0x3c], eax
mov eax, esi
shl eax, 4
add eax, dword [ebx + 0x10]
mov dword [esp + 0x20], edx
mov dword [esp + 0x48], esi
mov ebx, dword [eax + 4]
mov dword [esp + 0x34], ebx
cmp cl, 0x61
jne 0x1015c491
mov eax, dword [eax + 0xc]
movzx ebx, word [ebp + 2]
push 8
pop ecx
mov al, byte [eax + 0x4c]
and ebx, ecx
push 4
pop ecx
or ebx, ecx
cmp al, byte [edi + 0x93]
jae 0x1015c495
mov byte [edi + 0x93], al
jmp 0x1015c495
xor eax, eax
mov ebx, eax
push 0x10
pop eax
test byte [ebp + 2], al
je 0x1015c4b5
imul esi, edx, 0x28
add esi, dword [esp + 0x1c]
push esi
call fcn.10160b73
mov eax, dword [esi]
mov esi, dword [esp + 0x4c]
pop ecx
mov dword [esp + 0x20], eax
mov al, byte [ebp + 1]
cmp al, 0xf7
jne 0x1015c4c9
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x3c], eax
movzx eax, word [eax + 8]
jmp 0x1015c4d6
cmp al, 0xfd
jne 0x1015c4d2
mov eax, dword [ebp + 0x10]
jmp 0x1015c4d6
mov eax, dword [esp + 0x50]
xor ecx, ecx
push ecx
push esi
push eax
push dword [ebp + 4]
push edi
call fcn.1011f718
mov esi, eax
add esp, 0x14
test esi, esi
je 0x1015f103
xor eax, eax
push 4
inc eax
mov byte [esi + 2], al
pop eax
push dword [esi + 0x30]
or dword [esi + 8], eax
push dword [esp + 0x40]
mov eax, dword [esp + 0x28]
push ebx
push eax
push dword [esp + 0x44]
mov dword [esi + 0x3c], eax
call fcn.1021b520
mov ebx, eax
add esp, 0x14
mov eax, dword [esp + 0x3c]
mov dword [esi + 0x34], eax
cmp byte [ebp + 1], 0xf7
mov dword [esp + 0x18], ebx
setne al
mov byte [esi + 4], al
mov cl, byte [ebp + 2]
mov eax, dword [esi + 0x30]
and cl, 3
mov byte [eax + 3], cl
jmp 0x1015ad59
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 8]
mov ebx, dword [eax + ecx*4]
xor eax, eax
push eax
push 0xffffffffffffffff
movsx eax, word [ebx + 0x40]
push eax
push dword [ebp + 4]
push edi
call fcn.1011f718
mov esi, eax
add esp, 0x14
test esi, esi
je 0x1015f103
push dword [esi + 0x30]
xor eax, eax
inc eax
or dword [esi + 8], eax
mov byte [esi + 2], al
mov edx, dword [ebx + 0x34]
mov dword [esi + 0x34], edx
mov al, byte [ebx + 4]
mov byte [esi + 4], al
mov ecx, dword [ebx + 0x3c]
mov dword [esi + 0x3c], ecx
mov eax, dword [ebx + 8]
xor eax, dword [esi + 8]
push edx
and eax, 4
xor dword [esi + 8], eax
push 4
pop eax
push eax
push ecx
push dword [ebx + 0x10]
call fcn.1021b520
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x18], ebx
jmp 0x1015a430
mov eax, dword [ebp + 0xc]
xor ebx, ebx
test eax, eax
jle 0x1015c5d0
mov ecx, dword [esp + 0x1c]
imul eax, eax, 0x28
mov dword [eax + ecx + 0xc], ebx
imul eax, dword [ebp + 0xc], 0x28
mov dword [eax + ecx + 0x10], 0x1025e560
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
test esi, esi
je 0x1015c606
cmp dword [esi + 0x10], 0
je 0x1015c606
push ebx
push dword [esi + 0x3c]
mov dword [esi + 0x18], ebx
push dword [esi + 0x10]
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x24], ebx
call fcn.1013d207
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
jmp 0x1015c702
push ebx
push 0xffffffffffffffff
push dword [ebp + 8]
push ecx
push edi
call fcn.1011f718
mov esi, eax
add esp, 0x14
test esi, esi
je 0x1015f103
xor eax, eax
inc eax
or dword [esi + 8], eax
lea eax, [esi + 0x10]
movzx ecx, word [ebp + 2]
push 0x41e
or ecx, 5
push ecx
push eax
mov eax, dword [esp + 0x1c]
push eax
push ebx
push dword [eax]
call fcn.1013e82e
mov ebx, eax
add esp, 0x18
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015c6e8
push eax
inc eax
push eax
push dword [esi + 0x10]
call fcn.1013cfad
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015c6e8
mov eax, dword [ebp + 0x10]
lea ecx, [esi + 0x3c]
mov dword [esp + 0x20], eax
mov dword [esi + 0x34], eax
test eax, eax
je 0x1015c6c1
movzx eax, word [ebp + 2]
push 2
pop edx
or eax, edx
push eax
push ecx
push dword [esi + 0x10]
call fcn.1021b520
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015c6bd
push dword [esi + 0x30]
push dword [esp + 0x24]
push 4
pop eax
push eax
push dword [esi + 0x3c]
push dword [esi + 0x10]
call fcn.1021b520
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x18], ebx
xor eax, eax
jmp 0x1015c6e5
push dword [esi + 0x30]
xor eax, eax
xor edx, edx
push eax
push 4
pop eax
inc edx
push eax
push edx
push dword [esi + 0x10]
mov dword [ecx], edx
call fcn.1021b520
mov ebx, eax
add esp, 0x14
xor eax, eax
mov dword [esp + 0x18], ebx
inc eax
mov byte [esi + 4], al
push 8
pop eax
xor ecx, ecx
cmp word [ebp + 2], ax
push 4
pop eax
cmovne ecx, eax
mov eax, dword [esi + 8]
and eax, 0xfffffffb
or ecx, eax
mov dword [esi + 8], ecx
test ebx, ebx
jne 0x1015f341
xor eax, eax
inc eax
mov byte [esi + 2], al
jmp 0x1015a430
xor eax, eax
inc eax
push eax
push 0xffffffffffffffff
push dword [ebp + 8]
push dword [ebp + 4]
push edi
call fcn.1011f718
add esp, 0x14
test eax, eax
je 0x1015f107
mov ecx, dword [ebp + 0x10]
push eax
mov dword [eax + 0x34], ecx
push dword [ebp + 0xc]
push esi
call fcn.10162176
jmp 0x1015c1b9
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 4]
mov edx, dword [eax + ecx*4]
xor eax, eax
inc eax
mov edi, dword [edx + 0x18]
mov ecx, edi
mov esi, dword [edx + 0x1c]
add ecx, eax
mov eax, esi
mov dword [edx + 0x18], ecx
adc eax, 0
or edi, esi
mov dword [edx + 0x1c], eax
je 0x1015ef08
jmp 0x1015a430
push 3
push 0xffffffffffffffff
push dword [ebp + 0xc]
push dword [ebp + 4]
push edi
call fcn.1011f718
add esp, 0x14
test eax, eax
je 0x1015f107
xor edx, edx
inc edx
mov byte [eax + 2], dl
mov ecx, dword [ebp + 8]
mov dword [eax + 0x28], ecx
mov byte [eax + 4], dl
mov dword [eax + 0x30], 0x1031eed3
jmp 0x1015a434
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
push dword [eax + ecx*4]
push edi
call fcn.1015fbfa
mov eax, dword [edi + 0x60]
xor edx, edx
pop ecx
pop ecx
mov ecx, dword [ebp + 4]
mov dword [eax + ecx*4], edx
jmp 0x1015a434
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
push 2
mov esi, dword [eax + ecx*4]
xor ecx, ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x60], ecx
mov word [esi + 2], cx
mov dword [esi + 0x24], ecx
cmp byte [esi + 4], cl
je 0x1015c8f7
imul esi, dword [ebp + 0xc], 0x28
pop edx
add esi, dword [esp + 0x1c]
movzx eax, word [esi + 8]
mov dword [esp + 0x48], eax
and al, 0x2e
cmp al, dl
jne 0x1015c811
push ecx
push esi
call fcn.1021b520
pop ecx
pop ecx
push esi
call fcn.1016012f
pop ecx
movzx ecx, word [esi + 8]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x34], edx
mov word [esi + 8], ax
test cl, 0x24
jne 0x1015c8b5
test cl, 8
jne 0x1015c876
xor eax, eax
inc eax
test al, cl
jne 0x1015ef08
cmp dword [esp + 0x30], 0x18
jae 0x1015ef08
lea eax, [esp + 0x78]
push eax
mov eax, dword [esp + 0x24]
push dword [eax + 0x30]
call fcn.1013e2f5
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f341
jmp 0x1015ca3f
mov ebx, dword [esp + 0x3c]
mov ecx, ebx
mov edx, dword [esp + 0x34]
call fcn.10236670
movsd xmm1, qword [esi]
comisd xmm0, xmm1
jbe 0x1015c8a1
mov eax, dword [esp + 0x30]
xor ecx, ecx
inc ecx
test cl, al
je 0x1015c8b9
dec eax
mov dword [esp + 0x30], eax
jmp 0x1015c8b9
comisd xmm1, xmm0
jbe 0x1015c8b9
mov eax, dword [esp + 0x30]
xor ecx, ecx
inc ecx
test cl, al
jne 0x1015c8b9
inc eax
jmp 0x1015c89b
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x20]
lea eax, [esp + 0x78]
push eax
xor eax, eax
push eax
push dword [esp + 0x3c]
push ebx
push eax
push dword [esi + 0x30]
call fcn.1013e3c9
mov ebx, eax
add esp, 0x18
mov eax, dword [esp + 0x3c]
mov dword [esi + 0x48], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], ebx
mov dword [esi + 0x4c], eax
test ebx, ebx
jne 0x1015f341
jmp 0x1015c994
mov eax, dword [esi + 0x30]
pop ebx
push 0
mov al, byte [eax + 3]
and al, bl
mov byte [esp + 0x2f], al
pop eax
setne al
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 0x34]
mov dword [esp + 0x104], eax
mov ax, word [ebp + 0x10]
mov word [esp + 0x10c], ax
mov eax, edx
xor edx, edx
mov byte [esp + 0x112], cl
inc edx
and al, dl
neg al
sbb al, al
and al, 0xfe
inc al
mov byte [esp + 0x10e], al
imul eax, dword [ebp + 0xc], 0x28
add eax, dword [esp + 0x1c]
mov dword [esp + 0x108], eax
lea eax, [esp + 0x78]
push eax
push ecx
push ecx
push ecx
lea eax, [esp + 0x114]
push eax
push dword [esi + 0x30]
call fcn.1013e3c9
mov ebx, eax
add esp, 0x18
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
cmp byte [esp + 0x2b], al
je 0x1015c994
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x5c], eax
cmp byte [esp + 0x112], bl
je 0x1015ca3f
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x78]
cmp eax, 0x18
jl 0x1015c9f0
test ecx, ecx
js 0x1015c9b7
jne 0x1015c9ac
cmp eax, 0x19
je 0x1015c9b7
xor eax, eax
mov dword [esp + 0x78], eax
jmp 0x1015ca4a
xor eax, eax
push eax
push dword [esi + 0x30]
mov dword [esp + 0x80], eax
call fcn.1013e7e0
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
je 0x1015ca4a
cmp ebx, 0x65
jne 0x1015f341
xor eax, eax
mov ebx, eax
inc eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x78], eax
jmp 0x1015ef08
test ecx, ecx
jg 0x1015ca0b
jne 0x1015c9fb
cmp eax, 0x16
je 0x1015ca0b
mov eax, dword [esi + 0x30]
xor ecx, ecx
cmp byte [eax], cl
setne cl
mov dword [esp + 0x78], ecx
jmp 0x1015ca3f
xor eax, eax
push eax
push dword [esi + 0x30]
mov dword [esp + 0x80], eax
call fcn.1013ee60
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
je 0x1015ca4a
cmp ebx, 0x65
jne 0x1015f341
xor eax, eax
mov ebx, eax
inc eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x78], eax
cmp dword [esp + 0x78], 0
jne 0x1015ef08
cmp dword [esp + 0x5c], 0
mov esi, dword [esp + 0x10]
je 0x1015a434
push 0x14
pop eax
add ebp, eax
jmp 0x1015a434
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 0x18]
mov esi, dword [eax + ecx*4]
mov eax, dword [esi + 0x30]
cmp byte [eax], 0
jne 0x1015a430
mov eax, dword [ebp + 4]
xor ecx, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x34]
mov dword [esp + 0x124], eax
mov ax, word [ebp + 0x24]
mov word [esp + 0x12c], ax
imul eax, dword [ebp + 0x20], 0x28
mov byte [esp + 0x12e], cl
mov dword [esp + 0x20], ecx
add eax, dword [esp + 0x1c]
mov dword [esp + 0x128], eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x128]
push eax
push esi
push dword [esp + 0x1c]
call fcn.1021b520
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x20]
test eax, eax
jg 0x1015cb1c
je 0x1015ef08
mov eax, dword [esp + 0x48]
test eax, eax
jle 0x1015a430
dec eax
mov dword [esp + 0x48], eax
xor eax, eax
push eax
push dword [esi + 0x30]
call fcn.1013e7e0
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
je 0x1015cab1
cmp ebx, 0x65
jne 0x1015f341
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], ebx
push 0x14
pop eax
add ebp, eax
jmp 0x1015ef08
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 4]
mov ecx, dword [eax + ecx*4]
movzx eax, word [ecx + 0xc]
cmp eax, dword [ebp + 8]
jge 0x1015cb45
mov ax, word [ebp + 8]
mov word [ecx + 0xc], ax
jmp 0x1015a434
cmp eax, dword [ebp + 0xc]
jle 0x1015a434
mov ax, word [ebp + 0xc]
jmp 0x1015cb3c
mov ecx, dword [ebp + 4]
xor edx, edx
mov eax, dword [edi + 0x60]
cmp dword [eax + ecx*4], edx
je case.0x1015a19b.11
jmp 0x1015a434
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
movzx eax, word [eax + 0xc]
cmp eax, dword [ebp + 0x10]
jge 0x1015a434
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
imul esi, dword [ebp + 0xc], 0x28
mov ebx, dword [eax + ecx*4]
xor ecx, ecx
mov dword [esp + 0x20], ebx
add esi, dword [esp + 0x1c]
cmp dword [ebp + 0x10], ecx
jle 0x1015cbca
mov eax, dword [ebx + 0x34]
lea ebx, [esp + 0x15c]
mov dword [esp + 0x15c], eax
mov ax, word [ebp + 0x10]
mov dword [esp + 0x160], esi
mov esi, dword [esp + 0x20]
mov word [esp + 0x164], ax
mov dword [esp + 0x48], ecx
jmp 0x1015cc13
mov eax, 0x4000
test word [esi + 8], ax
je 0x1015cbe4
push esi
call fcn.1016086e
pop ecx
test eax, eax
jne 0x1015f103
push dword [ebx + 0x34]
call fcn.101598e9
mov ebx, eax
mov dword [esp + 0x4c], ebx
pop ecx
test ebx, ebx
je 0x1015f103
push ebx
push dword [esi + 0x10]
push dword [esi + 0xc]
mov esi, dword [esp + 0x2c]
push dword [esi + 0x34]
call fcn.10161bdb
add esp, 0x10
xor ecx, ecx
mov byte [ebx + 0xa], cl
cmp byte [ebp], 0x1c
mov dword [esp + 0x20], ecx
jne 0x1015cc46
movzx edx, word [ebx + 8]
test edx, edx
je 0x1015cc44
mov eax, dword [ebx + 4]
add eax, 8
test byte [eax], 1
jne 0x1015cc3d
inc ecx
add eax, 0x28
cmp ecx, edx
jl 0x1015cc2e
jmp 0x1015cc44
xor eax, eax
inc eax
mov dword [esp + 0x20], eax
xor ecx, ecx
lea eax, [esp + 0xf0]
push eax
push ecx
push ecx
push ecx
push ebx
push dword [esi + 0x30]
call fcn.1013e3c9
mov ebx, eax
add esp, 0x18
mov eax, dword [esp + 0x48]
mov dword [esp + 0x18], ebx
test eax, eax
je 0x1015cc77
push eax
push dword [esp + 0x14]
call fcn.10141a5b
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0xf0]
xor ecx, ecx
test eax, eax
mov dword [esi + 0x28], eax
sete cl
test eax, eax
setne al
xor edx, edx
mov byte [esi + 2], al
mov byte [esi + 3], dl
mov dword [esi + 0x24], edx
mov al, byte [ebp]
cmp al, 0x1e
jne 0x1015ccae
test ecx, ecx
jmp 0x1015ae0d
cmp dword [esp + 0x20], edx
jne 0x1015ef08
test ecx, ecx
je 0x1015ef08
cmp al, 0x1b
jne 0x1015a430
mov ax, word [ebp + 0x10]
mov word [esi + 0xc], ax
jmp 0x1015a430
imul esi, dword [ebp + 0xc], 0x28
mov ecx, dword [esp + 0x1c]
add esi, ecx
test byte [esi + 8], 0x24
jne 0x1015cd2f
push 0xa
pop ecx
push dword [esp + 0x58]
lea eax, [esp + 0x198]
lea edi, [esp + 0x198]
push 0x43
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.1012067a
add esp, 0xc
push 4
pop eax
test byte [esp + 0x19c], al
je 0x1015ef08
mov edx, dword [esp + 0x194]
mov ebx, dword [esp + 0x198]
mov edi, dword [esp + 0x68]
jmp 0x1015cd3a
mov ecx, dword [esp + 0x1c]
imul eax, dword [ebp + 0xc], 0x28
mov edx, dword [eax + ecx]
mov ebx, dword [eax + ecx + 4]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x20], edx
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
xor ecx, ecx
lea eax, [esp + 0x50]
mov dword [esp + 0x50], ecx
push eax
push ecx
push ebx
push edx
push ecx
push dword [esi + 0x30]
call fcn.1013e3c9
mov ebx, eax
xor ecx, ecx
mov eax, dword [esp + 0x38]
add esp, 0x18
mov dword [esi + 0x48], eax
mov eax, dword [esp + 0x48]
mov dword [esi + 0x4c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x18], ebx
mov word [esi + 2], cx
mov dword [esi + 0x24], ecx
mov dword [esi + 0x28], eax
test eax, eax
je 0x1015ad59
cmp dword [ebp + 8], ecx
jne 0x1015ef08
push 0x1614a
call fcn.10140678
pop ecx
jmp 0x1015ad53
push ebp
push edi
call fcn.10131951
mov edx, dword [ebp + 4]
pop ecx
pop ecx
mov ecx, dword [edi + 0x60]
push 0
mov ecx, dword [ecx + edx*4]
mov edx, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x1c]
mov dword [eax + 4], ecx
mov dword [eax], edx
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
inc ecx
add dword [eax + 0x18], ecx
pop ecx
adc dword [eax + 0x1c], ecx
jmp 0x1015a434
xorps xmm0, xmm0
xor eax, eax
push ebp
push edi
movlpd qword [esp + 0x58], xmm0
mov dword [esp + 0x64], eax
call fcn.10131951
mov edx, dword [ebp + 4]
pop ecx
pop ecx
mov ecx, dword [edi + 0x60]
push 2
mov dword [esp + 0x4c], eax
pop eax
mov ecx, dword [ecx + edx*4]
mov dword [esp + 0x2c], ecx
test byte [ecx + 8], al
jne 0x1015ce8b
lea eax, [esp + 0x5c]
push eax
push dword [ecx + 0x30]
call fcn.1013e2f5
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f345
cmp dword [esp + 0x5c], eax
je 0x1015ce44
inc eax
xor ecx, ecx
mov esi, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], esi
jmp 0x1015ce93
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x30]
push esi
call fcn.1012d251
mov eax, dword [esi + 0x20]
mov esi, dword [esi + 0x24]
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], esi
pop ecx
cmp esi, 0x7fffffff
jl 0x1015ce7f
jg 0x1015ce73
cmp eax, 0xffffffff
jb 0x1015ce7f
mov ecx, dword [esp + 0x2c]
push 2
pop edx
or dword [ecx + 8], edx
jmp 0x1015ce97
xor ecx, ecx
inc ecx
add eax, ecx
push 0
pop ecx
adc esi, ecx
jmp 0x1015ce3a
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x30], eax
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x1015cf2b
mov ecx, dword [edi + 0xc8]
test ecx, ecx
jne 0x1015cf13
imul eax, edx, 0x28
add eax, dword [esp + 0x1c]
push eax
mov dword [esp + 0x24], eax
call fcn.10160b73
pop ecx
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
cmp edx, 0xffffffff
jne 0x1015ced7
cmp eax, 0x7fffffff
je 0x1015f058
mov edi, dword [esp + 0x2c]
test byte [edi + 8], 2
mov edi, dword [esp + 0x68]
jne 0x1015f058
add edx, 1
adc eax, 0
mov dword [esp + 0x20], eax
cmp esi, eax
jg 0x1015cf22
jl 0x1015cf01
mov eax, dword [esp + 0x30]
cmp eax, edx
jae 0x1015cf26
mov esi, dword [esp + 0x20]
mov eax, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], esi
jmp 0x1015cf26
mov ecx, eax
mov eax, dword [ecx + 4]
test eax, eax
jne 0x1015cf11
imul eax, edx, 0x28
add eax, dword [ecx + 0x10]
jmp 0x1015ceb3
mov eax, dword [esp + 0x30]
mov dword [ecx], eax
mov dword [ecx + 4], esi
mov ecx, dword [esp + 0x2c]
push 2
pop edx
test byte [ecx + 8], dl
je 0x1015cfb4
xor ebx, ebx
mov dword [esp + 0x20], ebx
lea eax, [esp + 0x50]
push eax
push 8
pop eax
push eax
call fcn.10117830
mov esi, dword [esp + 0x5c]
xor ecx, ecx
mov eax, dword [esp + 0x58]
inc ecx
and esi, 0x3fffffff
add eax, ecx
lea ecx, [esp + 0x64]
mov dword [esp + 0x38], eax
push ecx
push ebx
adc esi, ebx
mov dword [esp + 0x60], eax
push esi
push eax
mov eax, dword [esp + 0x44]
push ebx
mov dword [esp + 0x70], esi
push dword [eax + 0x30]
call fcn.1013e3c9
mov ebx, eax
add esp, 0x20
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
cmp dword [esp + 0x5c], eax
jne 0x1015cfac
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, 0x64
jge 0x1015f058
jmp 0x1015cf3d
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
xor edx, edx
mov byte [ecx + 3], dl
mov dword [ecx + 0x24], edx
mov ecx, dword [esp + 0x48]
mov dword [ecx], eax
mov dword [ecx + 4], esi
jmp 0x1015a430
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
imul esi, dword [ebp + 8], 0x28
mov edx, dword [esp + 0x1c]
mov ebx, dword [eax + ecx*4]
imul eax, dword [ebp + 0xc], 0x28
add esi, edx
mov dword [esp + 0x34], ebx
cmp byte [ebp + 1], 0xfa
mov ecx, dword [eax + edx]
mov eax, dword [eax + edx + 4]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xbc], eax
jne 0x1015d02b
mov eax, dword [esp + 0x10]
xor ecx, ecx
cmp dword [eax + 0xf0], ecx
je 0x1015d02b
movsx ecx, byte [ebx + 1]
mov eax, dword [eax + 0x10]
add ecx, ecx
mov eax, dword [eax + ecx*8]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x20], ecx
jmp 0x1015d031
xor eax, eax
mov dword [esp + 0x20], eax
xor ecx, ecx
mov dword [esp + 0x48], eax
movzx eax, word [ebp + 2]
inc ecx
mov edx, eax
test cl, al
je 0x1015d049
inc dword [edi + 0x2c]
movzx edx, word [ebp + 2]
movzx ecx, dx
test dl, 0x20
je 0x1015d067
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x50]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x3c]
mov dword [ecx + 0x2c], eax
movzx ecx, word [ebp + 2]
mov eax, dword [esi + 0x10]
mov dword [esp + 0xc0], eax
mov eax, dword [esi + 0xc]
push 0x10
mov dword [esp + 0xd0], eax
pop eax
test al, cl
je 0x1015d087
mov edx, dword [ebx + 0x28]
jmp 0x1015d08b
xor eax, eax
mov edx, eax
mov eax, 0x4000
test word [esi + 8], ax
push 0
pop eax
je 0x1015d0a6
mov eax, dword [esi]
mov dword [esp + 0xd0], eax
xor eax, eax
jmp 0x1015d0ad
mov dword [esp + 0xd0], eax
push edx
mov dword [esp + 0xb4], eax
and ecx, 0xa
push ecx
lea eax, [esp + 0xb8]
push eax
push dword [ebx + 0x30]
call fcn.1013dba9
mov ebx, eax
xor ecx, ecx
mov eax, dword [esp + 0x44]
add esp, 0x10
mov dword [esp + 0x18], ebx
mov byte [eax + 3], cl
mov dword [eax + 0x24], ecx
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
test eax, eax
je 0x1015a434
push dword [esp + 0xbc]
push dword [esp + 0xbc]
push dword [eax]
push dword [esp + 0x54]
push 4
pop eax
test byte [ebp + 2], al
push 0x12
pop eax
push 0x17
pop ecx
cmovne eax, ecx
push eax
push dword [esi + 0xec]
call dword [esi + 0xf0]
add esp, 0x18
jmp 0x1015a434
cmp byte [ebp + 1], 0xfa
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 4]
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
mov dword [esp + 0x50], esi
jne 0x1015d197
mov eax, dword [esp + 0x10]
xor ecx, ecx
cmp dword [eax + 0xf0], ecx
je 0x1015d197
movsx ecx, byte [esi + 1]
mov eax, dword [eax + 0x10]
add ecx, ecx
push 2
mov eax, dword [eax + ecx*8]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x24], eax
pop eax
test byte [ebp + 2], al
je 0x1015d1a1
cmp byte [esi + 4], 0
je 0x1015d1a1
mov esi, dword [esi + 0x30]
push esi
call fcn.1012d251
mov eax, dword [esi + 0x20]
pop ecx
mov ecx, dword [esi + 0x24]
mov esi, dword [esp + 0x50]
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], ecx
jmp 0x1015d1a1
xor eax, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x20], eax
movzx eax, byte [ebp + 2]
push eax
push dword [esi + 0x30]
call fcn.1013d6a8
pop ecx
pop ecx
mov ebx, eax
xor ecx, ecx
mov dword [esp + 0x18], ebx
mov dword [esi + 0x24], ecx
mov dword [esi + 0x28], ecx
test ebx, ebx
jne 0x1015f341
inc eax
test byte [esp + 0x3c], al
je 0x1015a430
mov eax, dword [esp + 0x10]
inc dword [edi + 0x2c]
mov eax, dword [eax + 0xf0]
test eax, eax
je 0x1015a430
mov ecx, dword [esp + 0x20]
mov edx, 0x80
test byte [ecx + 0x24], dl
jne 0x1015a430
push dword [esi + 0x4c]
push dword [esi + 0x48]
mov esi, dword [esp + 0x18]
push dword [ecx]
push dword [esp + 0x54]
push 9
push dword [esi + 0xec]
call eax
jmp 0x1015d126
mov eax, dword [edi + 0x2c]
add dword [esi + 0x68], eax
mov dword [esi + 0x64], eax
xor eax, eax
mov dword [edi + 0x2c], eax
jmp 0x1015a434
mov eax, dword [edi + 0x60]
xor edx, edx
mov ecx, dword [ebp + 4]
mov dword [esp + 0x20], edx
lea edx, [esp + 0x20]
push edx
push dword [ebp + 0x10]
mov ecx, dword [eax + ecx*4]
imul eax, dword [ebp + 0xc], 0x28
add eax, dword [esp + 0x24]
push eax
push ecx
call fcn.101620e8
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f345
cmp dword [esp + 0x20], eax
jmp 0x1015a203
imul edx, dword [ebp + 8], 0x28
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
add edx, dword [esp + 0x1c]
push edx
push dword [eax + ecx*4]
call fcn.1021b520
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f345
mov ecx, dword [ebp + 0xc]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
mov dword [eax + 0x24], ecx
jmp 0x1015a434
push ebp
push edi
call fcn.10131951
mov edx, dword [ebp + 4]
mov ebx, eax
mov ecx, dword [edi + 0x60]
mov dword [esp + 0x28], ebx
mov ecx, dword [ecx + edx*4]
mov esi, dword [ecx + 0x30]
push esi
call fcn.1012d251
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esi + 0x2c]
cmp eax, dword [ecx + 0x6c]
ja 0x1015f150
push ebx
push eax
push esi
lfence
call fcn.1021b520
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
cmp dword [ebp + 0xc], eax
jne 0x1015a430
mov eax, dword [esp + 0x20]
mov ecx, 0x1000
test word [eax + 8], cx
je 0x1015a430
push eax
call fcn.10160b9c
mov esi, dword [esp + 0x14]
pop ecx
test eax, eax
jne 0x1015f107
jmp 0x1015a434
push ebp
push edi
call fcn.10131951
mov edx, dword [ebp + 4]
pop ecx
pop ecx
mov ecx, dword [edi + 0x60]
mov dword [esp + 0x20], eax
mov esi, dword [ecx + edx*4]
cmp byte [esi + 2], 0
je 0x1015d34e
xor ecx, ecx
inc ecx
mov word [eax + 8], cx
jmp 0x1015a430
cmp byte [esi + 3], 0
je 0x1015d35f
mov eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x4c]
jmp 0x1015d3ee
push 2
pop eax
cmp byte [esi], al
jne 0x1015d3a1
mov ecx, dword [esi + 0x30]
lea edx, [esp + 0x98]
push edx
push ecx
mov esi, dword [ecx]
mov eax, dword [esi]
call dword [eax + 0x30]
mov ebx, eax
push esi
push edi
mov dword [esp + 0x28], ebx
call fcn.10163153
add esp, 0x10
test ebx, ebx
jne 0x1015f341
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x98]
jmp 0x1015d3fc
mov eax, dword [esi + 0x30]
cmp byte [eax], 0
je 0x1015d3c0
push esi
call fcn.1012d978
mov ebx, eax
mov dword [esp + 0x1c], ebx
pop ecx
test ebx, ebx
jne 0x1015f341
jmp 0x1015d3c8
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], ebx
cmp byte [esi + 2], 0
je 0x1015d3de
mov edx, dword [esp + 0x20]
xor eax, eax
inc eax
mov word [edx + 8], ax
jmp 0x1015a430
mov esi, dword [esi + 0x30]
push esi
call fcn.1012d251
mov eax, dword [esi + 0x20]
pop ecx
mov ecx, dword [esi + 0x24]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x98], eax
mov edx, dword [esp + 0x20]
mov dword [edx], eax
mov dword [edx + 4], ecx
jmp 0x1015a430
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
inc ecx
mov byte [eax + 2], cl
xor ecx, ecx
mov dword [eax + 0x24], ecx
cmp byte [eax], cl
jne 0x1015a434
push dword [eax + 0x30]
call fcn.1013d1f0
jmp 0x1015ad17
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
xor ecx, ecx
cmp byte [esp + 0x2b], 0x82
mov dword [esp + 0x20], ecx
mov eax, dword [esi + 0x30]
jne 0x1015d458
or dword [esi + 0x28], 0xffffffff
cmp byte [eax], cl
je 0x1015a430
lea ecx, [esp + 0x20]
push ecx
push eax
call fcn.1013e2f5
pop ecx
mov ebx, eax
mov eax, dword [esp + 0x24]
pop ecx
xor ecx, ecx
mov dword [esp + 0x18], ebx
mov byte [esi + 2], al
mov byte [esi + 3], cl
mov dword [esi + 0x24], ecx
test ebx, ebx
jne 0x1015f341
cmp dword [ebp + 8], ecx
jle 0x1015a430
test eax, eax
jmp 0x1015ae0d
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
mov esi, dword [eax + 0x30]
lea eax, [esp + 0xe4]
push eax
push esi
call fcn.1013d9f2
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f341
cmp dword [esp + 0xe4], eax
jne 0x1015ef08
push esi
call fcn.1013ef96
pop ecx
xor ecx, ecx
cmp edx, ecx
jl 0x1015a430
jg 0x1015d4e4
cmp eax, ecx
jb 0x1015a430
push edx
push eax
call fcn.1014cd7a
cwde
pop ecx
pop ecx
cmp eax, dword [ebp + 0xc]
jge 0x1015a430
xor eax, eax
inc eax
mov dword [esp + 0xe4], eax
jmp 0x1015ef08
inc dword [edi + 0xac]
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 4]
mov esi, dword [eax + ecx*4]
xor eax, eax
inc eax
mov dword [esp + 0x3c], eax
cmp byte [esi], al
lea eax, [esp + 0x3c]
push eax
jne 0x1015d52f
push esi
call fcn.101624a6
pop ecx
pop ecx
jmp 0x1015d541
push dword [esi + 0x30]
call fcn.1013d9f2
pop ecx
pop ecx
xor ecx, ecx
mov byte [esi + 3], cl
mov dword [esi + 0x24], ecx
mov ebx, eax
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x3c]
mov byte [esi + 2], al
jmp 0x1015d48b
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
push esi
push dword [esp + 0x14]
call fcn.1021b520
jmp 0x1015d582
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
push dword [ebp + 0xc]
mov esi, dword [eax + ecx*4]
push dword [esi + 0x30]
call dword [ebp + 0x10]
mov ebx, eax
pop ecx
mov dword [esp + 0x1c], ebx
pop ecx
xor ecx, ecx
mov dword [esi + 0x24], ecx
test ebx, ebx
jne 0x1015d5aa
mov byte [esi + 2], cl
movzx eax, word [ebp + 2]
mov esi, dword [esp + 0x10]
inc dword [edi + eax*4 + 0xa4]
jmp 0x1015eac8
cmp ebx, 0x65
jne 0x1015f341
xor eax, eax
mov ebx, ecx
inc eax
mov dword [esp + 0x18], ebx
mov byte [esi + 2], al
jmp 0x1015bd95
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 4]
imul esi, dword [ebp + 8], 0x28
mov ebx, dword [eax + ecx*4]
xor eax, eax
inc eax
mov dword [esp + 0x20], ebx
add esi, dword [esp + 0x1c]
test byte [ebp + 2], al
je 0x1015d5e4
inc dword [edi + 0x2c]
mov eax, 0x4000
test word [esi + 8], ax
je 0x1015d604
push esi
call fcn.1016086e
mov ebx, eax
pop ecx
test ebx, ebx
jne 0x1015f341
mov ebx, dword [esp + 0x20]
mov eax, dword [esi + 0xc]
cdq
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], edx
mov eax, dword [esi + 0x10]
mov dword [esp + 0xb0], eax
imul eax, dword [ebp + 0xc], 0x28
push 0x10
pop ecx
add eax, dword [esp + 0x1c]
mov dword [esp + 0xc4], eax
mov ax, word [ebp + 0x10]
mov word [esp + 0xc8], ax
movzx eax, word [ebp + 2]
test cl, al
je 0x1015d64b
mov ecx, dword [ebx + 0x28]
jmp 0x1015d64d
xor ecx, ecx
push ecx
and eax, 0xa
push eax
lea eax, [esp + 0xb8]
push eax
push dword [ebx + 0x30]
call fcn.1013dba9
mov ebx, eax
add esp, 0x10
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov dword [eax + 0x24], ecx
jmp 0x1015ad55
imul esi, dword [ebp + 8], 0x28
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
add esi, dword [esp + 0x1c]
mov eax, dword [eax + ecx*4]
mov ecx, 0x4000
mov dword [esp + 0x20], eax
test word [esi + 8], cx
je 0x1015d6aa
push esi
call fcn.1016086e
mov ebx, eax
pop ecx
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x20]
push esi
push eax
call fcn.10162564
pop ecx
jmp 0x1015cda4
mov ecx, dword [ebp + 4]
xor edx, edx
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
mov ecx, dword [esi + 0x30]
mov eax, dword [esi + 0x34]
mov dword [esp + 0x134], eax
mov ax, word [ebp + 0xc]
mov word [esp + 0x13c], ax
imul eax, dword [ebp + 8], 0x28
mov dword [esp + 0x20], ecx
mov byte [esp + 0x13e], dl
add eax, dword [esp + 0x1c]
mov dword [esp + 0x138], eax
lea eax, [esp + 0xf4]
push eax
push edx
push edx
push edx
lea eax, [esp + 0x144]
push eax
push ecx
call fcn.1013e3c9
mov ebx, eax
add esp, 0x18
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
cmp dword [esp + 0xf4], eax
jne 0x1015d749
push 4
pop eax
push eax
push dword [esp + 0x24]
call fcn.1013d6a8
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f341
xor ecx, ecx
jmp 0x1015d755
xor ecx, ecx
cmp word [ebp + 2], cx
jne 0x1015f060
mov dword [esi + 0x24], ecx
mov dword [esi + 0x28], ecx
jmp 0x1015a430
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 4]
mov esi, dword [eax + ecx*4]
mov eax, dword [esi + 0x30]
cmp byte [eax], 0
je 0x1015d788
push esi
call fcn.1012d978
mov ebx, eax
mov dword [esp + 0x1c], ebx
pop ecx
test ebx, ebx
jne 0x1015f341
jmp 0x1015d790
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], ebx
cmp byte [esi + 2], 0
jne 0x1015d812
lea eax, [esp + 0x20]
xorps xmm0, xmm0
push eax
push dword [esi + 0x30]
movlpd qword [esp + 0x28], xmm0
push dword [esp + 0x18]
call fcn.1016002f
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
cmp byte [ebp], 0x86
jne 0x1015d7f7
mov ecx, dword [ebp + 0xc]
mov eax, dword [edi + 0x60]
mov edx, dword [eax + ecx*4]
xor eax, eax
mov ecx, dword [esp + 0x24]
mov byte [edx + 2], al
mov eax, dword [esp + 0x20]
mov dword [edx + 0x48], eax
xor eax, eax
inc eax
mov dword [edx + 0x4c], ecx
mov byte [edx + 3], al
mov eax, dword [ebp + 0x10]
mov dword [edx + 0x20], eax
mov dword [edx + 0x2c], esi
jmp 0x1015a430
push ebp
push edi
call fcn.10131951
mov edx, dword [esp + 0x2c]
pop ecx
pop ecx
mov ecx, dword [esp + 0x20]
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp 0x1015a430
imul eax, dword [ebp + 8], 0x28
add eax, dword [esp + 0x1c]
jmp 0x1015b6a6
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
cmp byte [eax + 3], 0
je 0x1015a434
push eax
call fcn.1021b520
pop ecx
jmp 0x1015c1bc
mov eax, dword [edi + 0x60]
mov ecx, dword [ebp + 4]
cmp byte [esp + 0x2b], 0x28
mov ecx, dword [eax + ecx*4]
mov eax, dword [ecx + 0x34]
mov esi, dword [ecx + 0x30]
mov dword [esp + 0x144], eax
mov ax, word [ebp + 0x10]
mov word [esp + 0x14c], ax
sbb al, al
mov byte [esp + 0x14e], al
imul eax, dword [ebp + 0xc], 0x28
push esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x14c], eax
call fcn.1012d251
mov eax, dword [esi + 0x2c]
pop ecx
test eax, eax
je 0x1015f06a
cmp eax, 0x7fffffff
ja 0x1015f06a
xor ecx, ecx
mov word [esp + 0xb8], cx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xd0], ecx
xor ecx, ecx
mov dword [esp + 0xc8], ecx
lea ecx, [esp + 0xb0]
push ecx
push eax
push esi
call fcn.1021b520
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
push eax
lea eax, [esp + 0x148]
push eax
push dword [esp + 0xc8]
push dword [esp + 0xc8]
call fcn.101617b7
mov esi, eax
lea eax, [esp + 0xc0]
push eax
call fcn.10160d10
mov dl, byte [ebp]
lea ecx, [esi + 1]
xor eax, eax
neg esi
inc eax
add esp, 0x14
and dl, al
cmovne esi, ecx
test esi, esi
jg 0x1015ef08
jmp 0x1015a430
push ebp
push edi
call fcn.10131951
pop ecx
pop ecx
xor ecx, ecx
mov dword [esp + 0x50], eax
inc ecx
mov word [eax + 8], cx
mov ecx, dword [esi + 0xc0]
inc ecx
cmp dword [esi + 0xb4], ecx
jg 0x1015f074
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov esi, dword [ebp + 4]
mov dword [esp + 0x20], ecx
mov ecx, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10]
shl ecx, 4
mov dword [esp + 0x48], ecx
mov eax, dword [eax + 0x10]
mov edi, dword [ecx + eax + 4]
push edi
call fcn.1013d9c5
lea eax, [esp + 0x24]
push eax
push esi
push edi
call fcn.10122c45
mov ebx, eax
push edi
mov dword [esp + 0x2c], ebx
call fcn.1013e34e
mov ecx, dword [esp + 0x64]
add esp, 0x14
mov esi, dword [esp + 0x20]
push 4
pop eax
mov word [ecx + 8], ax
mov eax, esi
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
test ebx, ebx
jne 0x1015f33d
test esi, esi
je 0x1015a430
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
mov edi, dword [eax + 0x10]
mov ecx, dword [edx + edi + 0xc]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x1015d9f0
mov edx, dword [esp + 0x20]
mov ecx, dword [eax + 8]
cmp dword [ecx + 0x1c], esi
jne 0x1015d9e2
mov dword [ecx + 0x1c], edx
mov eax, dword [eax]
test eax, eax
jne 0x1015d9d7
mov edx, dword [esp + 0x48]
mov ecx, dword [edx + edi + 0xc]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x1015da10
mov ebx, dword [esp + 0x20]
mov ecx, dword [eax + 8]
cmp dword [ecx + 0x2c], esi
jne 0x1015da06
mov dword [ecx + 0x2c], ebx
mov eax, dword [eax]
test eax, eax
jne 0x1015d9fb
mov ebx, dword [esp + 0x18]
mov al, byte [esp + 0x3c]
inc al
mov byte [esp + 0x77], al
jmp 0x1015a430
xor ecx, ecx
lea eax, [esp + 0x20]
xor edx, edx
cmp dword [ebp + 0xc], edx
mov dword [esp + 0x20], edx
cmove eax, ecx
mov ecx, dword [ebp + 8]
push eax
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [ebp + 4]
push dword [eax + ecx*8 + 4]
call fcn.1013d207
mov ebx, eax
add esp, 0xc
xor eax, eax
mov dword [esp + 0x18], ebx
cmp dword [ebp + 0xc], eax
je 0x1015ad5d
mov eax, dword [esp + 0x20]
add dword [edi + 0x2c], eax
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jle 0x1015ad5d
mov esi, dword [esp + 0x1c]
imul ecx, ecx, 0x28
cdq
add dword [ecx + esi], eax
mov eax, esi
adc dword [ecx + eax + 4], edx
jmp 0x1015ad59
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
inc ecx
cmp byte [eax], cl
jne 0x1015daa1
push dword [eax + 0x30]
push esi
call fcn.101623aa
pop ecx
jmp 0x1015ad17
mov eax, dword [eax + 0x30]
xor ecx, ecx
push ecx
push dword [eax + 0x40]
push dword [eax + 8]
call fcn.1013d207
jmp 0x1015c1b9
push ebp
push edi
call fcn.10131951
mov ecx, dword [ebp + 4]
mov esi, eax
push dword [ebp + 0xc]
xor eax, eax
shl ecx, 4
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
add ecx, dword [eax + 0x10]
lea eax, [esp + 0x2c]
push eax
push dword [ecx + 4]
call fcn.1021b520
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x20]
mov dword [esi], eax
xor eax, eax
mov dword [esi + 4], eax
jmp 0x1015a430
inc byte [esi + 0x5a]
xor eax, eax
push eax
push eax
push eax
push dword [ebp + 0x10]
push esi
call fcn.10116bd0
mov ebx, eax
add esp, 0x14
dec byte [esi + 0x5a]
mov dword [esp + 0x18], ebx
jmp 0x1015ad5d
cmp dword [ebp + 0x10], 0
mov esi, dword [ebp + 4]
mov ebx, dword [esp + 0x10]
jne 0x1015db73
mov eax, dword [ebx + 0x10]
mov ecx, esi
add ecx, ecx
push dword [eax + ecx*8 + 0xc]
call fcn.10153bb0
and dword [ebx + 0x18], 0xffffffef
xor eax, eax
inc eax
push eax
lea eax, [edi + 0x7c]
push eax
push esi
mov esi, ebx
push esi
call fcn.1014ac5d
mov ebx, eax
add esp, 0x14
xor eax, eax
mov dword [esp + 0x18], ebx
inc eax
or dword [esi + 0x18], eax
and dword [edi + 0x98], 0xfffffffc
jmp 0x1015dc46
mov ecx, dword [ebx + 0x10]
lea eax, [edi + 0x7c]
push dword [ebp + 0x10]
mov dword [esp + 0xbc], esi
add esi, esi
mov dword [esp + 0xb8], eax
xor eax, eax
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xc4], eax
mov eax, dword [ecx + esi*8 + 4]
push str.sqlite_master
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov dword [esp + 0xd0], eax
push dword [ecx + esi*8]
push str.SELECTFROM__w_._s_WHERE__s_ORDER_BY_rowid
push ebx
call fcn.1014ced5
mov esi, eax
add esp, 0x14
test esi, esi
je 0x1015f085
xor eax, eax
inc eax
mov byte [ebx + 0xa5], al
xor eax, eax
push eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc8], eax
lea eax, [esp + 0xb4]
push eax
push fcn.1014aa30
push esi
push ebx
call fcn.10116bd0
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015dc31
mov ebx, dword [esp + 0xbc]
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015dc31
cmp dword [esp + 0xc4], ebx
jne 0x1015dc31
push 0x1670d
call fcn.10140678
mov ebx, eax
pop ecx
mov dword [esp + 0x18], ebx
push esi
mov esi, dword [esp + 0x14]
push esi
call fcn.10141a5b
pop ecx
xor eax, eax
pop ecx
mov byte [esi + 0xa5], al
test ebx, ebx
jne 0x1015f08c
jmp 0x1015a434
push dword [ebp + 4]
push esi
call fcn.1013b6df
pop ecx
jmp 0x1015d838
mov eax, dword [ebp + 4]
xor ecx, ecx
push ecx
push dword [ebp + 0x10]
shl eax, 4
add eax, dword [esi + 0x10]
push 8
pop ecx
mov eax, dword [eax + 0xc]
add eax, ecx
push eax
call fcn.1014a52d
push eax
push esi
call fcn.101427fc
xor eax, eax
add esp, 0x14
inc eax
or dword [esi + 0x18], eax
jmp 0x1015a434
push dword [ebp + 0x10]
push dword [ebp + 4]
push esi
call fcn.101575d6
jmp 0x1015a62e
push dword [ebp + 0x10]
push dword [ebp + 4]
push esi
call fcn.1015763b
jmp 0x1015a62e
imul eax, dword [ebp + 4], 0x28
imul esi, dword [ebp + 0xc], 0x28
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x10]
add eax, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0xf8]
push eax
mov eax, dword [esi]
inc eax
push eax
push dword [ebp + 8]
lea eax, [ecx + 4]
movzx ecx, word [ebp + 2]
push eax
mov eax, dword [edx + 0x10]
add ecx, ecx
push dword [eax + ecx*8 + 4]
push edx
call fcn.1013df69
push dword [esp + 0x54]
mov dword [esp + 0x3c], eax
call fcn.10160d98
mov eax, dword [esp + 0x114]
add esp, 0x1c
test eax, eax
je 0x1015dd3d
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x1015f103
dec eax
cdq
sub dword [esi], eax
push fcn.10117750
sbb dword [esi + 4], edx
xor eax, eax
inc eax
push eax
push 0xffffffffffffffff
push ecx
push dword [esp + 0x4c]
call fcn.10160e2c
add esp, 0x14
movzx eax, byte [esp + 0x58]
push eax
push dword [esp + 0x40]
call fcn.101599b3
pop ecx
pop ecx
jmp 0x1015bd93
imul esi, dword [ebp + 4], 0x28
imul eax, dword [ebp + 8], 0x28
push 0x10
pop ecx
add esi, dword [esp + 0x1c]
add eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
test byte [esi + 8], cl
jne 0x1015dd82
push esi
call fcn.10160db7
pop ecx
test eax, eax
jne 0x1015f103
mov eax, dword [esp + 0x20]
push dword [eax + 4]
push dword [eax]
push dword [esi + 0x10]
call fcn.1015310d
jmp 0x1015b69a
imul esi, dword [ebp + 4], 0x28
push 0x10
pop eax
add esi, dword [esp + 0x1c]
test byte [esi + 8], al
je 0x1015ddde
lea eax, [esp + 0x114]
push eax
push dword [esi + 0x10]
call fcn.10153158
pop ecx
pop ecx
test eax, eax
je 0x1015ddde
imul eax, dword [ebp + 0xc], 0x28
push dword [esp + 0x118]
push dword [esp + 0x118]
add eax, dword [esp + 0x24]
push eax
call fcn.1021b520
add esp, 0xc
jmp 0x1015bd93
push esi
call fcn.10160d98
pop ecx
jmp 0x1015eac2
imul esi, dword [ebp + 4], 0x28
imul eax, dword [ebp + 0xc], 0x28
mov ecx, dword [ebp + 0x10]
push 0x10
pop edx
add esi, dword [esp + 0x1c]
add eax, dword [esp + 0x1c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x20], ecx
test byte [esi + 8], dl
jne 0x1015de24
push esi
call fcn.10160db7
pop ecx
test eax, eax
jne 0x1015f103
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x1015de4b
push dword [eax + 4]
push dword [eax]
push ecx
push dword [esi + 0x10]
call fcn.101531b6
add esp, 0x10
test eax, eax
jne 0x1015ef08
cmp dword [esp + 0x20], eax
jl 0x1015a430
mov eax, dword [esp + 0x48]
jmp 0x1015dd82
imul eax, dword [ebp + 0xc], 0x28
xor ecx, ecx
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x3c], esi
add eax, dword [esp + 0x1c]
mov dword [esp + 0x5c], eax
cmp word [ebp + 2], cx
je 0x1015de8e
mov ecx, dword [esi + 0x14]
mov eax, dword [edi + 0xc8]
test eax, eax
je 0x1015de8a
cmp dword [eax + 0x1c], ecx
je 0x1015a430
mov eax, dword [eax + 4]
jmp 0x1015de78
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x10]
mov ecx, dword [edi + 0xd0]
cmp ecx, dword [edx + 0x94]
jge 0x1015f09d
push 0x10
pop edx
test byte [eax + 8], dl
jne 0x1015dfa8
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 [esp + 0x48], ecx
lea eax, [ecx + 2]
imul ecx, eax, 0xa
mov eax, dword [esi + 4]
add eax, 7
add ecx, edx
mov eax, eax
test eax, eax
jns 0x1015dedb
add eax, 7
sar eax, 3
lea eax, [eax + ecx*4]
mov dword [esp + 0x20], eax
cdq
push edx
push eax
push dword [esp + 0x18]
call fcn.10141c12
mov esi, eax
add esp, 0xc
test esi, esi
je 0x1015f103
push dword [esp + 0x5c]
call fcn.10160d10
mov eax, dword [esp + 0x60]
sub ebp, dword [esp + 0x18]
pop ecx
mov ecx, 0x410
mov word [eax + 8], cx
mov ecx, dword [esp + 0x20]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x48]
mov dword [eax + 0x10], esi
mov dword [eax + 0x24], 0x1015fb70
mov eax, dword [esp + 0x3c]
mov dword [esi + 0x3c], ecx
mov dword [esi], edi
push 0x14
mov eax, dword [eax + 0xc]
mov dword [esi + 0x40], eax
mov eax, ebp
cdq
pop ebp
idiv ebp
mov ebp, dword [esp + 0x3c]
mov dword [esi + 0x30], eax
mov eax, dword [edi + 0x58]
mov dword [esi + 0x10], eax
mov eax, dword [edi + 0x18]
mov dword [esi + 0x38], eax
mov eax, dword [edi + 0x60]
mov dword [esi + 0x14], eax
mov eax, dword [edi + 0x1c]
mov dword [esi + 0x2c], eax
mov eax, dword [edi + 0x68]
mov dword [esi + 8], eax
mov eax, dword [edi + 0x6c]
mov dword [esi + 0x34], eax
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x1c], eax
lea eax, [ecx + 2]
imul ecx, eax, 0x28
lea eax, [esi + 0x50]
add ecx, esi
cmp eax, ecx
je 0x1015dfa0
mov edx, dword [esp + 0x10]
mov ebx, 0x80
mov word [eax + 8], bx
mov dword [eax + 0x20], edx
add eax, 0x28
cmp eax, ecx
jne 0x1015df8e
mov ebx, dword [esp + 0x18]
mov ecx, dword [edi + 0xd0]
jmp 0x1015dfaf
mov esi, dword [eax + 0x10]
mov ebp, dword [esp + 0x3c]
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x10]
mov dword [edi + 0xd0], eax
lea edx, [esi + 0x50]
mov eax, dword [edi + 0xc8]
mov dword [esi + 4], eax
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ecx
mov eax, dword [edi + 0x2c]
mov dword [esi + 0x44], eax
mov eax, dword [edi]
mov dword [esp + 0x1c], edx
mov eax, dword [eax + 0x64]
mov dword [esi + 0x48], eax
mov eax, dword [edi + 0xdc]
mov dword [esi + 0x28], eax
xor eax, eax
mov dword [edi + 0xdc], eax
mov dword [edi + 0x2c], eax
mov dword [edi + 0x58], edx
mov dword [edi + 0xc8], esi
mov ecx, dword [esi + 0x3c]
mov dword [edi + 0x18], ecx
movzx eax, word [esi + 0x40]
imul ecx, ecx, 0x28
mov dword [edi + 0x1c], eax
add ecx, edx
mov dword [edi + 0x60], ecx
mov eax, dword [ebp + 0xc]
lea ecx, [ecx + eax*4]
mov dword [esi + 0x18], ecx
mov eax, dword [ebp + 4]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
push eax
xor eax, eax
push eax
push ecx
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [ebp]
add esp, 0xc
mov dword [edi + 0x68], ecx
mov eax, dword [ebp + 4]
mov dword [esp + 0x14], ecx
mov dword [edi + 0x6c], eax
lea ebp, [ecx - 0x14]
jmp 0x1015bd93
push ebp
push edi
call fcn.10131951
mov esi, dword [edi + 0xc8]
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 [ebp + 4]
imul ecx, ecx, 0x28
add ecx, dword [esi + 0x10]
push ecx
push eax
call fcn.1021b520
jmp 0x1015b213
mov eax, dword [esi + 0x20]
xor ecx, ecx
and eax, 0x80000
or eax, ecx
mov eax, dword [ebp + 8]
cdq
je 0x1015e0ab
add dword [esi + 0x1f0], eax
adc dword [esi + 0x1f4], edx
jmp 0x1015a434
cmp dword [ebp + 4], ecx
je 0x1015e0c1
add dword [esi + 0x1e8], eax
adc dword [esi + 0x1ec], edx
jmp 0x1015a434
add dword [edi + 0x40], eax
adc dword [edi + 0x44], edx
jmp 0x1015a434
xor eax, eax
cmp dword [ebp + 4], eax
je 0x1015e0f6
mov eax, dword [esi + 0x1e8]
or eax, dword [esi + 0x1ec]
jne 0x1015a434
mov eax, dword [esi + 0x1f0]
or eax, dword [esi + 0x1f4]
jmp 0x1015b2fb
mov eax, dword [edi + 0x40]
or eax, dword [edi + 0x44]
jmp 0x1015e0df
mov eax, dword [edi + 0xc8]
test eax, eax
jne 0x1015e14a
imul edi, dword [ebp + 4], 0x28
add edi, dword [esp + 0x1c]
push edi
call fcn.10160b73
imul esi, dword [ebp + 8], 0x28
add esi, dword [esp + 0x20]
push esi
call fcn.10160b73
mov eax, dword [esi]
pop ecx
pop ecx
mov ecx, dword [esi + 4]
cmp dword [edi + 4], ecx
jg 0x1015a430
jl 0x1015e13e
cmp dword [edi], eax
jae 0x1015a430
mov dword [edi], eax
mov dword [edi + 4], ecx
jmp 0x1015a430
mov eax, ecx
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x1015e148
imul edi, dword [ebp + 4], 0x28
add edi, dword [eax + 0x10]
jmp 0x1015e110
imul ecx, dword [ebp + 4], 0x28
xor edx, edx
add ecx, dword [esp + 0x1c]
mov edi, dword [ecx + 4]
mov esi, dword [ecx]
cmp edi, edx
jl 0x1015a25f
jg 0x1015e17b
cmp esi, edx
jbe 0x1015a25f
mov eax, dword [ebp + 0xc]
cdq
sub esi, eax
mov dword [ecx], esi
sbb edi, edx
mov dword [ecx + 4], edi
jmp 0x1015ef08
imul eax, dword [ebp + 0xc], 0x28
imul esi, dword [ebp + 4], 0x28
push ebp
push edi
add eax, dword [esp + 0x24]
add esi, dword [esp + 0x24]
mov dword [esp + 0x28], eax
call fcn.10131951
pop ecx
pop ecx
mov ecx, dword [esi + 4]
xor edx, edx
mov dword [esp + 0xec], ecx
mov edi, eax
mov eax, dword [esi]
mov dword [esp + 0xe8], eax
cmp ecx, edx
jl 0x1015e218
jg 0x1015e1cb
cmp eax, edx
jbe 0x1015e218
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp eax, edx
jl 0x1015e1de
jg 0x1015e1ef
cmp ecx, edx
ja 0x1015e1ef
xorps xmm0, xmm0
movlpd qword [esp + 0x20], xmm0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push eax
push ecx
lea eax, [esp + 0xf0]
push eax
call fcn.1013aa55
add esp, 0xc
test eax, eax
jne 0x1015e218
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xec]
jmp 0x1015e13e
or dword [edi], 0xffffffff
or dword [edi + 4], 0xffffffff
jmp 0x1015a430
imul ecx, dword [ebp + 4], 0x28
add ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov eax, edx
mov esi, dword [ecx + 4]
or eax, esi
je 0x1015a430
xor eax, eax
cmp esi, eax
jl 0x1015ef08
jg 0x1015e24f
cmp edx, eax
jbe 0x1015ef08
sub edx, 1
mov dword [ecx], edx
sbb esi, eax
mov dword [ecx + 4], esi
jmp 0x1015ef08
imul edx, dword [ebp + 4], 0x28
add edx, dword [esp + 0x1c]
mov ecx, dword [edx + 4]
mov eax, dword [edx]
cmp ecx, 0x80000000
jl 0x1015e289
jg 0x1015e27d
xor edi, edi
cmp eax, edi
jbe 0x1015e289
jmp 0x1015e27f
xor edi, edi
sub eax, 1
mov dword [edx], eax
sbb ecx, edi
mov dword [edx + 4], ecx
or eax, ecx
jmp 0x1015b2fb
movzx eax, word [ebp + 2]
xor ecx, ecx
mov dword [esp + 0x20], eax
push ecx
lea eax, [eax*4 + 0x44]
push eax
push esi
call fcn.10141b1e
mov esi, eax
add esp, 0xc
test esi, esi
je 0x1015f103
mov eax, dword [esp + 0x20]
xor edx, edx
add eax, 7
mov dword [esi + 8], edx
push 0x14
lea ecx, [esi + eax*4]
xor eax, eax
inc eax
mov dword [esi], ecx
mov word [ecx + 8], ax
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x18], edx
mov eax, dword [ebp + 0x10]
mov dword [esi + 4], eax
mov eax, ebp
sub eax, dword [esp + 0x18]
cdq
pop ecx
idiv ecx
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], eax
xor eax, eax
mov byte [esi + 0x18], al
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x20]
mov byte [esi + 0x19], al
mov word [ebp], 0xf09c
mov dword [ebp + 0x10], esi
imul edx, dword [ebp + 0xc], 0x28
mov esi, dword [ebp + 0x10]
add edx, dword [esp + 0x1c]
mov dword [esp + 0x20], edx
cmp dword [esi + 8], edx
je 0x1015e34e
movzx ecx, byte [esi + 0x19]
sub ecx, 1
mov dword [esi + 8], edx
js 0x1015e34e
lea edi, [ecx + 7]
push 4
lea edi, [esi + edi*4]
pop edx
mov eax, dword [ebp + 8]
add eax, ecx
imul eax, eax, 0x28
add eax, dword [esp + 0x1c]
mov dword [edi], eax
sub edi, edx
sub ecx, 1
jns 0x1015e331
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x20]
inc dword [edx + 0xc]
lea eax, [esi + 0x1c]
cmp dword [ebp + 4], 0
movzx edx, byte [esi + 0x19]
mov ecx, dword [esi + 4]
push eax
push edx
push esi
je 0x1015e369
call dword [ecx + 0x1c]
jmp 0x1015e36c
call dword [ecx + 0x10]
mov eax, dword [esi + 0x14]
add esp, 0xc
test eax, eax
je 0x1015a430
jle 0x1015e399
push dword [esi]
call fcn.10119900
push eax
push 0x10267d34
push edi
call fcn.1015a03f
mov ebx, dword [esi + 0x14]
add esp, 0x10
mov dword [esp + 0x18], ebx
cmp byte [esi + 0x18], 0
je 0x1015e3c0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x1015e3bb
xor ecx, ecx
imul eax, eax, 0x28
push ecx
inc ecx
push ecx
add eax, dword [esp + 0x24]
push eax
call fcn.1021b520
add esp, 0xc
xor eax, eax
mov byte [esi + 0x18], al
push dword [esi]
call fcn.10160d10
mov eax, dword [esi]
pop ecx
xor ecx, ecx
inc ecx
mov word [eax + 8], cx
xor eax, eax
mov dword [esi + 0x14], eax
jmp 0x1015ad59
imul esi, dword [ebp + 4], 0x28
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
add esi, ecx
mov dword [esp + 0x20], esi
test eax, eax
je 0x1015e448
imul esi, eax, 0x28
xor eax, eax
push 0x20
push eax
lea eax, [esp + 0xb8]
push eax
add esi, ecx
call sub.VCRUNTIME140.dll_memset
push esi
call fcn.10160d98
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc8], eax
lea eax, [esp + 0xc0]
push eax
mov dword [esp + 0xc4], esi
mov dword [esp + 0xc8], ebx
call dword [ebx + 0x18]
imul esi, dword [ebp + 0xc], 0x28
add esp, 0x14
mov ebx, dword [esp + 0xc4]
add esi, dword [esp + 0x1c]
jmp 0x1015e453
push ebx
push esi
call fcn.1021b520
pop ecx
pop ecx
mov ebx, eax
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x1015f0b4
movzx eax, byte [esp + 0x58]
push eax
push esi
call fcn.101599b3
push esi
call fcn.101610a4
mov esi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x1015f15c
jmp 0x1015a434
or dword [esp + 0x1c4], 0xffffffff
xor eax, eax
or dword [esp + 0x1c0], 0xffffffff
mov dword [esp + 0x1bc], eax
lea eax, [esp + 0x1c4]
push eax
lea eax, [esp + 0x1c4]
push eax
push dword [ebp + 8]
push dword [ebp + 4]
push esi
call fcn.1013f546
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x18], ebx
test ebx, ebx
je 0x1015e4e6
push 5
pop eax
cmp ebx, eax
jne 0x1015f345
xor eax, eax
xor ecx, ecx
mov ebx, eax
inc ecx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1bc], ecx
jmp 0x1015e4e8
xor eax, eax
imul esi, dword [ebp + 0xc], 0x28
mov edi, eax
add esi, dword [esp + 0x1c]
mov eax, dword [esp + edi*4 + 0x1bc]
cdq
push edx
push eax
push esi
call fcn.1021b520
add esp, 0xc
add esi, 0x28
inc edi
cmp edi, 3
jl 0x1015e4f2
jmp 0x1015a430
push ebp
push edi
call fcn.10131951
mov edx, dword [ebp + 4]
pop ecx
add edx, edx
mov dword [esp + 0x4c], eax
cmp dword [ebp + 0xc], 0xffffffff
pop ecx
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx + edx*8 + 4]
mov dword [esp + 0x20], eax
mov ecx, dword [eax + 4]
mov ecx, dword [ecx]
mov dword [esp + 0x64], ecx
mov dl, byte [ecx + 5]
movzx esi, dl
mov dword [esp + 0x5c], esi
cmovne esi, dword [ebp + 0xc]
cmp byte [ecx + 0x10], 3
mov byte [esp + 0x2b], dl
jae 0x1015e56b
mov eax, dword [ecx + 0x40]
cmp dword [eax], 0
je 0x1015e56f
xor eax, eax
cmp dword [ecx + 0x4c], eax
jg 0x1015e56b
jl 0x1015e56f
cmp dword [ecx + 0x48], eax
jbe 0x1015e56f
mov esi, dword [esp + 0x5c]
cmp byte [ecx + 0xf], 0
mov eax, 0x1028035c
jne 0x1015e580
mov eax, dword [ecx + 0xa8]
cmp esi, 5
jne 0x1015e5af
push eax
call fcn.1015666b
pop ecx
test eax, eax
je 0x1015e59e
push dword [esp + 0x64]
call fcn.1014ef4b
pop ecx
test eax, eax
jne 0x1015e5a7
mov esi, dword [esp + 0x5c]
jmp 0x1015e63a
mov ecx, dword [esp + 0x64]
mov dl, byte [esp + 0x2b]
cmp esi, dword [esp + 0x5c]
je 0x1015e63a
cmp dl, 5
je 0x1015e5c5
push 5
pop eax
cmp esi, eax
jne 0x1015e63a
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x4f], 0
je 0x1015f0ce
cmp dword [eax + 0xb4], 1
jg 0x1015f0ce
cmp dl, 5
jne 0x1015e606
push eax
push ecx
call fcn.1021b520
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test ebx, ebx
jne 0x1015e63e
push esi
push dword [esp + 0x68]
call fcn.1014eaf5
pop ecx
pop ecx
jmp 0x1015e61d
push 4
pop eax
cmp dl, al
jne 0x1015e619
push 2
pop eax
push eax
push ecx
call fcn.1014eaf5
pop ecx
pop ecx
test ebx, ebx
jne 0x1015e63e
push 5
pop ecx
xor eax, eax
cmp esi, ecx
sete al
inc eax
push eax
push dword [esp + 0x24]
call fcn.1013f2a4
pop ecx
mov ebx, eax
pop ecx
mov dword [esp + 0x18], ebx
test ebx, ebx
je 0x1015e642
mov esi, dword [esp + 0x5c]
push esi
push dword [esp + 0x68]
call fcn.1014eaf5
mov esi, dword [esp + 0x50]
pop ecx
pop ecx
mov ecx, 0xa02
mov word [esi + 8], cx
cmp eax, 6
jne 0x1015e664
xor eax, eax
jmp 0x1015e66b
mov eax, dword [eax*4 + 0x10280e70]
push eax
mov dword [esi + 0x10], eax
call fcn.1015666b
mov dword [esi + 0xc], eax
xor eax, eax
inc eax
mov byte [esi + 0xa], al
movzx eax, byte [esp + 0x5c]
push eax
push esi
call fcn.101599b3
add esp, 0xc
jmp 0x1015ad59
mov eax, dword [ebp + 8]
test eax, eax
je 0x1015e6a1
imul eax, eax, 0x28
add eax, dword [esp + 0x1c]
jmp 0x1015e6a3
xor eax, eax
push eax
push dword [ebp + 4]
lea eax, [edi + 0x7c]
push esi
push eax
call fcn.101536aa
add esp, 0x10
jmp 0x1015c1bc
mov ecx, dword [ebp + 4]
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [eax + ecx*8 + 4]
call fcn.1013dadf
mov ebx, eax
mov dword [esp + 0x1c], ebx
pop ecx
test ebx, ebx
je 0x1015a434
cmp ebx, 0x65
jne 0x1015f345
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], ebx
jmp 0x1015ef08
xor eax, eax
cmp dword [ebp + 4], eax
jne 0x1015e704
push dword [ebp + 8]
push esi
call fcn.101435b3
jmp 0x1015da9b
mov eax, dword [ebp + 8]
inc eax
xor eax, dword [edi + 0x98]
and eax, 3
xor dword [edi + 0x98], eax
jmp 0x1015a434
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x30]
or byte [eax + 1], 0x40
jmp 0x1015a434
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x30]
and byte [eax + 1], 0xbf
jmp 0x1015a434
mov al, byte [ebp + 0xc]
mov byte [esp + 0xd8], al
test al, al
jne 0x1015e766
mov eax, dword [esi + 0x20]
and eax, 0x400
mov dword [esp + 0x20], eax
jne 0x1015a434
mov ecx, dword [ebp + 4]
push dword [esp + 0xd8]
mov eax, dword [esi + 0x10]
add ecx, ecx
push dword [ebp + 8]
push dword [eax + ecx*8 + 4]
call fcn.1021b520
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
je 0x1015a434
cmp bl, 6
jne 0x1015f345
push dword [ebp + 0x10]
push str.database_table_is_locked:__s
push edi
call fcn.1015a03f
add esp, 0xc
jmp 0x1015f345
mov esi, dword [ebp + 0x10]
push esi
push dword [esp + 0x14]
call fcn.10162ad3
mov ebx, eax
mov dword [esp + 0x20], ebx
pop ecx
pop ecx
test esi, esi
je 0x1015ad59
push dword [esi + 8]
push edi
call fcn.10163153
pop ecx
pop ecx
jmp 0x1015ad59
xor eax, eax
push 0x28
push eax
lea eax, [esp + 0xb8]
push eax
call sub.VCRUNTIME140.dll_memset
imul eax, dword [ebp + 8], 0x28
mov dword [esp + 0xdc], esi
add eax, dword [esp + 0x28]
push eax
lea eax, [esp + 0xc0]
push eax
call fcn.10160805
mov ebx, eax
xor eax, eax
inc eax
mov dword [esp + 0x2c], ebx
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.101595b2
add esp, 0x1c
test eax, eax
je 0x1015e842
lea ecx, [edi + 0x7c]
push ecx
push eax
push dword [ebp + 4]
push esi
call fcn.1021b520
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x18], ebx
lea eax, [esp + 0xb0]
push eax
call fcn.10160d10
pop ecx
jmp 0x1015ad5d
inc dword [esi + 0xc0]
push dword [ebp + 0x10]
push dword [ebp + 4]
push esi
call fcn.10162d7e
mov ebx, eax
add esp, 0xc
dec dword [esi + 0xc0]
mov dword [esp + 0x18], ebx
jmp 0x1015ad5d
xor eax, eax
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x10]
mov esi, dword [eax + 8]
test esi, esi
je 0x1015f120
mov eax, dword [esi]
mov dword [esp + 0x20], eax
test eax, eax
je 0x1015f120
lea ecx, [esp + 0x34]
push ecx
push esi
call dword [eax + 0x18]
mov ebx, eax
push esi
push edi
mov dword [esp + 0x28], ebx
call fcn.10163153
add esp, 0x10
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x34]
push 2
mov dword [eax], esi
pop eax
push eax
push 0xffffffffffffffff
xor eax, eax
push eax
push dword [ebp + 4]
push edi
call fcn.1011f718
add esp, 0x14
test eax, eax
je 0x1015f0f7
mov ecx, dword [esp + 0x34]
mov dword [eax + 0x30], ecx
inc dword [esi + 4]
jmp 0x1015a430
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
imul edx, dword [ebp + 0xc], 0x28
mov ebx, dword [edi + 0x5c]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x3c], eax
add edx, dword [esp + 0x1c]
mov esi, dword [eax + 0x30]
mov ecx, dword [edx + 0x28]
mov eax, dword [esi]
mov dword [esp + 0x50], eax
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov eax, dword [edx]
mov dword [esp + 0x48], eax
xor eax, eax
test ecx, ecx
jle 0x1015e934
add edx, 0x50
mov dword [ebx + eax*4], edx
inc eax
add edx, 0x28
cmp eax, ecx
jl 0x1015e929
mov eax, dword [esp + 0x20]
push ebx
push ecx
push dword [ebp + 0x10]
push dword [esp + 0x54]
push esi
call dword [eax + 0x20]
push dword [esp + 0x64]
mov ebx, eax
push edi
mov dword [esp + 0x34], ebx
call fcn.10163153
add esp, 0x1c
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x20]
push esi
call dword [eax + 0x28]
pop ecx
mov ecx, dword [esp + 0x3c]
xor edx, edx
mov byte [ecx + 2], dl
test eax, eax
je 0x1015a430
jmp 0x1015ef08
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
imul esi, dword [ebp + 0xc], 0x28
mov ecx, dword [eax + ecx*4]
mov dword [esp + 0x20], ecx
add esi, dword [esp + 0x1c]
cmp byte [ecx + 2], 0
jne 0x1015b21b
mov eax, dword [ecx + 0x30]
push 0x20
mov eax, dword [eax]
mov dword [esp + 0x4c], eax
mov ebx, dword [eax]
xor eax, eax
push eax
lea eax, [esp + 0xb8]
push eax
call sub.VCRUNTIME140.dll_memset
xor ecx, ecx
mov dword [esp + 0xbc], esi
inc ecx
add esp, 0xc
test byte [ebp + 2], cl
je 0x1015e9df
push esi
call fcn.10160d98
xor eax, eax
mov dword [esi], eax
mov eax, 0x4001
pop ecx
jmp 0x1015e9f1
mov ax, word [esi + 8]
mov edx, 0x3e40
and ax, dx
or ax, cx
movzx eax, ax
mov word [esi + 8], ax
lea eax, [esp + 0xb0]
push dword [ebp + 8]
push eax
mov eax, dword [esp + 0x28]
push dword [eax + 0x30]
call dword [ebx + 0x2c]
push dword [esp + 0x54]
mov ebx, eax
push edi
mov dword [esp + 0x2c], ebx
call fcn.10163153
add esp, 0x14
cmp dword [esp + 0xc4], 0
jle 0x1015ea47
push esi
call fcn.10119900
push eax
push 0x10267d34
push edi
call fcn.1015a03f
mov ebx, dword [esp + 0xd4]
add esp, 0x10
mov dword [esp + 0x18], ebx
movzx eax, byte [esp + 0x58]
push eax
push esi
call fcn.101599b3
push esi
call fcn.101610a4
mov esi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x1015f15c
jmp 0x1015ad5d
mov ecx, dword [ebp + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x20], eax
cmp byte [eax + 2], 0
jne 0x1015a434
mov eax, dword [eax + 0x30]
push eax
mov esi, dword [eax]
mov ecx, dword [esi]
mov dword [esp + 0x4c], ecx
call dword [ecx + 0x24]
mov ebx, eax
push esi
push edi
mov dword [esp + 0x24], ebx
call fcn.10163153
add esp, 0xc
test ebx, ebx
jne 0x1015f341
mov eax, dword [esp + 0x20]
push dword [eax + 0x30]
mov eax, dword [esp + 0x4c]
call dword [eax + 0x28]
pop ecx
test eax, eax
jne 0x1015bd93
mov esi, dword [esp + 0x10]
xor ecx, ecx
imul eax, dword [ebp + 8], 0x14
mov ebp, dword [esp + 0x14]
add ebp, 0xffffffec
add ebp, eax
jmp 0x1015bd99
mov eax, dword [esi + 0x20]
mov ecx, 0x4000000
or dword [esi + 0x20], ecx
and eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x24]
mov dword [esi + 0x24], eax
mov eax, dword [ebp + 0x10]
imul esi, dword [ebp + 4], 0x28
mov eax, dword [eax + 8]
mov dword [esp + 0x20], eax
xor eax, eax
add esi, dword [esp + 0x1c]
inc eax
push eax
push esi
call fcn.101599b3
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f341
mov ecx, dword [esp + 0x20]
push dword [esi + 0x10]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x4c]
cmp dword [esp + 0x50], 0
mov ebx, eax
mov esi, dword [esp + 0x18]
pop ecx
pop ecx
mov dword [esp + 0x18], ebx
jne 0x1015eb46
mov eax, dword [esi + 0x24]
and dword [esi + 0x20], 0xfbffffff
mov dword [esi + 0x24], eax
push dword [esp + 0x20]
push edi
call fcn.10163153
jmp 0x1015c3fb
cmp byte [esi + 0x51], 0
jne 0x1015f107
mov eax, dword [ebp + 0x10]
mov esi, dword [eax + 8]
test esi, esi
je 0x1015f120
mov eax, dword [esi]
mov dword [esp + 0x20], eax
test eax, eax
je 0x1015f120
mov edx, dword [ebp + 8]
xor ecx, ecx
cmp dword [eax + 0x34], ecx
je 0x1015a430
mov eax, dword [esp + 0x10]
mov ebx, dword [edi + 0x5c]
mov al, byte [eax + 0x56]
mov byte [esp + 0x2b], al
imul eax, dword [ebp + 0xc], 0x28
add eax, dword [esp + 0x1c]
test edx, edx
jle 0x1015ebae
mov dword [ebx + ecx*4], eax
add eax, 0x28
inc ecx
cmp ecx, edx
jl 0x1015eba3
mov ecx, dword [esp + 0x10]
mov al, byte [ebp + 2]
mov byte [ecx + 0x56], al
lea eax, [esp + 0x11c]
push eax
mov eax, dword [esp + 0x24]
push ebx
push edx
push esi
call dword [eax + 0x34]
mov ecx, dword [esp + 0x20]
mov ebx, eax
mov al, byte [esp + 0x3b]
push esi
push edi
mov dword [esp + 0x30], ebx
mov byte [ecx + 0x56], al
call fcn.10163153
add esp, 0x18
test ebx, ebx
jne 0x1015ec0a
mov esi, dword [esp + 0x10]
xor eax, eax
cmp dword [ebp + 4], eax
je 0x1015ec3d
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x120]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
jmp 0x1015ec3d
cmp bl, 0x13
jne 0x1015ec39
mov eax, dword [ebp + 0x10]
cmp byte [eax + 0x10], 0
je 0x1015ec39
movzx ecx, word [ebp + 2]
mov esi, dword [esp + 0x10]
push 4
pop eax
cmp cx, ax
jne 0x1015f13c
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], ebx
jmp 0x1015a434
mov esi, dword [esp + 0x10]
inc dword [edi + 0x2c]
jmp 0x1015ad5d
push ebp
push edi
call fcn.10131951
mov edx, dword [ebp + 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 + 0x30]
mov dword [eax], ecx
xor ecx, ecx
jmp 0x1015a31b
push ebp
push edi
call fcn.10131951
mov edx, dword [ebp + 4]
pop ecx
pop ecx
mov ecx, dword [esi + 0x10]
add edx, edx
mov dword [esp + 0x20], eax
xor eax, eax
mov esi, eax
mov edi, dword [ecx + edx*8 + 4]
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x1015ec98
mov eax, dword [edi + 4]
mov esi, dword [eax + 0x30]
cmp esi, ecx
cmovb esi, ecx
push edi
call fcn.1013d9c5
mov eax, dword [edi + 4]
pop ecx
mov eax, dword [eax]
test esi, esi
je 0x1015ecb0
mov dword [eax + 0x9c], esi
jmp 0x1015ecb6
mov esi, dword [eax + 0x9c]
push edi
call fcn.1013e34e
mov eax, dword [esp + 0x24]
pop ecx
xor ecx, ecx
mov dword [eax], esi
mov dword [eax + 4], ecx
jmp 0x1015a430
imul edx, dword [ebp + 0xc], 0x28
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x5c], esi
add edx, dword [esp + 0x1c]
mov dword [esp + 0x3c], edx
cmp dword [esi], edx
je 0x1015ed18
movzx ecx, byte [esi + 0x19]
sub ecx, 1
mov dword [esi + 0xc], edi
mov dword [esi], edx
js 0x1015ed18
lea edi, [ecx + 7]
push 4
lea edi, [esi + edi*4]
pop edx
mov eax, dword [ebp + 8]
add eax, ecx
imul eax, eax, 0x28
add eax, dword [esp + 0x1c]
mov dword [edi], eax
sub edi, edx
sub ecx, 1
jns 0x1015ecfb
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x3c]
mov ax, word [edx + 8]
mov ecx, 0x3e40
and ax, cx
xor ecx, ecx
inc ecx
or ax, cx
mov word [edx + 8], ax
lea eax, [esi + 0x1c]
mov ecx, dword [esi + 4]
push eax
movzx eax, byte [esi + 0x19]
push eax
push esi
call dword [ecx + 0x10]
mov eax, dword [esi + 0x14]
add esp, 0xc
test eax, eax
je 0x1015edf9
jle 0x1015ed6d
push dword [esp + 0x3c]
call fcn.10119900
push eax
push 0x10267d34
push edi
call fcn.1015a03f
mov ebx, dword [esi + 0x14]
add esp, 0x10
mov dword [esp + 0x18], ebx
mov eax, dword [esi + 0x10]
mov edx, dword [ebp + 4]
mov dword [esp + 0x48], eax
lea eax, [edi + 0xdc]
mov esi, dword [eax]
mov dword [esp + 0x50], edx
mov dword [esp + 0x20], eax
test esi, esi
je 0x1015ede8
mov ebx, dword [esp + 0x48]
mov edi, eax
mov ebp, dword [esp + 0x10]
test ebx, ebx
js 0x1015edb7
cmp dword [esi], ebx
jne 0x1015edb2
mov ecx, dword [esi + 4]
test ecx, ecx
js 0x1015edb2
cmp ecx, 0x1f
jg 0x1015edb7
xor eax, eax
inc eax
shl eax, cl
test edx, eax
je 0x1015edb7
lea edi, [esi + 0x10]
jmp 0x1015edd6
mov eax, dword [esi + 0xc]
test eax, eax
je 0x1015edc4
push dword [esi + 8]
call eax
pop ecx
mov eax, dword [esi + 0x10]
push esi
push ebp
mov dword [edi], eax
call fcn.10141a5b
mov edx, dword [esp + 0x58]
pop ecx
pop ecx
mov esi, dword [edi]
test esi, esi
jne 0x1015ed95
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x5c]
xor ecx, ecx
mov dword [eax + 0x14], ecx
test ebx, ebx
jne 0x1015f341
mov esi, dword [esp + 0x3c]
test byte [esi + 8], 0x12
je 0x1015a430
jmp 0x1015e45f
mov cl, byte [esi + 0x58]
test cl, 0x41
je 0x1015eebd
cmp byte [edi + 0x95], 0
jne 0x1015eebd
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x1015ee3a
mov eax, dword [edi + 0xc0]
test eax, eax
je 0x1015eebd
push eax
test cl, 0x40
je 0x1015ee68
push edi
call fcn.1015f732
mov esi, eax
mov eax, dword [esp + 0x18]
push esi
push dword [eax + 0xd0]
call dword [eax + 0xcc]
push esi
call fcn.10117750
add esp, 0x14
mov esi, dword [esp + 0x10]
jmp 0x1015eebd
xor ecx, ecx
inc ecx
cmp dword [esi + 0xbc], ecx
jle 0x1015eeac
push str.____s
push esi
call fcn.1014ced5
mov esi, eax
xor ecx, ecx
mov eax, dword [esp + 0x1c]
inc ecx
push esi
push edi
push dword [eax + 0xd0]
push ecx
call dword [eax + 0xcc]
add esp, 0x1c
test esi, esi
je 0x1015ee62
push esi
mov esi, dword [esp + 0x14]
push esi
call fcn.10141a5b
pop ecx
pop ecx
jmp 0x1015eebd
push edi
push dword [esi + 0xd0]
push ecx
call dword [esi + 0xcc]
add esp, 0x10
mov eax, dword [ebp + 4]
cmp eax, dword [0x1030dc2c]
jl 0x1015eefe
cmp byte [ebp], 0xab
je 0x1015a434
xor eax, eax
inc eax
mov ecx, eax
cmp dword [edi + 0x6c], eax
jle 0x1015eefc
push 0x14
pop esi
mov eax, esi
xor ebx, ebx
mov edx, dword [edi + 0x68]
cmp byte [eax + edx], 0x11
jne 0x1015eef0
mov dword [eax + edx + 4], ebx
inc ecx
add eax, esi
cmp ecx, dword [edi + 0x6c]
jl 0x1015eee3
mov ebx, dword [esp + 0x18]
xor eax, eax
inc eax
mov dword [ebp + 4], eax
inc dword [edi + 0xbc]
imul eax, dword [ebp + 8], 0x14
mov ebp, dword [esp + 0x14]
add ebp, 0xffffffec
jmp 0x1015b634
mov dword [edi + 0x28], ecx
mov al, byte [ebp + 8]
mov byte [edi + 0x92], al
mov dword [edi + 0x24], esi
test ecx, ecx
je 0x1015ef96
movzx eax, word [ebp + 2]
test ax, ax
je 0x1015ef6b
push dword [eax*4 + 0x10281030]
push str._s_constraint_failed
push edi
call fcn.1015a03f
add esp, 0xc
cmp dword [ebp + 0x10], 0
je 0x1015ef7c
push dword [ebp + 0x10]
push dword [edi + 0x7c]
push str._z:__s
push dword [esp + 0x1c]
call fcn.1014ced5
add esp, 0x10
mov dword [edi + 0x7c], eax
jmp 0x1015ef7c
push dword [ebp + 0x10]
push 0x10267d34
push edi
call fcn.1015a03f
add esp, 0xc
push dword [edi + 0x7c]
push dword [edi + 0xc0]
push esi
push str.abort_at__d_in___s_:__s
push dword [ebp + 4]
call fcn.1011e090
add esp, 0x14
push edi
call fcn.1015fcfa
mov esi, dword [esp + 0x14]
mov ebx, eax
pop ecx
push 5
pop eax
cmp ebx, eax
jne 0x1015f2bf
mov dword [edi + 0x28], eax
jmp 0x1015f3ec
push 0x15975
call fcn.10140678
pop ecx
jmp 0x1015ace3
push str.cannot_open_savepoint___SQL_statements_in_progress
jmp 0x1015f25b
push str.cannot_release_savepoint___SQL_statements_in_progress
push edi
call fcn.1015a03f
pop ecx
pop ecx
push 5
jmp 0x1015ace2
mov eax, ebp
mov esi, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
push 0x14
cdq
pop ebx
idiv ebx
mov dword [edi + 0x24], eax
xor eax, eax
mov byte [esi + 0x4f], al
mov ebx, ecx
mov dword [edi + 0x28], ecx
jmp 0x1015f3ec
push str.no_such_savepoint:__s
push edi
call fcn.1015a03f
add esp, 0xc
xor eax, eax
lea ebx, [eax + 1]
jmp 0x1015f341
push 8
pop eax
mov ebx, eax
mov esi, edx
jmp 0x1015f345
mov esi, dword [esp + 0x10]
cmp bl, 5
jne 0x1015f345
mov eax, ebp
mov dword [edi + 0x28], ebx
sub eax, dword [esp + 0x14]
push 0x14
cdq
pop ecx
idiv ecx
mov dword [edi + 0x24], eax
jmp 0x1015f3ec
mov ebx, 0x204
jmp 0x1015f345
push 0xd
pop ebx
jmp 0x1015f341
mov ebx, 0x30b
jmp 0x1015f341
push 0x16610
jmp 0x1015efbb
push 6
pop ebx
push 2
pop eax
mov byte [edi + 0x92], al
jmp 0x1015f345
mov esi, dword [esp + 0x10]
push 7
pop ebx
push esi
call fcn.10152aff
pop ecx
cmp ebx, 7
je 0x1015f107
jmp 0x1015f345
xor eax, eax
push str.too_many_levels_of_trigger_recursion
push edi
lea ebx, [eax + 1]
call fcn.1015a03f
pop ecx
pop ecx
jmp 0x1015f341
push esi
call fcn.10119900
push eax
push 0x10267d34
push edi
call fcn.1015a03f
add esp, 0x10
jmp 0x1015f341
xor eax, eax
mov ecx, str.out_of
cmp esi, 5
lea ebx, [eax + 1]
mov eax, str.into
cmovne eax, ecx
push eax
push str.cannot_change__s_wal_mode_from_within_a_transaction
push edi
call fcn.1015a03f
add esp, 0xc
jmp 0x1015f341
mov eax, dword [esp + 0x20]
push dword [esp + 0x34]
call dword [eax + 0x1c]
pop ecx
mov esi, dword [esp + 0x10]
push esi
call fcn.1014d5e0
mov dword [esp], str.out_of_memory
push edi
call fcn.1015a03f
pop ecx
pop ecx
push 7
jmp 0x1015f136
push 6
jmp 0x1015f05a
or dword [esp + 0x7c], 0xffffffff
or dword [esp + 0x88], 0xffffffff
push 9
pop ebx
jmp 0x1015f345
push 5
pop edx
movzx eax, cl
cmp cx, dx
push 2
pop ecx
cmove eax, ecx
jmp 0x1015f07a
mov esi, ecx
jmp 0x1015f15c
mov esi, eax
jmp 0x1015f15c
mov esi, dword [esp + 0x10]
push str.string_or_blob_too_big
push edi
call fcn.1015a03f
pop ecx
pop ecx
push 0x12
jmp 0x1015f136
xor eax, eax
push eax
push edi
call fcn.10159aa3
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f345
inc ebx
push ebx
push edi
call fcn.10159bc4
mov eax, dword [edi + 0x20]
pop ecx
pop ecx
push 2
pop ecx
add eax, ecx
or eax, ebx
mov dword [edi + 0x20], eax
xor eax, eax
imul esi, dword [ebp + 4], 0x28
mov ebx, eax
add esi, dword [esp + 0x1c]
mov dword [edi + 0x78], esi
cmp dword [ebp + 8], eax
jle 0x1015f1d9
mov eax, 0x1000
test word [esi + 8], ax
je 0x1015f1c7
push esi
call fcn.10160b9c
pop ecx
test eax, eax
jne 0x1015f103
push esi
call fcn.10160c10
inc ebx
add esi, 0x28
pop ecx
cmp ebx, dword [ebp + 8]
jl 0x1015f1ad
xor eax, eax
mov esi, dword [esp + 0x10]
cmp byte [esi + 0x51], 0
jne 0x1015f107
push 4
pop ecx
test byte [esi + 0x58], cl
je 0x1015f201
push eax
push edi
push dword [esi + 0xd0]
push ecx
call dword [esi + 0xcc]
add esp, 0x10
mov eax, ebp
sub eax, dword [esp + 0x14]
push 0x14
pop ecx
cdq
idiv ecx
push 0x64
inc eax
mov dword [edi + 0x24], eax
pop ebx
jmp 0x1015f3ec
mov ebx, dword [ebp + 4]
movzx eax, byte [esi + 0x4f]
mov edx, dword [ebp + 8]
mov dword [esp + 0xd8], ebx
cmp ebx, eax
je 0x1015f2d2
test edx, edx
je 0x1015f248
push 0x204
push esi
call fcn.10152fc4
pop ecx
xor eax, eax
pop ecx
inc eax
jmp 0x1015f28c
test ebx, ebx
je 0x1015f26d
xor eax, eax
cmp dword [esi + 0xb8], eax
jle 0x1015f26d
push str.cannot_commit_transaction___SQL_statements_in_progress
push edi
call fcn.1015a03f
pop ecx
pop ecx
push 5
pop eax
mov ebx, eax
jmp 0x1015f345
xor eax, eax
inc eax
push eax
push edi
call fcn.10159aa3
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x1015f3ec
mov al, byte [esp + 0xd8]
mov bl, al
push edi
mov byte [esi + 0x4f], al
call fcn.1015fcfa
pop ecx
push 5
pop ecx
cmp eax, ecx
jne 0x1015f2b8
mov eax, ebp
sub eax, dword [esp + 0x14]
cdq
idiv dword [esp + 0x100]
mov dword [edi + 0x24], eax
xor eax, eax
inc eax
sub al, bl
jmp 0x1015eff9
push esi
call fcn.1013f741
pop ecx
push 0x65
pop ebx
xor eax, eax
cmp dword [edi + 0x28], eax
push 1
pop eax
cmovne ebx, eax
jmp 0x1015f3ec
test edx, edx
mov eax, str.cannot_commit___no_transaction_is_active
mov ecx, str.cannot_rollback___no_transaction_is_active
cmove ecx, eax
test ebx, ebx
mov eax, str.cannot_start_a_transaction_within_a_transaction
cmovne eax, ecx
push eax
push edi
call fcn.1015a03f
xor eax, eax
pop ecx
pop ecx
lea ebx, [eax + 1]
jmp 0x1015f345
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x90], eax
jmp 0x1015f134
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x90], eax
jmp 0x1015f107
mov edi, dword [esp + 0x68]
mov esi, dword [esp + 0x10]
cmp byte [esi + 0x51], 0
je 0x1015f350
push 7
pop ebx
jmp 0x1015f365
cmp ebx, 0x210a
jne 0x1015f365
push 0x16e39
call fcn.10140678
pop ecx
mov ebx, eax
xor eax, eax
cmp dword [edi + 0x7c], eax
jne 0x1015f389
cmp ebx, 0xc0a
je 0x1015f389
push ebx
call fcn.10143376
push eax
push 0x10267d34
push edi
call fcn.1015a03f
add esp, 0x10
push ebx
push esi
mov dword [edi + 0x28], ebx
call fcn.101566f9
push dword [edi + 0x7c]
mov eax, ebp
push dword [edi + 0xc0]
sub eax, dword [esp + 0x24]
push 0x14
pop ecx
cdq
idiv ecx
push eax
push str.statement_aborts_at__d:___s___s
push ebx
call fcn.1011e090
push edi
call fcn.1015fcfa
add esp, 0x20
cmp ebx, 0xc0a
jne 0x1015f3cc
push esi
call fcn.1014d5e0
pop ecx
xor eax, eax
lea ebx, [eax + 1]
mov al, byte [esp + 0x77]
test al, al
je 0x1015f3ec
movzx eax, al
dec eax
push eax
push esi
call fcn.10152b61
pop ecx
pop ecx
jmp 0x1015f3ec
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x88]
cmp dword [esp + 0x94], edx
jb 0x1015f451
mov ecx, dword [esp + 0x7c]
ja 0x1015f40b
cmp dword [esp + 0x90], ecx
jb 0x1015f451
mov eax, dword [esi + 0x158]
test eax, eax
je 0x1015f451
add ecx, dword [esi + 0x160]
push 0
mov dword [esp + 0x80], ecx
pop ecx
push dword [esi + 0x15c]
adc edx, ecx
mov dword [esp + 0x8c], edx
call eax
pop ecx
test eax, eax
je 0x1015f3ec
or eax, 0xffffffff
mov dword [esp + 0x7c], eax
or eax, 0xffffffff
mov dword [esp + 0x88], eax
jmp 0x1015f134
mov ecx, dword [esp + 0x90]
add dword [edi + 0xb4], ecx
push edi
call fcn.101601fd
pop ecx
mov ecx, dword [esp + 0x1c8]
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10236000
add esp, 0x1bc
ret