Function at 0x46afe2
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xf4
push ebx
mov ebx, ecx
mov dword [esp + 0x48], 1
push esi
xor ecx, ecx
mov dword [esp + 0x3c], ebx
push edi
mov eax, dword [ebx + 0x1a0]
mov edi, edx
mov esi, dword [ebx]
mov dword [esp + 0xb8], eax
mov eax, dword [ebx + 0x1a4]
mov dword [ebx + 0x1a0], eax
inc eax
mov dword [esp + 0x54], edi
mov dword [esp + 0x38], ecx
mov dword [ebx + 0x1a4], eax
mov dword [esp + 0x24], esi
test edi, edi
je 0x46c230
cmp byte [esi + 0x45], cl
jne 0x46c230
cmp dword [ebx + 0x24], ecx
jne 0x46c230
push ecx
push ecx
push ecx
push 0x15
pop edx
mov ecx, ebx
call fcn.00457946
add esp, 0xc
test eax, eax
jne 0x46c230
push 0x30
push eax
lea eax, [esp + 0x90]
push eax
call fcn.0049ef70
mov eax, dword [ebp + 8]
add esp, 0xc
cmp byte [eax], 8
ja 0x46b090
mov edx, dword [edi + 0x2c]
mov ecx, esi
call fcn.00452067
and dword [edi + 0x2c], 0
and dword [edi + 8], 0xfffffffe
push 0
mov edx, edi
mov ecx, ebx
call fcn.0046ab07
pop ecx
push 0x20
lea eax, [esp + 0x6c]
push 0
push eax
call fcn.0049ef70
mov eax, dword [edi + 0x2c]
add esp, 0xc
cmp dword [ebx + 0x24], 0
mov edx, dword [edi + 0x1c]
mov dword [esp + 0x68], eax
mov dword [esp + 0x1c], edx
jne 0x46c228
cmp byte [esi + 0x45], 0
jne 0x46c228
mov ecx, dword [edi + 8]
xor esi, esi
shr ecx, 3
and ecx, 1
mov dword [esp + 0x20], ecx
cmp dword [edi + 0x30], esi
jne 0x46b198
cmp esi, dword [edx]
jge 0x46b198
imul eax, esi, 0x50
mov dword [esp + 0x14], eax
mov edx, dword [eax + edx + 0x1c]
test edx, edx
je 0x46b189
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov eax, dword [ecx + eax + 0x18]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x14], eax
movsx eax, word [eax + 0x2a]
mov dword [esp + 0x18], eax
mov eax, dword [edx]
mov eax, dword [eax]
cmp dword [esp + 0x18], eax
jne 0x46b1d2
mov eax, dword [edx + 8]
mov edx, edi
shr eax, 3
and eax, 1
push eax
push ecx
push esi
mov ecx, ebx
mov dword [esp + 0x20], eax
call fcn.00469855
add esp, 0xc
test eax, eax
je 0x46b163
cmp dword [esp + 0x14], 0
je 0x46b160
xor eax, eax
inc eax
push 8
mov dword [esp + 0x24], eax
pop eax
or dword [edi + 8], eax
or esi, 0xffffffff
mov eax, dword [esp + 0x24]
mov edx, dword [edi + 0x1c]
mov dword [esp + 0x1c], edx
cmp byte [eax + 0x45], 0
jne 0x46c214
mov eax, dword [ebp + 8]
cmp byte [eax], 8
jbe 0x46b18d
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x68], eax
jmp 0x46b18d
mov edx, dword [esp + 0x1c]
inc esi
cmp dword [edi + 0x30], 0
je 0x46b0e7
mov ecx, ebx
call fcn.00468189
mov esi, eax
mov dword [esp + 0x2c], esi
test esi, esi
je 0x46b1eb
cmp dword [edi + 0x30], 0
je 0x46b240
push dword [ebp + 8]
mov edx, edi
mov ecx, ebx
call fcn.00468694
pop ecx
mov ecx, dword [esp + 0xb8]
mov dword [ebx + 0x1a0], ecx
jmp 0x46c233
push eax
mov eax, dword [esp + 0x18]
push dword [eax]
push dword [esp + 0x20]
push str.expected__d_columns_for__s_but_got__d
push ebx
call fcn.0042e402
add esp, 0x14
mov esi, dword [esp + 0x24]
xor eax, eax
inc eax
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0xb8]
mov dword [ebx + 0x1a0], ecx
test eax, eax
jne 0x46b21b
mov eax, dword [ebp + 8]
cmp byte [eax], 9
jne 0x46b21b
push dword [esp + 0x38]
mov ecx, ebx
call fcn.00467c19
pop ecx
mov edx, dword [esp + 0xa4]
mov ecx, esi
call fcn.0042c1c6
mov edx, dword [esp + 0xb0]
mov ecx, esi
call fcn.0042c1c6
mov eax, dword [esp + 0x50]
jmp 0x46c233
mov ecx, dword [esp + 0x1c]
xor eax, eax
mov dword [esp + 0x3c], eax
cmp dword [ecx], eax
jle 0x46b4da
imul eax, eax, 0x50
add eax, 8
add ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x40]
or eax, dword [ecx + 0x44]
jne 0x46b282
push dword [ecx + 4]
push 0x5066b0
push dword [ecx + 8]
mov ecx, ebx
push 0x14
pop edx
call fcn.00457946
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x30], eax
test eax, eax
je 0x46b4c5
cmp dword [ecx + 0x18], 0
je 0x46b2b8
test byte [ecx + 0x28], 0x10
jne 0x46b4c5
push dword [ecx + 0x18]
push dword [ecx + 0x1c]
mov ecx, esi
push 0xe
pop edx
call fcn.0044337d
pop ecx
pop ecx
jmp 0x46b4c5
mov ecx, edi
call fcn.00451155
mov edx, dword [esp + 0x10]
add dword [ebx + 0x19c], eax
test byte [edx + 0x24], 0x20
jne 0x46b2e6
push dword [edx + 0x30]
mov edx, dword [esp + 0x34]
mov ecx, ebx
push dword [edi + 0x20]
call fcn.00469d85
mov edx, dword [esp + 0x18]
pop ecx
pop ecx
cmp dword [esp + 0x3c], 0
jne 0x46b3bd
mov eax, dword [esp + 0x1c]
cmp dword [eax], 1
je 0x46b304
test byte [eax + 0x7c], 0xa
je 0x46b3bd
test byte [edi + 8], 2
jne 0x46b3bd
mov eax, dword [esp + 0x24]
mov ecx, 0x100
test word [eax + 0x40], cx
jne 0x46b3bd
mov ecx, esi
call fcn.004436d4
mov ecx, dword [esp + 0x2c]
mov edi, eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [ebx + 0x2c], eax
lea esi, [edi + 1]
mov dword [edx + 0x1c], eax
push esi
push 0
push eax
push 0xf
pop edx
call fcn.004432f9
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov dword [ecx + 0x18], esi
mov esi, ecx
lea ecx, [esp + 0xbc]
push dword [esi + 0x1c]
push 0xd
pop edx
call fcn.00466581
mov al, byte [ebx + 0x1a4]
add esp, 4
mov edx, dword [esp + 0x30]
mov byte [esi + 0x2c], al
mov eax, ecx
mov ecx, ebx
push eax
call fcn.0046afe2
mov eax, dword [esp + 0x34]
pop ecx
mov ecx, dword [esi + 0x10]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0xc8]
or dword [esi + 0x28], 0x10
mov edx, dword [esi + 0x1c]
mov dword [esi + 0x20], eax
mov esi, dword [esp + 0x2c]
mov ecx, esi
call fcn.0044350b
mov edx, edi
mov ecx, esi
call fcn.00443817
mov edi, dword [esp + 0x54]
jmp 0x46b4a3
xor eax, eax
mov ecx, esi
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x2c]
inc eax
push eax
push 0
mov dword [ebx + 0x2c], eax
mov dword [edx + 0x1c], eax
push 0x38
pop edx
call fcn.0044337d
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
inc eax
test byte [ecx + 0x28], 8
mov dword [ecx + 0x18], eax
jne 0x46b400
push 0x14
pop edx
mov ecx, esi
call fcn.0044335b
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], eax
mov edx, ecx
mov ecx, dword [esp + 0x1c]
call fcn.0046af7d
test eax, eax
je 0x46b426
push dword [eax + 0x30]
mov ecx, dword [esp + 0x14]
push dword [ecx + 0x30]
mov ecx, esi
push 0x6c
pop edx
call fcn.0044337d
pop ecx
jmp 0x46b45f
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0xbc]
push dword [eax + 0x30]
push 0xc
pop edx
call fcn.00466581
mov ecx, dword [esp + 0x14]
add esp, 4
mov al, byte [ebx + 0x1a4]
mov edx, dword [esp + 0x30]
mov byte [ecx + 0x2c], al
lea eax, [esp + 0xbc]
push eax
mov ecx, ebx
call fcn.0046afe2
mov eax, dword [esp + 0x14]
pop ecx
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x30]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x46b484
mov edx, eax
mov ecx, esi
call fcn.00443817
mov eax, dword [esp + 0x10]
mov ecx, esi
push dword [eax + 0x1c]
push 0x34
pop edx
call fcn.00443369
mov edx, dword [esp + 0x18]
pop ecx
push eax
mov ecx, esi
call fcn.004437cf
pop ecx
mov ecx, ebx
call fcn.00455674
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x45], 0
jne 0x46b1eb
mov ecx, edi
call fcn.00451155
sub dword [ebx + 0x19c], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x3c], eax
cmp eax, dword [ecx]
jl 0x46b252
mov eax, dword [edi + 0x20]
xor ecx, ecx
mov edx, dword [edi]
inc ecx
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x24]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x3c], eax
mov al, byte [edi + 8]
and al, cl
mov dword [esp + 0x38], edx
mov byte [esp + 0xf], al
mov byte [esp + 0xbc], al
mov eax, dword [edi + 8]
and al, 9
cmp al, cl
jne 0x46b53b
mov ecx, dword [esp + 0x68]
push 0xffffffffffffffff
call fcn.00455069
pop ecx
test eax, eax
jne 0x46b53b
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x24]
and dword [edi + 8], 0xfffffffe
push eax
call fcn.004519b8
pop ecx
mov dword [esp + 0x10], eax
mov dword [edi + 0x24], eax
mov edx, dword [esp + 0x68]
test edx, edx
je 0x46b58d
mov eax, dword [esp + 0x38]
mov ecx, ebx
push dword [eax]
push 0
call fcn.004675c2
mov edx, dword [ebx + 0x28]
mov ecx, eax
push 0xfffffffffffffffb
push ecx
mov dword [esp + 0x80], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
mov eax, dword [esp + 0x48]
push 0
mov ecx, dword [eax]
mov eax, dword [esp + 0x7c]
inc ecx
mov eax, dword [eax]
add eax, ecx
mov ecx, esi
push eax
push edx
push 0x6e
pop edx
call fcn.00443422
add esp, 0x1c
mov dword [esp + 0x7c], eax
jmp 0x46b592
or dword [esp + 0x7c], 0xffffffff
mov eax, dword [ebp + 8]
cmp byte [eax], 0xc
jne 0x46b5af
mov ecx, dword [esp + 0x38]
push dword [ecx]
mov ecx, esi
push dword [eax + 8]
push 0x6e
pop edx
call fcn.0044337d
pop ecx
pop ecx
mov ecx, esi
call fcn.00443528
mov ecx, 0x4000
mov dword [esp + 0xdc], eax
test dword [edi + 8], ecx
jne 0x46b5d0
mov ecx, 0x140
mov word [edi + 6], cx
push eax
mov edx, edi
mov ecx, ebx
call fcn.00468198
cmp dword [edi + 0xc], 0
pop ecx
jne 0x46b5fb
mov edx, dword [esp + 0x7c]
test edx, edx
js 0x46b5fb
push 0x6f
mov ecx, esi
call fcn.004437c0
or byte [esp + 0x88], 1
pop ecx
test byte [edi + 8], 1
je 0x46b658
mov esi, dword [ebx + 0x28]
push 0xfffffffffffffffb
push ecx
push 0
lea eax, [esi + 1]
mov dword [esp + 0xcc], esi
mov dword [ebx + 0x28], eax
mov ecx, ebx
mov edx, dword [edi]
push 0
call fcn.004675c2
add esp, 0xc
push eax
push 0
push 0
push esi
mov esi, dword [esp + 0x40]
mov ecx, esi
push 0x6e
pop edx
call fcn.00443422
add esp, 0x14
mov dword [esp + 0xc4], eax
mov ecx, esi
push 8
pop eax
mov edx, eax
call fcn.004437ff
mov byte [esp + 0xbd], 3
jmp 0x46b660
mov byte [esp + 0xbd], 0
cmp dword [esp + 0x20], 0
mov eax, dword [esp + 0x10]
jne 0x46b779
test eax, eax
jne 0x46b779
xor ecx, ecx
mov eax, 0x100
cmp byte [esp + 0xf], cl
mov edx, 0x4000
cmovne ecx, eax
mov ax, word [edi + 8]
and ax, dx
mov edx, dword [esp + 0x1c]
or cx, ax
movsx eax, word [edi + 6]
push eax
movzx ecx, cx
push ecx
push dword [edi]
mov ecx, ebx
push dword [esp + 0x74]
push dword [esp + 0x38]
call fcn.0047732f
mov ecx, eax
add esp, 0x14
mov dword [esp + 0x18], ecx
test ecx, ecx
je 0x46c220
call fcn.00473480
cmp ax, word [edi + 6]
jge 0x46b6d7
call fcn.00473480
mov word [edi + 6], ax
cmp byte [esp + 0xf], 0
je 0x46b6f3
call fcn.00473485
test eax, eax
je 0x46b6f3
call fcn.00473485
mov byte [esp + 0xbd], al
mov eax, dword [esp + 0x68]
mov dword [esp + 0x14], eax
test eax, eax
je 0x46b726
call fcn.0047348a
mov edx, eax
mov dword [esp + 0x6c], edx
call fcn.0047348f
mov byte [esp + 0x85], al
mov eax, dword [esp + 0x14]
push 0
cmp edx, dword [eax]
pop edx
cmove eax, edx
mov dword [esp + 0x68], eax
mov edx, dword [esp + 0x7c]
test edx, edx
js 0x46b73d
test eax, eax
jne 0x46b73d
mov ecx, esi
call fcn.00443953
mov ecx, dword [esp + 0x18]
call fcn.00473498
push eax
call fcn.00473494
push eax
push dword [ebp + 8]
lea eax, [esp + 0xc8]
mov edx, edi
push eax
lea eax, [esp + 0x78]
mov ecx, ebx
push eax
push 0xffffffffffffffff
push dword [esp + 0x50]
call fcn.00466e9d
mov ecx, dword [esp + 0x34]
add esp, 0x1c
call fcn.00477b60
jmp 0x46c1a1
and dword [esp + 0x48], 0
and dword [esp + 0x14], 0
test eax, eax
je 0x46b7c8
mov edx, dword [edi]
mov ecx, dword [edx]
test ecx, ecx
jle 0x46b7a3
add edx, 0x1e
xor esi, esi
dec ecx
mov word [edx], si
lea edx, [edx + 0x18]
test ecx, ecx
jg 0x46b792
mov esi, dword [esp + 0x2c]
mov ecx, dword [eax]
test ecx, ecx
jle 0x46b7bd
lea edx, [eax + 0x1e]
xor ebx, ebx
dec ecx
mov word [edx], bx
lea edx, [edx + 0x18]
test ecx, ecx
jg 0x46b7ac
mov ebx, dword [esp + 0x40]
push 0x42
pop ecx
cmp word [edi + 6], cx
jle 0x46b7ce
jmp 0x46b7ca
xor ecx, ecx
mov word [edi + 6], cx
mov edx, dword [esp + 0x68]
mov ecx, eax
push 0xffffffffffffffff
call fcn.00455069
pop ecx
xor ecx, ecx
test eax, eax
push 1
pop eax
cmove ecx, eax
mov dword [esp + 0x44], ecx
mov ecx, esi
call fcn.00443528
push 0x20
mov dword [esp + 0x34], eax
lea eax, [esp + 0xe4]
push 0
push eax
call fcn.0049ef70
mov eax, dword [esp + 0x28]
add esp, 0xc
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xe4], eax
lea eax, [esp + 0x88]
mov dword [esp + 0xec], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0xe0], ebx
mov dword [esp + 0x98], eax
test ecx, ecx
je 0x46b847
mov eax, dword [ecx]
mov dword [esp + 0x94], eax
jmp 0x46b84f
and dword [esp + 0x94], 0
mov edx, dword [esp + 0x38]
mov dword [esp + 0xa0], ecx
lea ecx, [esp + 0xe0]
call fcn.00455576
mov edx, dword [esp + 0x68]
lea ecx, [esp + 0xe0]
call fcn.00455576
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x46b8ad
mov eax, dword [esp + 0x10]
test eax, eax
je 0x46b8a1
lea ecx, [edi + 0x20]
push ecx
push edx
mov edx, eax
mov ecx, ebx
call fcn.0046af3d
mov eax, dword [edi + 0x20]
mov edx, dword [esp + 0x44]
pop ecx
pop ecx
mov dword [esp + 0x28], eax
lea ecx, [esp + 0xe0]
call fcn.0045553b
and dword [esp + 0x18], 0
cmp dword [esp + 0xb4], 0
mov edx, dword [esp + 0xa8]
mov dword [esp + 0xac], edx
jle 0x46b937
mov ax, word [esp + 0xfc]
xor edi, edi
mov esi, dword [esp + 0x18]
push 8
pop ebx
or ax, bx
lea ecx, [esp + 0xe0]
mov word [esp + 0xfc], ax
mov eax, dword [esp + 0xb0]
mov edx, dword [edi + eax]
mov edx, dword [edx + 0x14]
call fcn.00455576
mov ax, word [esp + 0xfc]
lea edi, [edi + 0x10]
mov ecx, 0xfff7
and ax, cx
inc esi
mov word [esp + 0xfc], ax
cmp esi, dword [esp + 0xb4]
jl 0x46b8db
mov edx, dword [esp + 0xa8]
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x2c]
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x45], 0
jne 0x46b1eb
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x46bf12
mov eax, dword [ebx + 0x28]
push edx
mov dword [esp + 0x90], eax
mov edx, ecx
inc eax
mov ecx, ebx
push 0
mov dword [ebx + 0x28], eax
call fcn.004675c2
push 0xfffffffffffffffb
push eax
push 0
push dword [esp + 0xa8]
mov ecx, esi
mov dword [esp + 0xec], eax
push dword [esp + 0xa4]
push 0x6f
pop edx
call fcn.00443422
mov dword [esp + 0xf4], eax
add esp, 0x1c
mov eax, dword [ebx + 0x2c]
mov ecx, esi
inc eax
mov dword [esp + 0x4c], eax
inc eax
mov dword [esp + 0x20], eax
inc eax
mov dword [ebx + 0x2c], eax
call fcn.00443528
inc dword [ebx + 0x2c]
mov ecx, esi
mov dword [esp + 0x64], eax
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x18], eax
call fcn.00443528
mov ecx, dword [ebx + 0x2c]
mov edx, dword [esp + 0x10]
push dword [esp + 0x20]
mov dword [esp + 0x38], eax
lea eax, [ecx + 1]
add ecx, dword [edx]
mov dword [esp + 0x5c], eax
mov dword [ebx + 0x2c], ecx
push 0
lea eax, [ecx + 1]
mov dword [esp + 0x64], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, esi
push 0x38
pop edx
mov dword [ebx + 0x2c], eax
call fcn.0044337d
push dword [esp + 0x54]
mov ecx, esi
push 0
push 0x38
pop edx
call fcn.0044337d
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov ecx, dword [esp + 0x68]
dec eax
add eax, ecx
push eax
push ecx
push 0
push 0x3b
pop edx
mov ecx, esi
call fcn.004432f9
add esp, 0x1c
mov ecx, esi
push dword [esp + 0x34]
push dword [esp + 0x1c]
push 0xe
pop edx
call fcn.0044337d
push 0
push 0x40
cmp dword [esp + 0x54], 0
mov ecx, 0x240
mov edx, dword [esp + 0x2c]
pop eax
cmovne eax, ecx
mov ecx, ebx
movzx eax, ax
push eax
push 0
push dword [esp + 0x24]
push dword [esp + 0x40]
call fcn.0047732f
mov edx, eax
add esp, 0x1c
mov dword [esp + 0x60], edx
test edx, edx
je 0x46b1eb
mov ecx, edx
call fcn.0047348a
mov ecx, dword [esp + 0x10]
cmp eax, dword [ecx]
jne 0x46ba9b
xor edi, edi
mov dword [esp + 0x50], edi
jmp 0x46bc4d
cmp byte [esp + 0xf], 0
je 0x46baad
test byte [edi + 8], 1
mov edx, str.DISTINCT
je 0x46bab2
mov edx, str.GROUP_BY
mov ecx, ebx
call fcn.00467671
cmp dword [esp + 0xa8], 0
mov esi, dword [esp + 0x10]
mov dword [esp + 0x50], 1
mov eax, dword [esi]
mov edi, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x48], eax
jle 0x46bb14
mov ebx, dword [esp + 0xa4]
mov esi, dword [esp + 0xa8]
add ebx, 0xc
cmp dword [ebx], edx
lea eax, [edi + 1]
lea ebx, [ebx + 0x18]
cmovl eax, edi
mov edi, eax
lea eax, [edx + 1]
cmovl eax, edx
mov edx, eax
sub esi, 1
jne 0x46baee
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x48], edi
mov edx, edi
mov ecx, ebx
call fcn.0045560c
mov ecx, ebx
mov dword [esp + 0x28], eax
call fcn.00453870
push 0
push 0
push dword [esp + 0x30]
mov edx, esi
mov ecx, ebx
call fcn.004547b7
mov ecx, dword [esp + 0xb4]
xor eax, eax
add esp, 0xc
mov dword [esp + 0x40], eax
test ecx, ecx
jle 0x46bb98
mov edi, dword [esp + 0x14]
xor esi, esi
mov edx, dword [esp + 0xa4]
cmp dword [esi + edx + 0xc], edi
jl 0x46bb88
mov eax, dword [esp + 0x28]
mov ecx, ebx
add eax, edi
push eax
push dword [esi + edx + 4]
push dword [esi + edx + 8]
mov edx, dword [esi + edx]
call fcn.0045383e
mov ecx, dword [esp + 0xb4]
add esp, 0xc
mov eax, dword [esp + 0x40]
inc edi
inc eax
add esi, 0x18
mov dword [esp + 0x40], eax
cmp eax, ecx
jl 0x46bb53
mov edi, dword [esp + 0x48]
mov ecx, ebx
call fcn.004555aa
mov ecx, dword [esp + 0x2c]
mov esi, eax
push esi
push edi
push dword [esp + 0x30]
push 0x65
pop edx
call fcn.004432f9
mov ecx, dword [esp + 0x38]
add esp, 0xc
push esi
push dword [esp + 0x90]
push 0x7f
pop edx
call fcn.0044337d
mov edx, esi
mov ecx, ebx
call fcn.004555c9
mov esi, dword [esp + 0x50]
mov edx, dword [esp + 0x30]
push esi
call fcn.00455642
mov ecx, dword [esp + 0x6c]
add esp, 0xc
call fcn.00477b60
mov edx, dword [ebx + 0x28]
mov ecx, ebx
mov dword [esp + 0x48], edx
mov dword [esp + 0x90], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
call fcn.004555aa
push esi
mov esi, dword [esp + 0x30]
mov ecx, esi
push eax
push edx
push 0x71
pop edx
mov dword [esp + 0x20], eax
call fcn.004432f9
add esp, 0xc
mov ecx, esi
push dword [esp + 0x30]
push dword [esp + 0x90]
push 0x23
pop edx
call fcn.0044337d
pop ecx
pop ecx
mov ecx, ebx
mov byte [esp + 0x89], 1
call fcn.00453870
mov edx, dword [esp + 0x60]
xor edi, edi
inc edi
cmp dword [esp + 0x44], 0
je 0x46bc7d
mov eax, dword [esp + 0x24]
test byte [eax + 0x40], 4
jne 0x46bc7d
test edi, edi
jne 0x46bc6d
mov ecx, edx
call fcn.00476ae7
test eax, eax
je 0x46bc7d
mov edx, dword [esp + 0x7c]
mov ecx, esi
and dword [esp + 0x68], 0
call fcn.00443953
mov ecx, esi
call fcn.004436d4
mov ecx, ebx
mov dword [esp + 0x40], eax
call fcn.00453870
test edi, edi
je 0x46bcaf
push dword [esp + 0x48]
mov ecx, esi
push dword [esp + 0x18]
push dword [esp + 0x94]
push 0x7b
pop edx
call fcn.004432f9
add esp, 0xc
mov edi, dword [esp + 0x10]
xor eax, eax
mov dword [esp + 0x14], eax
cmp dword [edi], eax
jle 0x46bd10
lea ecx, [edi + 8]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x5c]
add edx, eax
cmp dword [esp + 0x50], 0
push edx
je 0x46bce6
push eax
push dword [esp + 0x50]
mov ecx, esi
push 0x63
pop edx
call fcn.004432f9
add esp, 0xc
jmp 0x46bcf8
mov byte [esp + 0x8c], 1
mov edx, dword [ecx]
mov ecx, ebx
call fcn.004546c5
pop ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
inc eax
add ecx, 0x18
mov dword [esp + 0x14], eax
mov dword [esp + 0x44], ecx
cmp eax, dword [edi]
jl 0x46bcc4
mov ecx, dword [esp + 0xd4]
push 0xfffffffffffffffb
call fcn.004675b9
push eax
push dword [edi]
mov ecx, esi
push dword [esp + 0x68]
push dword [esp + 0x68]
push 0x62
pop edx
call fcn.00443422
add esp, 0x14
mov ecx, esi
call fcn.004436d4
mov edi, dword [esp + 0x2c]
mov esi, eax
mov ecx, edi
lea eax, [esi + 1]
push eax
push 0
push eax
push 0x12
pop edx
call fcn.004432f9
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov edx, dword [esp + 0x5c]
mov ecx, ebx
push dword [eax]
push dword [esp + 0x5c]
call fcn.004538ba
push dword [esp + 0x6c]
mov eax, dword [esp + 0x2c]
mov ecx, edi
inc eax
push eax
push 0xe
pop edx
call fcn.0044337d
push dword [esp + 0x40]
mov ecx, edi
push dword [esp + 0x34]
push 0x2e
pop edx
call fcn.0044337d
push dword [esp + 0x4c]
mov ecx, edi
push dword [esp + 0x34]
push 0xe
pop edx
call fcn.0044337d
mov edx, esi
mov esi, edi
mov ecx, esi
call fcn.00443817
lea edx, [esp + 0xa8]
mov ecx, ebx
call fcn.0046ac4c
push dword [esp + 0x6c]
mov ecx, esi
push 1
push 0x38
pop edx
call fcn.0044337d
add esp, 0x28
cmp dword [esp + 0x50], 0
je 0x46bdf0
push dword [esp + 0x40]
mov ecx, esi
push dword [esp + 0x90]
push 3
pop edx
call fcn.0044337d
pop ecx
pop ecx
jmp 0x46be07
mov ecx, dword [esp + 0x60]
call fcn.00477b60
mov edx, dword [esp + 0xd8]
mov ecx, esi
call fcn.00443953
push dword [esp + 0x64]
mov eax, dword [esp + 0x24]
mov ecx, esi
inc eax
push eax
push 0xe
pop edx
call fcn.0044337d
mov edx, dword [esp + 0x38]
mov ecx, esi
call fcn.00443392
mov ecx, esi
call fcn.004436d4
push dword [esp + 0x28]
mov edi, eax
push 1
push 0x38
pop edx
call fcn.0044337d
mov eax, dword [esp + 0x30]
mov ecx, esi
inc eax
push eax
push 0x34
pop edx
call fcn.00443369
mov edx, dword [esp + 0x78]
add esp, 0x14
mov ecx, esi
call fcn.0044356a
call fcn.004436d4
mov ecx, dword [esp + 0x2c]
mov esi, eax
lea eax, [esi + 2]
push eax
push dword [esp + 0x50]
push 0x2e
pop edx
call fcn.0044337d
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
inc eax
push eax
push 0x34
pop edx
call fcn.00443369
add esp, 0xc
lea edx, [esp + 0x88]
mov ecx, ebx
call fcn.0046abf5
push 0x10
inc esi
push esi
push dword [esp + 0x44]
push ebx
call fcn.00454c2f
push edi
mov edi, dword [esp + 0x68]
lea eax, [esp + 0xd0]
push esi
push dword [ebp + 8]
mov edx, edi
mov ecx, ebx
push eax
lea eax, [esp + 0x88]
push eax
push 0xffffffffffffffff
push dword [edi]
call fcn.00466e9d
mov eax, dword [esp + 0x4c]
add esp, 0x2c
mov esi, dword [esp + 0x2c]
inc eax
mov ecx, esi
push eax
push 0x34
pop edx
call fcn.00443369
mov edx, dword [esp + 0x38]
pop ecx
mov ecx, esi
call fcn.0044356a
lea edx, [esp + 0x88]
mov ecx, ebx
call fcn.0046ab5f
push dword [esp + 0x18]
mov ecx, esi
push 0x34
pop edx
call fcn.00443369
pop ecx
jmp 0x46c196
and dword [esp + 0x4c], 0
lea edx, [esp + 0x88]
mov ecx, edi
call fcn.00469ea8
mov dword [esp + 0x20], eax
test eax, eax
je 0x46c061
mov ecx, dword [ebx]
mov edx, dword [eax + 0x48]
call fcn.00465f4c
mov edx, dword [esp + 0x20]
mov ecx, eax
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x18], eax
inc eax
mov dword [ebx + 0x28], eax
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x28], eax
mov eax, dword [edx + 0x1c]
mov edx, ecx
mov dword [esp + 0x14], ecx
mov ecx, ebx
mov dword [esp + 0x44], eax
call fcn.0045b93e
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, dword [esp + 0x14]
push dword [eax]
push 0
push dword [eax + 0x1c]
call fcn.004579ef
mov edx, dword [esp + 0x2c]
add esp, 0xc
test byte [edx + 0x24], 0x20
je 0x46bf9c
mov ecx, edx
call fcn.00458431
mov ecx, eax
mov dword [esp + 0x28], ecx
jmp 0x46bfa0
mov ecx, dword [esp + 0x28]
mov eax, dword [edx + 8]
test eax, eax
je 0x46bfd8
test byte [eax + 0x38], 4
jne 0x46bfc9
movzx edi, word [eax + 0x30]
cmp di, word [edx + 0x2e]
jge 0x46bfc9
cmp dword [eax + 0x24], 0
jne 0x46bfc9
test ecx, ecx
je 0x46bfc7
cmp di, word [ecx + 0x30]
jge 0x46bfc9
mov ecx, eax
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x46bfa7
mov edi, dword [esp + 0x54]
mov dword [esp + 0x28], ecx
test ecx, ecx
je 0x46bff0
mov eax, dword [ecx + 0x2c]
mov edx, ecx
mov ecx, ebx
mov dword [esp + 0x44], eax
call fcn.0045bdb3
mov dword [esp + 0x34], eax
push 1
push dword [esp + 0x18]
mov ecx, esi
push dword [esp + 0x4c]
push dword [esp + 0x24]
push 0x6a
pop edx
call fcn.004434d9
mov eax, dword [esp + 0x44]
add esp, 0x10
test eax, eax
je 0x46c022
push 0xfffffffffffffffb
push eax
or edx, 0xffffffff
mov ecx, esi
call fcn.00443a13
pop ecx
pop ecx
mov eax, dword [esp + 0xb0]
mov ecx, esi
push dword [eax + 8]
push dword [esp + 0x1c]
push 0x66
pop edx
call fcn.0044337d
push dword [esp + 0x20]
mov ecx, esi
push 0x72
pop edx
call fcn.00443369
mov eax, dword [esp + 0x34]
add esp, 0xc
mov edx, dword [esp + 0x20]
mov ecx, ebx
push eax
call fcn.0046ae3e
pop ecx
jmp 0x46c157
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], eax
mov byte [esp + 0xf], al
cmp dword [edi + 0x28], eax
jne 0x46c0cb
lea edx, [esp + 0x18]
lea ecx, [esp + 0x88]
call fcn.00469e46
mov byte [esp + 0xf], al
test al, al
je 0x46c0c3
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
push 0
call fcn.004519b8
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], ecx
cmp byte [eax + 0x45], 0
jne 0x46c0cb
cmp byte [esp + 0xf], 1
setne al
mov byte [ecx + 0x14], al
mov eax, dword [ecx + 8]
mov byte [eax], 0x98
jmp 0x46c0cb
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], eax
lea edx, [esp + 0x88]
mov ecx, ebx
call fcn.0046ab5f
mov al, byte [esp + 0xf]
mov ecx, ebx
mov edx, dword [esp + 0x1c]
push 0
movzx eax, al
push eax
push 0
push dword [esp + 0x40]
push dword [esp + 0x38]
call fcn.0047732f
add esp, 0x14
mov dword [esp + 0x14], eax
test eax, eax
jne 0x46c117
mov esi, dword [esp + 0x24]
mov ecx, esi
mov edx, dword [esp + 0x4c]
call fcn.00452067
jmp 0x46b1ef
lea edx, [esp + 0x88]
mov ecx, ebx
call fcn.0046ac4c
mov ecx, dword [esp + 0x14]
call fcn.0047348a
test eax, eax
jle 0x46c144
call fcn.00473498
mov edx, eax
mov ecx, esi
call fcn.00443392
mov ecx, dword [esp + 0x14]
call fcn.00477b60
lea edx, [esp + 0x88]
mov ecx, ebx
call fcn.0046abf5
and dword [esp + 0x68], 0
push 0x10
push dword [esp + 0x34]
push dword [esp + 0x44]
push ebx
call fcn.00454c2f
mov eax, dword [esp + 0x40]
mov edx, edi
push eax
push eax
push dword [ebp + 8]
mov ecx, ebx
push 0
push 0
push 0xffffffffffffffff
push dword [edi]
call fcn.00466e9d
mov edx, dword [esp + 0x78]
add esp, 0x2c
mov ecx, dword [esp + 0x24]
call fcn.00452067
mov edx, dword [esp + 0x30]
mov ecx, esi
call fcn.0044356a
cmp byte [esp + 0xbd], 3
jne 0x46c1b7
mov edx, str.DISTINCT
mov ecx, ebx
call fcn.00467671
cmp dword [esp + 0x68], 0
je 0x46c1f1
cmp dword [esp + 0x6c], 0
mov eax, str.ORDER_BY
mov edx, str.RIGHT_PART_OF_ORDER_BY
mov ecx, ebx
cmovle edx, eax
call fcn.00467671
mov eax, dword [esp + 0x38]
mov edx, edi
push dword [ebp + 8]
mov ecx, ebx
push dword [eax]
lea eax, [esp + 0x70]
push eax
call fcn.00467713
add esp, 0xc
mov edx, dword [esp + 0xdc]
mov ecx, esi
call fcn.0044356a
mov esi, dword [esp + 0x24]
xor eax, eax
cmp dword [ebx + 0x24], eax
setg al
mov dword [esp + 0x50], eax
jmp 0x46b1f2
mov esi, dword [esp + 0x24]
xor eax, eax
inc eax
jmp 0x46b1f6
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
xor eax, eax
inc eax
jmp 0x46b1f6
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret