Function at 0x49abd4
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xdc
mov eax, dword [0x5b38f0]
xor eax, esp
mov dword [esp + 0xd8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x54], eax
xor ecx, ecx
mov dword [esp + 0x3c], edx
inc ecx
mov dword [esp + 0x38], esi
push edi
mov eax, dword [esi + 0x1e4]
mov dword [esp + 0xa8], eax
mov eax, dword [esi + 0x1e8]
mov dword [esi + 0x1e4], eax
inc eax
mov dword [esi + 0x1e8], eax
mov eax, dword [esi]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x20], eax
test edx, edx
je 0x49be76
cmp byte [eax + 0x36], 0
jne 0x49be76
xor ebx, ebx
cmp dword [esi + 0x44], ebx
jne 0x49be76
push ebx
push ebx
push ebx
push 0x15
pop edx
mov ecx, esi
call fcn.0048a657
add esp, 0xc
test eax, eax
je 0x49ac6a
xor edx, edx
lea eax, [edx + 1]
jmp 0x49be78
push 0xa
xor eax, eax
lea edi, [esp + 0x84]
pop ecx
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x40]
cmp byte [eax], 4
ja 0x49ac9d
mov edx, dword [edi + 0x38]
mov ecx, dword [esp + 0x20]
call fcn.00485dd4
mov eax, 0xfffe
mov dword [edi + 0x38], ebx
and word [edi + 6], ax
push ebx
mov edx, edi
mov ecx, esi
call fcn.0049a7d9
mov eax, dword [edi + 0x38]
pop ecx
mov ecx, dword [edi]
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ecx
cmp dword [esi + 0x44], ebx
jne 0x49be10
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x36], bl
jne 0x49be19
movzx eax, word [edi + 6]
mov ecx, esi
shr eax, 2
and eax, 1
mov dword [esp + 0x38], eax
call fcn.0049856d
mov ecx, eax
mov dword [esp + 0xc], ecx
test ecx, ecx
je 0x49be20
mov edx, dword [esp + 0x18]
cmp dword [edx], 1
jle 0x49ad13
mov edx, dword [esp + 0x58]
mov ecx, esi
call fcn.004976fc
mov ecx, dword [esp + 0xc]
jmp 0x49ad15
mov eax, ebx
test eax, eax
jne 0x49be20
mov edx, ebx
mov dword [esp + 0x24], ebx
cmp dword [edi + 0x3c], ebx
jne 0x49af2c
mov eax, dword [esp + 0x10]
jmp 0x49ad36
mov ecx, dword [esp + 0xc]
movsx eax, word [eax]
cmp edx, eax
jge 0x49af2c
mov esi, dword [esp + 0x10]
mov eax, edx
shl eax, 6
mov dword [esp + 0x44], eax
mov esi, dword [eax + esi + 0x18]
test esi, esi
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x3c]
je 0x49af1a
mov edx, dword [esp + 0x10]
cmp dword [eax + edx + 0x1c], ebx
je 0x49ad89
push ebx
push dword [eax + edx + 0x1c]
push dword [eax + edx + 0x20]
push 2
pop edx
call fcn.00478cdd
mov edx, dword [esp + 0x30]
add esp, 0xc
jmp 0x49af1a
mov ecx, edi
call fcn.004850ee
add dword [esi + 0x1e0], eax
mov edx, edi
mov eax, dword [esp + 0x5c]
mov ecx, esi
movzx eax, word [eax + 6]
shr eax, 2
and eax, 1
push eax
push dword [esp + 0x3c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
push eax
call fcn.00499b56
add esp, 0xc
test eax, eax
je 0x49ade1
cmp dword [esp + 0x28], ebx
je 0x49add5
or word [edi + 6], 4
mov dword [esp + 0x38], 1
or eax, 0xffffffff
mov dword [esp + 0x24], eax
jmp 0x49aee1
mov eax, dword [esi + 0x4c]
mov edx, dword [esp + 0x44]
inc eax
mov ecx, dword [esp + 0x10]
push ebx
push eax
push ebx
mov dword [esi + 0x4c], eax
mov dword [edx + ecx + 0x20], eax
mov ecx, dword [esp + 0x18]
push 7
pop edx
mov dword [esp + 0x28], ebx
call fcn.00478cdd
mov ecx, dword [esp + 0x50]
add esp, 0xc
mov edx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
inc eax
mov dword [ecx + edx + 0x1c], eax
cmp byte [ecx + edx + 0x26], bl
jne 0x49ae34
mov ecx, esi
call fcn.00486053
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + edx + 0x28]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0xd8], eax
mov al, byte [esi + 0x1e8]
mov word [esp + 0xd4], 9
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xe0], ebx
mov byte [ecx + edx + 0x27], al
lea eax, [esp + 0xd4]
push eax
mov edx, edi
mov ecx, esi
call fcn.0049abd4
movsd xmm0, qword [edi + 0x20]
pop ecx
call fcn.0055cea1
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
mov ecx, dword [edx + edi + 0x14]
mov edi, dword [esp + 0x40]
mov dword [ecx + 0x18], eax
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x49aeaf
js 0x49aeaf
mov eax, dword [esp + 0xc]
mov edx, ecx
mov ecx, eax
push dword [eax + 0x1c]
call fcn.00479025
pop ecx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x10]
push ebx
push ebx
push dword [eax + ecx + 0x20]
mov ecx, dword [esp + 0x18]
push 3
pop edx
call fcn.00478cdd
mov edx, dword [esp + 0x34]
add esp, 0xc
mov ecx, dword [esp + 0xc]
push eax
call fcn.0047900e
pop ecx
mov byte [esi + 0x13], bl
mov dword [esi + 0x3c], ebx
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x36], bl
jne 0x49be0c
mov ecx, edi
call fcn.004850ee
mov ecx, dword [esp + 0x58]
sub dword [esi + 0x1e0], eax
mov eax, dword [edi + 0x28]
mov edx, dword [esp + 0x24]
cmp byte [ecx], 4
mov dword [esp + 0x10], eax
jbe 0x49af1e
mov eax, dword [edi + 0x38]
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x10]
inc edx
mov dword [esp + 0x24], edx
cmp dword [edi + 0x3c], ebx
je 0x49ad32
mov eax, dword [edi]
movzx ecx, word [edi + 6]
mov edx, dword [edi + 0x34]
and ecx, 1
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x4c], eax
mov eax, dword [edi + 0x30]
mov dword [esp + 0x30], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], edx
mov dword [esp + 0x64], ecx
cmp dword [edi + 0x3c], ebx
je 0x49afb4
cmp dword [edi + 0x44], ebx
jne 0x49af94
mov ecx, ebx
mov eax, edi
mov dword [eax + 0x40], ebx
inc ecx
mov dword [eax + 0x44], edi
mov ebx, eax
mov eax, dword [eax + 0x3c]
test eax, eax
jne 0x49af64
mov ebx, dword [esp + 0x20]
cmp dword [ebx + 0x5c], eax
je 0x49af94
cmp ecx, dword [ebx + 0x5c]
jle 0x49af94
push str.too_many_terms_in_compound_SELECT
push esi
call fcn.004669cf
pop ecx
pop ecx
jmp 0x49be24
push dword [esp + 0x58]
mov edx, edi
mov ecx, esi
call fcn.00498769
mov edi, dword [esp + 0xac]
pop ecx
mov dword [esi + 0x1e4], edi
jmp 0x49be78
mov edx, dword [esp + 0x34]
mov ecx, eax
call fcn.0048817a
mov ecx, dword [esp + 0x34]
test eax, eax
jne 0x49afdd
mov eax, dword [esp + 0x20]
push 0
test byte [eax + 0x18], 0x20
pop eax
cmove ecx, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x2c], ecx
mov al, byte [edi + 6]
xor edx, edx
and al, 5
inc edx
cmp al, dl
jne 0x49b021
mov edx, dword [edi]
call fcn.0048817a
test eax, eax
jne 0x49b021
mov edx, dword [edi]
mov eax, 0xfffe
mov ecx, dword [esp + 0x20]
and word [edi + 6], ax
push ebx
call fcn.004858e9
mov dword [esp + 0x34], eax
mov dword [edi + 0x30], eax
mov dword [esp + 0x64], eax
mov eax, ebx
pop ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], eax
jmp 0x49b025
mov eax, dword [esp + 0x34]
test eax, eax
je 0x49b066
mov edx, eax
mov ecx, esi
call fcn.00497a70
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [esi + 0x48]
push 0xfffffffffffffff0
push ecx
mov ecx, dword [esp + 0x14]
mov dword [edx + 4], eax
inc dword [esi + 0x48]
mov eax, dword [edx]
push ebx
add eax, 2
push eax
push dword [edx + 4]
push 0x2a
pop edx
call fcn.00478d63
add esp, 0x14
mov dword [esp + 0x68], eax
mov dword [edi + 0x18], eax
jmp 0x49b06b
or dword [esp + 0x68], 0xffffffff
mov eax, dword [esp + 0x58]
cmp byte [eax], 9
jne 0x49b08d
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
push ebx
push dword [edx]
push dword [eax + 4]
push 0x2a
pop edx
call fcn.00478cdd
add esp, 0xc
mov ecx, dword [esp + 0xc]
call fcn.00478e01
movsd xmm0, qword [0x5971f0]
mov edx, edi
push eax
mov ecx, esi
mov dword [esp + 0xb4], eax
movsd qword [edi + 0x20], xmm0
call fcn.004985a1
pop ecx
mov ecx, dword [esp + 0xc]
cmp dword [edi + 8], ebx
jne 0x49b0d5
mov eax, dword [esp + 0x68]
test eax, eax
js 0x49b0d5
mov edx, eax
call fcn.0047930e
mov byte [eax], 0x2b
or word [edi + 6], 0x40
test byte [edi + 6], 1
je 0x49b134
mov eax, dword [esi + 0x48]
mov ecx, esi
mov dword [esp + 0x44], eax
inc eax
mov dword [esi + 0x48], eax
mov edx, dword [edi]
call fcn.00497a70
mov ecx, dword [esp + 0xc]
mov esi, eax
push ebx
push ebx
push dword [esp + 0x4c]
push 0x2a
pop edx
call fcn.00478cdd
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov edx, eax
mov dword [esp + 0x1c], eax
push 0xfffffffffffffff0
push esi
call fcn.004791da
mov esi, dword [esp + 0x44]
pop ecx
pop ecx
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 4]
test edx, edx
je 0x49b13e
imul eax, dword [ecx + 0x1c], 0x14
mov byte [eax + edx - 0x11], 8
jmp 0x49b13e
or dword [esp + 0x1c], 0xffffffff
or dword [esp + 0x44], 0xffffffff
mov edx, dword [esp + 0x30]
cmp dword [esp + 0x38], ebx
jne 0x49b37d
test edx, edx
jne 0x49b37d
cmp dword [esp + 0x64], ebx
je 0x49b15e
mov eax, dword [edi]
jmp 0x49b160
mov eax, ebx
mov edx, dword [esp + 0x10]
mov ecx, esi
push ebx
push ebx
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x5c]
call fcn.004a3259
add esp, 0x14
mov dword [esp + 0x24], eax
test eax, eax
je 0x49be20
movsd xmm1, qword [eax + 0x30]
movsd xmm0, qword [edi + 0x20]
comisd xmm0, xmm1
jbe 0x49b19b
movsd qword [edi + 0x20], xmm1
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x34], eax
test edx, edx
js 0x49b1bc
test eax, eax
jne 0x49b1bc
mov ecx, dword [esp + 0xc]
call fcn.004791ae
or dword [edi + 0x18], 0xffffffff
mov eax, dword [esp + 0x24]
mov cl, byte [eax + 8]
mov byte [esp + 0x17], cl
test cl, cl
je 0x49b34b
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0xc]
call fcn.0047930e
or dword [esp + 0x44], 0xffffffff
mov edx, eax
cmp byte [esp + 0x17], 2
jne 0x49b344
inc dword [esi + 0x4c]
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x2c], eax
lea ecx, [eax + 1]
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
lea edi, [eax + ecx]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x2c]
lea eax, [edi + eax*2]
mov dword [esi + 0x4c], eax
xor eax, eax
inc eax
mov dword [edx + 8], edi
mov edi, dword [esp + 0x18]
push eax
mov byte [edx], 7
mov dword [edx + 4], eax
mov edx, edi
push ecx
mov ecx, esi
call fcn.00487adf
mov eax, dword [esp + 0x14]
mov ecx, dword [edi]
add ecx, 3
push ebx
mov eax, dword [eax + 0x1c]
add eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x60], eax
dec eax
push eax
push dword [esp + 0x3c]
push 0x1b
pop edx
call fcn.00478cdd
add esp, 0x14
mov dword [esp + 0x5c], ebx
cmp dword [edi], ebx
mov edi, dword [esp + 0x40]
jle 0x49b2f6
mov eax, dword [esp + 0x2c]
mov ecx, ebx
mov edx, dword [esp + 0x50]
inc eax
mov edi, dword [esp + 0xc]
sub edx, eax
mov dword [esp + 0x28], eax
mov ebx, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 8]
mov edx, dword [edx + ecx]
mov ecx, esi
call fcn.00484dcb
mov esi, eax
mov ecx, edi
mov eax, dword [esp + 0x48]
add eax, ebx
push eax
push dword [esp + 0x58]
push ebx
push 0x4b
pop edx
call fcn.00478cdd
add esp, 0xc
or edx, 0xffffffff
mov ecx, edi
push 0xfffffffffffffffc
push esi
call fcn.004791da
pop ecx
pop ecx
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x49b2cf
imul eax, dword [edi + 0x1c], 0x14
mov byte [eax + ecx - 0x11], 0x80
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x1c]
inc eax
mov edx, dword [esp + 0x18]
add ecx, 0x14
mov esi, dword [esp + 0x3c]
inc ebx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x1c], ecx
cmp eax, dword [edx]
jl 0x49b284
mov edi, dword [esp + 0x40]
xor ebx, ebx
mov eax, dword [esp + 0x24]
xor edx, edx
mov ecx, dword [esp + 0xc]
inc edx
push ebx
push dword [eax + 0x14]
push ebx
call fcn.00478cdd
mov ecx, dword [esp + 0x18]
add esp, 0xc
push ebx
push dword [esp + 0x30]
push ebx
push 7
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x24]
add esp, 0xc
mov ecx, dword [esp + 0xc]
push dword [eax]
mov eax, dword [esp + 0x30]
push dword [esp + 0x54]
inc eax
push eax
push 0xd
pop edx
call fcn.00478cdd
add esp, 0xc
jmp 0x49b347
mov byte [edx], 0x95
mov eax, dword [esp + 0x24]
push dword [eax + 0x18]
mov edx, edi
mov ecx, esi
push dword [eax + 0x14]
push dword [esp + 0x60]
push dword [esp + 0x50]
push dword [esp + 0x44]
push ebx
push ebx
push dword [esp + 0x34]
call fcn.00497720
mov ecx, dword [esp + 0x44]
add esp, 0x20
call fcn.004a3b36
jmp 0x49bdb0
mov dword [esp + 0x54], ebx
mov dword [esp + 0x48], ebx
test edx, edx
je 0x49b403
mov eax, dword [edi]
mov edi, dword [eax + 8]
mov eax, dword [eax]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x40]
test eax, eax
jle 0x49b3c4
mov esi, dword [esp + 0x28]
add esi, 0x10
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
xor edi, edi
dec eax
mov word [ecx], di
lea ecx, [ecx + 0x14]
test eax, eax
jg 0x49b3af
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0xc]
mov eax, dword [edx + 8]
mov dword [esp + 0x28], eax
mov eax, dword [edx]
test eax, eax
jle 0x49b3e9
mov edx, dword [esp + 0x28]
add edx, 0x10
xor esi, esi
dec eax
mov word [edx], si
lea edx, [edx + 0x14]
test eax, eax
jg 0x49b3d8
mov esi, dword [esp + 0x3c]
movsd xmm0, qword [edi + 0x20]
movsd xmm1, qword [0x597168]
comisd xmm0, xmm1
jbe 0x49b410
movsd qword [edi + 0x20], xmm1
jmp 0x49b410
movsd xmm0, qword [0x597118]
movsd qword [edi + 0x20], xmm0
call fcn.00478e01
mov dword [esp + 0x2c], eax
lea edi, [esp + 0xb4]
xor eax, eax
push 8
pop ecx
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov dword [esp + 0xb8], eax
lea eax, [esp + 0x80]
mov dword [esp + 0xb4], esi
mov dword [esp + 0xc0], eax
test edi, edi
je 0x49b45b
mov eax, dword [edi]
inc eax
mov dword [esp + 0x8c], eax
jmp 0x49b462
mov dword [esp + 0x8c], ebx
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0xb4]
mov dword [esp + 0x90], edi
call fcn.00488525
mov edx, dword [esp + 0x34]
lea ecx, [esp + 0xb4]
call fcn.00488525
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x49b49f
mov edx, eax
lea ecx, [esp + 0xb4]
call fcn.004884f6
mov eax, dword [esp + 0x98]
mov dword [esp + 0x9c], eax
cmp dword [esp + 0xa4], ebx
jle 0x49b508
mov al, byte [esp + 0xd0]
mov esi, ebx
mov edi, ebx
or al, 8
lea ecx, [esp + 0xb4]
mov byte [esp + 0xd0], al
mov eax, dword [esp + 0xa0]
mov edx, dword [eax + esi]
mov edx, dword [edx + 0x10]
call fcn.00488525
mov al, byte [esp + 0xd0]
lea esi, [esi + 0x10]
and al, 0xf7
inc edi
mov byte [esp + 0xd0], al
cmp edi, dword [esp + 0xa4]
jl 0x49b4c1
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x36], bl
jne 0x49be0c
test edi, edi
je 0x49bb38
mov eax, dword [esi + 0x48]
mov edx, edi
mov dword [esp + 0x84], eax
mov ecx, esi
inc eax
mov dword [esi + 0x48], eax
call fcn.00497a70
mov edi, dword [esp + 0xc]
mov ecx, edi
push 0xfffffffffffffff0
push eax
push ebx
push dword [esp + 0x98]
mov dword [esp + 0x88], eax
push dword [esp + 0x94]
push 0x2b
pop edx
call fcn.00478d63
add esp, 0x14
mov dword [esp + 0xac], eax
inc dword [esi + 0x4c]
mov ecx, edi
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x70], eax
inc eax
mov dword [esp + 0x24], eax
inc eax
mov dword [esi + 0x4c], eax
call fcn.00478e01
inc dword [esi + 0x4c]
mov ecx, edi
mov dword [esp + 0x74], eax
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x1c], eax
call fcn.00478e01
mov ecx, dword [esi + 0x4c]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x50], eax
push ebx
push dword [esp + 0x28]
lea eax, [ecx + 1]
add ecx, dword [edx]
mov dword [esp + 0x84], eax
mov dword [esi + 0x4c], ecx
push ebx
lea eax, [ecx + 1]
mov dword [esp + 0x44], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, edi
push 7
pop edx
mov dword [esi + 0x4c], eax
call fcn.00478cdd
add esp, 0xc
mov ecx, edi
push ebx
push dword [esp + 0x74]
push ebx
push 7
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x3c]
add esp, 0xc
mov ecx, dword [esp + 0x7c]
mov eax, dword [eax]
dec eax
add eax, ecx
push eax
push ecx
push ebx
push 0xa
pop edx
mov ecx, edi
call fcn.00478cdd
add esp, 0xc
push ebx
push dword [esp + 0x54]
push dword [esp + 0x24]
push 2
pop edx
mov ecx, edi
call fcn.00478cdd
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x6c]
add esp, 0xc
mov ecx, esi
push ebx
push ebx
push ebx
push eax
push dword [esp + 0x5c]
call fcn.004a3259
add esp, 0x14
mov dword [esp + 0x28], eax
test eax, eax
je 0x49be20
mov eax, dword [esp + 0x60]
mov dword [esp + 0x68], eax
test eax, eax
jne 0x49b65b
mov edx, dword [esp + 0x40]
mov dword [esp + 0x6c], ebx
mov eax, dword [edx + 0x30]
mov dword [esp + 0x68], eax
jmp 0x49b85a
cmp dword [esp + 0x64], ebx
je 0x49b670
mov edx, dword [esp + 0x40]
test byte [edx + 6], 1
mov edx, str.DISTINCT
je 0x49b675
mov edx, str.GROUP_BY
mov ecx, esi
call fcn.00497b32
xor eax, eax
inc eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x60]
mov eax, dword [eax]
mov dword [esp + 0x48], eax
inc eax
mov dword [esp + 0x4c], eax
mov ecx, eax
mov dword [esp + 0x64], eax
mov edx, eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x30], eax
test eax, eax
jle 0x49b6c6
mov eax, dword [esp + 0x94]
add eax, 0xc
cmp dword [eax], edx
jl 0x49b6b9
inc ecx
inc edx
add eax, 0x18
dec dword [esp + 0x30]
jne 0x49b6b3
mov dword [esp + 0x64], ecx
mov edx, ecx
mov ecx, esi
call fcn.004885ab
mov ecx, esi
mov dword [esp + 0x30], eax
call fcn.00486cd4
mov edx, dword [esp + 0x60]
mov ecx, esi
push ebx
push dword [esp + 0x34]
call fcn.00487adf
mov eax, dword [esp + 0x38]
mov ecx, edi
add eax, dword [esp + 0x50]
push ebx
push eax
push dword [esp + 0x94]
push 0x37
pop edx
call fcn.00478cdd
add esp, 0x14
mov dword [esp + 0x54], ebx
cmp dword [esp + 0x98], ebx
jle 0x49b7a7
mov edx, dword [esp + 0x30]
mov eax, ebx
mov ecx, dword [esp + 0x4c]
add edx, ecx
mov dword [esp + 0x60], edx
mov dword [esp + 0x48], ebx
mov edi, dword [esp + 0x94]
cmp dword [edi + eax + 0xc], ecx
mov edi, dword [esp + 0xc]
jl 0x49b78a
mov ecx, dword [esp + 0x94]
push ebx
push edx
push dword [ecx + eax + 4]
mov edx, dword [ecx + eax]
push dword [ecx + eax + 8]
mov ecx, esi
call fcn.00486c4d
mov edx, dword [esp + 0x70]
add esp, 0x10
cmp edx, eax
je 0x49b778
push ebx
push edx
push eax
push 0xf
pop edx
mov ecx, edi
call fcn.00478cdd
mov edx, dword [esp + 0x6c]
add esp, 0xc
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x48]
inc ecx
inc edx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x60], edx
mov esi, dword [esp + 0x54]
add eax, 0x18
inc esi
mov dword [esp + 0x48], eax
cmp esi, dword [esp + 0x98]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
jl 0x49b72d
mov ecx, esi
call fcn.0048855b
mov esi, eax
mov ecx, edi
push esi
push dword [esp + 0x68]
push dword [esp + 0x38]
push 0x1f
pop edx
call fcn.00478cdd
add esp, 0xc
mov ecx, edi
push ebx
push esi
push dword [esp + 0x8c]
push 0x60
pop edx
call fcn.00478cdd
add esp, 0xc
mov edx, esi
mov esi, dword [esp + 0x3c]
mov ecx, esi
call fcn.00488577
push dword [esp + 0x64]
mov edx, dword [esp + 0x34]
call fcn.004885d6
pop ecx
mov ecx, dword [esp + 0x28]
call fcn.004a3b36
mov edx, dword [esi + 0x48]
mov ecx, esi
mov dword [esp + 0x54], edx
mov dword [esp + 0x88], edx
lea eax, [edx + 1]
mov dword [esi + 0x48], eax
call fcn.0048855b
push dword [esp + 0x64]
mov ecx, edi
mov dword [esp + 0x4c], eax
push eax
push edx
push 0x2c
pop edx
call fcn.00478cdd
add esp, 0xc
mov ecx, edi
push ebx
push dword [esp + 0x30]
push dword [esp + 0x8c]
push 0x46
pop edx
call fcn.00478cdd
add esp, 0xc
mov byte [esp + 0x81], 1
mov ecx, esi
call fcn.00486cd4
mov eax, dword [edi + 0x1c]
mov ecx, esi
mov dword [esp + 0x64], eax
call fcn.00486cd4
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x49b88d
push ebx
push dword [esp + 0x4c]
mov ecx, edi
push dword [esp + 0x8c]
push 0x3e
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x78]
add esp, 0xc
mov edx, dword [esp + 0x68]
mov ecx, ebx
mov dword [esp + 0x4c], ebx
cmp dword [edx], ebx
jle 0x49b906
mov ebx, dword [esp + 0x54]
test eax, eax
mov eax, dword [esp + 0x38]
je 0x49b8d3
add eax, ecx
push eax
push ecx
push ebx
push 0x1d
pop edx
mov ecx, edi
call fcn.00478cdd
mov ecx, dword [esp + 0x58]
add esp, 0xc
test ecx, ecx
jne 0x49b8f3
mov edx, dword [edi + 4]
test edx, edx
je 0x49b8f3
imul eax, dword [edi + 0x1c], 0x14
mov byte [eax + edx - 0x11], 0x20
jmp 0x49b8f3
add eax, ecx
mov byte [esp + 0x80], 1
mov edx, dword [edx + 8]
push eax
imul eax, ecx, 0x14
mov ecx, esi
mov edx, dword [eax + edx]
call fcn.00487931
pop ecx
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x68]
inc ecx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x4c], ecx
cmp ecx, dword [edx]
jl 0x49b89f
xor ebx, ebx
push 0xfffffffffffffffa
push dword [esp + 0x7c]
mov ecx, edi
push dword [edx]
push dword [esp + 0x44]
push dword [esp + 0x8c]
push 0x18
pop edx
call fcn.00478d63
mov eax, dword [edi + 0x1c]
add esp, 0x14
mov dword [esp + 0x78], eax
mov ecx, edi
inc eax
push eax
push ebx
push eax
push 0x19
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x74]
add esp, 0xc
mov edx, dword [esp + 0x38]
mov ecx, esi
push dword [eax]
push dword [esp + 0x80]
call fcn.00486d01
mov eax, dword [esp + 0x2c]
mov ecx, edi
push ebx
push dword [esp + 0x80]
inc eax
push eax
push 2
pop edx
call fcn.00478cdd
add esp, 0x14
mov ecx, edi
push ebx
push dword [esp + 0x30]
push dword [esp + 0x2c]
push 0x78
pop edx
call fcn.00478cdd
add esp, 0xc
mov ecx, edi
push ebx
push dword [esp + 0x54]
push dword [esp + 0x24]
push 2
pop edx
call fcn.00478cdd
mov edx, dword [esp + 0x84]
add esp, 0xc
test edx, edx
js 0x49b9b3
push dword [edi + 0x1c]
mov ecx, edi
call fcn.00479025
pop ecx
lea edx, [esp + 0x80]
mov ecx, esi
call fcn.0049a956
push ebx
push dword [esp + 0x74]
mov ecx, edi
push 1
push 7
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x78]
add esp, 0xc
test eax, eax
je 0x49b9f8
push ebx
push dword [esp + 0x68]
mov ecx, edi
push dword [esp + 0x8c]
push 0x51
pop edx
call fcn.00478cdd
add esp, 0xc
jmp 0x49ba0f
mov ecx, dword [esp + 0x28]
call fcn.004a3b36
mov edx, dword [esp + 0xac]
mov ecx, edi
call fcn.004791ae
mov esi, dword [esp + 0x24]
mov ecx, edi
push ebx
push dword [esp + 0x78]
lea eax, [esi + 1]
push eax
push 2
pop edx
call fcn.00478cdd
add esp, 0xc
xor edx, edx
inc edx
mov ecx, edi
push ebx
push dword [esp + 0x30]
push ebx
call fcn.00478cdd
mov edi, dword [edi + 0x1c]
add esp, 0xc
push ebx
push esi
mov esi, dword [esp + 0x14]
mov ecx, esi
push 1
push 7
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x30]
add esp, 0xc
inc eax
mov ecx, esi
push ebx
push ebx
push eax
push 3
pop edx
call fcn.00478cdd
mov edx, dword [esp + 0x80]
add esp, 0xc
mov ecx, esi
call fcn.00478e3d
mov esi, dword [esi + 0x1c]
push ebx
lea eax, [esi + 2]
push eax
push dword [esp + 0x78]
push 0x78
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x30]
add esp, 0xc
mov ecx, dword [esp + 0xc]
inc eax
push ebx
push ebx
push eax
push 3
pop edx
call fcn.00478cdd
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0x8c]
add esp, 0xc
call fcn.0049a905
mov edx, dword [esp + 0x5c]
inc esi
mov ecx, dword [esp + 0x3c]
push 8
push esi
call fcn.00487e23
push edi
mov edi, dword [esp + 0x4c]
mov edx, edi
push esi
push dword [esp + 0x68]
mov esi, dword [esp + 0x50]
mov ecx, esi
push dword [esp + 0x58]
push dword [esp + 0x4c]
push ebx
push ebx
push dword [edi]
call fcn.00497720
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x34]
inc eax
push ebx
push ebx
push eax
push 3
pop edx
call fcn.00478cdd
mov edx, dword [esp + 0x84]
add esp, 0x34
mov ecx, dword [esp + 0xc]
call fcn.00478e3d
lea edx, [esp + 0x80]
mov ecx, esi
call fcn.0049a82b
mov ecx, dword [esp + 0xc]
push ebx
push ebx
push dword [esp + 0x24]
push 3
pop edx
call fcn.00478cdd
add esp, 0xc
jmp 0x49bda3
mov edi, dword [esp + 0x40]
lea edx, [esp + 0x80]
mov ecx, edi
mov dword [esp + 0x70], ebx
call fcn.0049a135
mov dword [esp + 0x38], eax
test eax, eax
je 0x49bc78
mov edx, dword [eax + 0x44]
mov ecx, dword [esi]
call fcn.00496a6a
mov edx, dword [esp + 0x38]
mov ecx, eax
mov eax, dword [esi + 0x48]
mov dword [esp + 0x1c], eax
inc eax
mov dword [esi + 0x48], eax
mov eax, dword [edx + 0x14]
mov edx, ecx
mov dword [esp + 0x28], ecx
mov ecx, esi
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x48], eax
call fcn.0048dcf6
mov eax, dword [esp + 0x38]
mov ecx, esi
mov edx, dword [esp + 0x28]
push dword [eax]
push ebx
push dword [eax + 0x14]
call fcn.0048a70b
mov edx, dword [esp + 0x44]
add esp, 0xc
mov ecx, dword [edx + 0x10]
test ecx, ecx
je 0x49bbfc
mov edi, ebx
cmp byte [ecx + 0x2e], bl
jne 0x49bbc9
test edi, edi
je 0x49bbc7
mov eax, dword [ecx + 0x24]
cmp eax, dword [edi + 0x24]
jge 0x49bbc9
mov edi, ecx
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x49bbb6
mov dword [esp + 0x50], edi
test edi, edi
mov edi, dword [esp + 0x40]
je 0x49bbfc
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + 0x24]
cmp eax, dword [edx + 8]
jge 0x49bbfc
mov eax, dword [ecx + 0x28]
mov edx, ecx
mov ecx, esi
mov dword [esp + 0x48], eax
call fcn.0048e08a
mov dword [esp + 0x54], eax
push dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
push dword [esp + 0x4c]
push dword [esp + 0x24]
push 0x27
pop edx
call fcn.00478cdd
mov eax, dword [esp + 0x60]
add esp, 0xc
test eax, eax
je 0x49bc30
mov ecx, dword [esp + 0xc]
or edx, 0xffffffff
push 0xfffffffffffffff0
push eax
call fcn.004791da
pop ecx
pop ecx
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0xc]
push ebx
push dword [eax + 8]
push dword [esp + 0x24]
push 0x20
pop edx
call fcn.00478cdd
mov ecx, dword [esp + 0x18]
add esp, 0xc
push ebx
push ebx
push dword [esp + 0x24]
push 0x2d
pop edx
call fcn.00478cdd
mov edx, dword [esp + 0x44]
add esp, 0xc
mov ecx, esi
push dword [esp + 0x50]
call fcn.0049ab65
pop ecx
jmp 0x49bd61
mov ecx, edi
mov dword [esp + 0x1c], ebx
call fcn.0049a0d0
mov byte [esp + 0x17], al
test al, al
je 0x49bccd
mov eax, dword [edi]
mov ecx, dword [esp + 0x20]
push ebx
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov edx, dword [edx + 0x10]
call fcn.004858e9
mov edx, eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x20], edx
pop ecx
test edx, edx
je 0x49bccd
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x36], bl
jne 0x49bccd
mov eax, dword [edx + 8]
cmp byte [esp + 0x17], 1
setne cl
mov byte [eax + 0xc], cl
mov eax, dword [edx + 8]
mov eax, dword [eax]
mov byte [eax], 0x98
lea edx, [esp + 0x80]
mov ecx, esi
call fcn.0049a82b
mov al, byte [esp + 0x17]
mov ecx, esi
mov edx, dword [esp + 0x10]
push ebx
movzx eax, al
push eax
push ebx
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x5c]
call fcn.004a3259
add esp, 0x14
mov dword [esp + 0x28], eax
test eax, eax
jne 0x49bd18
mov ebx, dword [esp + 0x20]
mov ecx, ebx
mov edx, dword [esp + 0x70]
call fcn.00485dd4
jmp 0x49be24
lea edx, [esp + 0x80]
mov ecx, esi
call fcn.0049a956
cmp dword [esp + 0x1c], ebx
jne 0x49bd4a
cmp byte [esp + 0x17], bl
je 0x49bd4a
mov eax, dword [esp + 0x28]
xor edx, edx
mov ecx, dword [esp + 0xc]
inc edx
push ebx
push dword [eax + 0x18]
push ebx
call fcn.00478cdd
add esp, 0xc
mov ecx, dword [esp + 0x28]
call fcn.004a3b36
lea edx, [esp + 0x80]
mov ecx, esi
call fcn.0049a905
mov edx, dword [esp + 0x5c]
mov ecx, esi
push 8
push dword [esp + 0x30]
mov dword [esp + 0x3c], ebx
call fcn.00487e23
mov eax, dword [esp + 0x34]
mov edx, edi
push eax
push eax
push dword [esp + 0x68]
mov ecx, esi
push 0xffffffffffffffff
push ebx
push ebx
push ebx
push dword [edi]
call fcn.00497720
mov edx, dword [esp + 0x98]
add esp, 0x28
mov ecx, dword [esp + 0x20]
call fcn.00485dd4
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0xc]
call fcn.00478e3d
cmp dword [esp + 0x44], 0
jl 0x49bdc3
mov edx, str.DISTINCT
mov ecx, esi
call fcn.00497b32
cmp dword [esp + 0x34], 0
je 0x49bdf0
mov edx, str.ORDER_BY
mov ecx, esi
call fcn.00497b32
mov eax, dword [esp + 0x18]
mov edx, edi
push dword [esp + 0x58]
mov ecx, esi
push dword [eax]
push dword [esp + 0x14]
call fcn.00497be7
add esp, 0xc
mov edx, dword [esp + 0xb0]
mov ecx, dword [esp + 0xc]
call fcn.00478e3d
mov edx, ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x6c], edx
jmp 0x49be27
mov ebx, eax
jmp 0x49be24
mov ebx, dword [esp + 0x20]
xor edx, edx
inc edx
jmp 0x49be2f
xor edx, edx
mov ebx, eax
inc edx
jmp 0x49be2b
mov ebx, dword [esp + 0x20]
xor edx, edx
inc edx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0xa8]
mov dword [esi + 0x1e4], edi
test edx, edx
jne 0x49be54
mov edx, dword [esp + 0x58]
cmp byte [edx], 5
jne 0x49be54
push ecx
mov edx, eax
mov ecx, esi
call fcn.004980d1
pop ecx
mov edx, dword [esp + 0x94]
mov ecx, ebx
call fcn.00464d37
mov edx, dword [esp + 0xa0]
mov ecx, ebx
call fcn.00464d37
mov eax, dword [esp + 0x6c]
jmp 0x49be78
mov eax, ecx
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0052b1ec
mov esp, ebp
pop ebp
ret