Function at 0x4372d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x40
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
push ebx
push ebp
mov ebp, dword [esp + 0x50]
xor ebx, ebx
cmp ebp, ebx
push edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
je 0x437382
mov eax, dword [ebp + 0x20]
cmp eax, ebx
mov dword [esp + 0x14], eax
je 0x437382
cmp dword [eax + 0x1c], ebx
je 0x437365
movzx eax, byte [ebp + 4]
sub eax, 0x6b
je 0x437338
dec eax
je 0x437331
dec eax
je 0x43732a
mov eax, str.UNION
jmp 0x43733d
mov eax, str.INTERSECT
jmp 0x43733d
mov eax, str.EXCEPT
jmp 0x43733d
mov eax, str.UNION_ALL
push eax
push str.ORDER_BY_clause_should_come_after__s_not_before
push edi
call fcn.00418130
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x64]
add esp, 0xc
pop edi
mov ebx, 1
mov dword [edx + 8], eax
pop ebp
mov eax, ebx
pop ebx
add esp, 0x40
ret
cmp dword [eax + 0x2c], ebx
je 0x43739b
movzx eax, byte [ebp + 4]
call fcn.004362b0
push eax
push str.LIMIT_clause_should_come_after__s_not_before
push edi
call fcn.00418130
add esp, 0xc
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x58]
pop edi
mov ebx, 1
mov dword [edx + 8], eax
pop ebp
mov eax, ebx
pop ebx
add esp, 0x40
ret
push esi
push edi
call fcn.004370e0
mov esi, eax
add esp, 4
test esi, esi
je 0x43796a
mov dl, byte [esp + 0x38]
cmp dl, 9
jne 0x4373dc
mov ecx, dword [esp + 0x3c]
push 0
push ecx
push 0x6f
push esi
call fcn.00414b10
mov dl, 8
add esp, 0x10
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], 1
mov byte [esp + 0x38], dl
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x58], eax
mov al, byte [ebp + 4]
movzx ecx, al
add ecx, 0xffffff96
cmp ecx, 3
ja case.default.0x4373f5
jmp dword [ecx*4 + 0x437bbc]
mov ecx, dword [esp + 0x58]
test ecx, ecx
jne case.0x4373f5.106
mov ecx, dword [ebp + 0x2c]
mov eax, dword [esp + 0x18]
mov dword [eax + 0x2c], ecx
mov ecx, dword [esp + 0x60]
mov edx, dword [ebp + 0x30]
push ecx
push 0
push 0
mov dword [eax + 0x30], edx
push 0
lea edx, [esp + 0x48]
push edx
push eax
push edi
mov dword [esp + 0x3c], 0
call fcn.00438840
mov ebx, eax
xor eax, eax
add esp, 0x1c
cmp ebx, eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x30], eax
jne 0x437ba6
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x34]
mov dword [ebp + 0x34], ecx
mov edx, dword [eax + 0x38]
mov eax, ecx
test eax, eax
mov dword [ebp + 0x38], edx
jl 0x437475
push eax
push 0x77
push esi
call fcn.00414af0
add esp, 0xc
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x60]
push eax
push 0
push 0
push 0
lea ecx, [esp + 0x48]
push ecx
push ebp
push edi
call fcn.00438840
mov edx, dword [esp + 0x34]
mov ebx, eax
add esp, 0x1c
test ebx, ebx
mov dword [esp + 0x10], ebx
mov dword [ebp + 0x20], edx
jne 0x437ba6
mov eax, dword [esp + 0x20]
test eax, eax
je case.default.0x4373f5
push eax
push esi
call fcn.00414e60
add esp, 8
jmp case.default.0x4373f5
xor ebx, ebx
cmp al, 0x6b
setne bl
movzx ecx, dl
mov dword [esp + 0x20], 0
dec ebx
and ebx, 7
inc ebx
cmp ecx, ebx
mov dword [esp + 0x2c], ebx
jne 0x4374fe
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x4374fe
mov eax, dword [ebp + 0x2c]
test eax, eax
jne 0x4374fe
mov eax, dword [ebp + 0x30]
test eax, eax
jne 0x4374fe
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x14], edx
jmp 0x43755c
mov eax, dword [edi + 0x44]
push eax
lea ecx, [eax + 1]
push ebp
push edi
mov dword [esp + 0x20], eax
mov dword [edi + 0x44], ecx
call fcn.00436ed0
add esp, 0xc
test eax, eax
jne 0x43796a
mov edx, dword [esp + 0x14]
push eax
push edx
push 0x6f
push esi
call fcn.00414b10
add esp, 0x10
cmp ebx, 8
jne 0x437543
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x30], eax
inc ecx
mov dword [esp + 0x1c], ecx
jmp 0x43754d
mov dword [ebp + 0x3c], eax
mov eax, dword [ebp + 0x28]
mov byte [eax + 8], 1
mov eax, dword [esp + 0x58]
push ebp
mov ecx, edi
call fcn.00437260
add esp, 4
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x14]
push edx
push 0
push 0
push 0
lea eax, [esp + 0x54]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x28]
push eax
push ecx
push edi
mov byte [esp + 0x60], bl
mov byte [esp + 0x61], 0
mov dword [esp + 0x68], 0
call fcn.00438840
mov ebx, eax
add esp, 0x1c
test ebx, ebx
jne 0x437ba6
movzx eax, byte [ebp + 4]
sub eax, 0x6a
je 0x4375c0
dec eax
je 0x4375b6
dec eax
jne 0x4375c8
mov dword [esp + 0x20], 2
jmp 0x4375c8
mov dword [esp + 0x20], 8
jmp 0x4375c8
mov dword [esp + 0x20], 1
mov ecx, dword [esp + 0x58]
xor eax, eax
cmp ecx, eax
mov ecx, dword [ebp + 0x2c]
setne dl
mov byte [ebp + 9], dl
mov edx, dword [ebp + 0x30]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x60]
push edx
push eax
push eax
push eax
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x1c], eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x30], eax
lea eax, [esp + 0x54]
push eax
mov dword [esp + 0x38], ecx
mov cl, byte [esp + 0x34]
push ebp
push edi
mov byte [esp + 0x60], cl
call fcn.00438840
mov ecx, dword [ebp + 0x1c]
mov ebx, eax
push ecx
mov dword [esp + 0x30], ebx
call fcn.00439d90
mov ecx, dword [ebp + 0x2c]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x78]
push ecx
mov dword [ebp + 0x20], edx
mov dword [ebp + 0x1c], eax
call fcn.0043a4e0
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
mov dword [ebp + 0x30], eax
or eax, 0xffffffff
add esp, 0x24
test ebx, ebx
mov dword [ebp + 0x2c], edx
mov dword [ebp + 0x34], eax
mov dword [ebp + 0x38], eax
jne 0x437ba6
mov al, byte [esp + 0x38]
mov edx, dword [esp + 0x2c]
movzx ecx, al
cmp ecx, edx
jne 0x437671
mov edx, dword [esp + 0x14]
cmp edx, dword [esp + 0x3c]
je case.default.0x4373f5
cmp al, 5
jne 0x437697
mov eax, dword [ebp + 0x20]
test eax, eax
mov ecx, ebp
je 0x437689
mov edi, edi
mov ecx, eax
mov eax, dword [ecx + 0x20]
test eax, eax
jne 0x437680
mov eax, dword [ecx]
push eax
push 0
push edi
call fcn.00436050
add esp, 0xc
push esi
call fcn.00414b30
push esi
mov dword [esp + 0x28], eax
call fcn.00414b30
mov ecx, dword [esp + 0x28]
push ecx
mov dword [esp + 0x30], eax
push ebp
mov eax, edi
call fcn.00437120
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
push edx
push eax
push 0x73
push esi
call fcn.00414b10
push esi
call fcn.00414cc0
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
push 0
push ecx
push edx
mov edx, dword [esp + 0x88]
lea ecx, [esp + 0x68]
push ecx
push 0xffffffffffffffff
push edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [ebp]
mov ecx, dword [eax]
push ecx
push edx
push eax
push ebp
call fcn.00435520
mov eax, dword [esp + 0x70]
add esp, 0x4c
push eax
push esi
call fcn.00414b80
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
push ecx
push edx
push 0x66
push esi
call fcn.00414b10
mov eax, dword [esp + 0x38]
push eax
push esi
call fcn.00414b80
mov ecx, dword [esp + 0x34]
push 0
push ecx
push 0x1f
push esi
call fcn.00414b10
add esp, 0x30
jmp case.default.0x4373f5
mov ebx, dword [edi + 0x44]
push ebx
lea edx, [ebx + 2]
push ebp
push edi
mov dword [edi + 0x44], edx
call fcn.00436ed0
add esp, 0xc
test eax, eax
je 0x437768
mov dword [esp + 0x10], 1
jmp 0x437ba2
mov eax, dword [esp + 0x58]
push ebp
mov ecx, edi
call fcn.00437260
push 0
push ebx
push 0x6f
push esi
call fcn.00414b10
mov ecx, dword [esp + 0x74]
push ecx
push 0
mov dword [ebp + 0x3c], eax
mov eax, dword [ebp + 0x28]
push 0
mov byte [eax + 8], 1
mov eax, dword [esp + 0x38]
push 0
lea edx, [esp + 0x68]
push edx
push eax
push edi
mov byte [esp + 0x74], 1
mov dword [esp + 0x78], ebx
mov byte [esp + 0x75], 0
mov dword [esp + 0x7c], 0
call fcn.00438840
add esp, 0x30
test eax, eax
mov dword [esp + 0x10], eax
jne 0x437ba2
push eax
lea eax, [ebx + 1]
push eax
push 0x6f
push esi
call fcn.00414b10
mov edx, dword [ebp + 0x2c]
xor ecx, ecx
mov dword [ebp + 0x40], eax
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x70]
push edx
push ecx
mov dword [esp + 0x40], eax
push ecx
lea eax, [ebx + 1]
push ecx
mov dword [esp + 0x68], eax
lea eax, [esp + 0x64]
push eax
push ebp
push edi
mov dword [ebp + 0x20], ecx
mov dword [ebp + 0x2c], ecx
mov dword [ebp + 0x30], ecx
call fcn.00438840
mov edx, dword [ebp + 0x2c]
mov ecx, dword [esp + 0x44]
push edx
mov dword [esp + 0x40], eax
mov dword [ebp + 0x20], ecx
call fcn.0043a4e0
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
mov dword [ebp + 0x2c], eax
mov eax, dword [esp + 0x40]
add esp, 0x30
test eax, eax
mov dword [ebp + 0x30], ecx
jne 0x437ba2
cmp byte [esp + 0x38], 5
jne 0x437867
mov eax, dword [ebp + 0x20]
test eax, eax
mov ecx, ebp
je 0x437859
mov edi, edi
mov ecx, eax
mov eax, dword [ecx + 0x20]
test eax, eax
jne 0x437850
mov edx, dword [ecx]
push edx
push 0
push edi
call fcn.00436050
add esp, 0xc
push esi
call fcn.00414b30
push esi
mov dword [esp + 0x28], eax
call fcn.00414b30
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x28]
push eax
push ebp
mov eax, edi
call fcn.00437120
mov ecx, dword [esp + 0x30]
push ecx
push ebx
push 0x73
push esi
call fcn.00414b10
push edi
call fcn.0043a3e0
push eax
push ebx
push 6
push esi
mov dword [esp + 0x58], eax
call fcn.00414b10
mov edx, dword [esp + 0x58]
push edx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x4c]
push eax
lea eax, [ebx + 1]
push eax
push 0x22
push esi
call fcn.00414a60
mov ecx, dword [esp + 0x6c]
add esp, 0x48
push ecx
push edi
call fcn.0043a410
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebp]
push 0
push edx
push ecx
mov ecx, dword [esp + 0x6c]
lea edx, [esp + 0x4c]
push edx
mov edx, dword [eax]
push 0xffffffffffffffff
push ecx
push edx
push ebx
push eax
push ebp
call fcn.00435520
mov eax, dword [esp + 0x44]
push eax
push esi
call fcn.00414b80
mov ecx, dword [esp + 0x64]
push ecx
push ebx
push 0x66
push esi
call fcn.00414b10
mov edx, dword [esp + 0x68]
add esp, 0x48
push edx
push esi
call fcn.00414b80
push 0
lea eax, [ebx + 1]
push eax
push 0x1f
push esi
call fcn.00414b10
push 0
push ebx
push 0x1f
push esi
call fcn.00414b10
mov ebx, dword [esp + 0x38]
add esp, 0x28
mov ecx, dword [esp + 0x18]
mov eax, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [eax]
cmp eax, dword [edx]
mov dword [esp + 0x20], eax
je 0x437984
movzx eax, byte [ebp + 4]
call fcn.004362b0
push eax
push str.SELECTs_to_the_left_and_right_of__s_do_not_have_the_same_number_of_result_columns
push edi
call fcn.00418130
add esp, 0xc
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x5c]
pop esi
pop edi
mov ebx, 1
mov dword [edx + 8], eax
pop ebp
mov eax, ebx
pop ebx
add esp, 0x40
ret
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4379b4
lea esp, [esp]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + eax*4 + 0x2c]
dec eax
push ecx
push edx
push esi
mov dword [esp + 0x28], eax
call fcn.00414de0
mov eax, dword [esp + 0x28]
add esp, 0xc
test eax, eax
jne 0x437990
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x437a02
mov al, byte [ebp + 8]
test al, al
je 0x437ba6
xor eax, eax
mov ecx, dword [esp + 0x20]
lea eax, [eax + ecx + 4]
lea edx, [eax + eax*4]
mov eax, dword [edi]
push edx
push eax
call fcn.00418060
add esp, 8
test eax, eax
mov dword [esp + 0x1c], eax
jne 0x437a06
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x5c]
pop esi
pop edi
mov ebx, 7
mov dword [edx + 8], eax
pop ebp
mov eax, ebx
pop ebx
add esp, 0x40
ret
mov eax, dword [eax]
jmp 0x4379c9
mov ecx, dword [edi]
mov edx, dword [ecx + 8]
mov ecx, dword [edx + 0x14]
mov dl, byte [ecx + 0x59]
mov ecx, dword [esp + 0x20]
mov byte [eax + 4], dl
mov dword [eax + 8], ecx
add eax, 0x10
xor ebx, ebx
test ecx, ecx
mov dword [esp + 0x14], eax
jle 0x437a58
push ebx
push ebp
push edi
call fcn.00437290
mov ecx, dword [esp + 0x20]
add esp, 0xc
test eax, eax
mov dword [ecx], eax
jne 0x437a44
mov edx, dword [edi]
mov eax, dword [edx + 0x24]
mov dword [ecx], eax
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
inc ebx
add ecx, 4
cmp ebx, eax
mov dword [esp + 0x14], ecx
jl 0x437a28
mov dword [esp + 0x18], ebp
lea esp, [esp]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x24], 0
add ebx, 0x3c
nop
mov edi, dword [ebx]
test edi, edi
jl 0x437aaa
mov edx, dword [esp + 0x20]
push edx
push edi
push esi
call fcn.00414de0
mov eax, dword [esp + 0x28]
push 0xfffffffffffffffa
push eax
push edi
push esi
call fcn.004166d0
mov eax, dword [esp + 0x40]
add esp, 0x1c
inc eax
mov dword [ebx], 0xffffffff
add ebx, 4
cmp eax, 2
mov dword [esp + 0x24], eax
jl 0x437a70
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x20]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x437a60
mov eax, dword [esp + 0x58]
test eax, eax
je 0x437b95
mov edi, dword [eax]
mov ebx, dword [eax + 0xc]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
shl edx, 2
lea ecx, [eax + edi*4 + 0x10]
mov dword [esp + 0x58], edx
add edx, ecx
mov dword [eax + 0xc], edx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x58]
push edx
add eax, 0x10
push eax
push ecx
call fcn.0044c4b0
mov eax, dword [esp + 0x28]
add eax, 0x10
mov dword [esp + 0x20], eax
add esp, 0xc
xor eax, eax
test edi, edi
jle 0x437b54
lea esp, [esp]
mov ecx, dword [ebx]
test byte [ecx + 3], 1
je 0x437b23
mov ecx, dword [ecx + 4]
mov edx, dword [esp + 0x14]
mov dword [edx], ecx
jmp 0x437b37
mov edx, dword [ecx + 0x28]
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + edi*4 + 0x10]
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x14]
mov dword [ecx], edx
mov dl, byte [ebx + 8]
mov ecx, dword [esp + 0x2c]
mov byte [ecx + eax], dl
mov edx, dword [esp + 0x14]
inc eax
add edx, 4
add ebx, 0xc
cmp eax, edi
mov dword [esp + 0x14], edx
jl 0x437b10
mov edx, dword [ebp + 0x1c]
mov eax, dword [edx]
mov ebx, dword [ebp + 0x44]
add eax, 2
push eax
push ebx
push esi
call fcn.00414de0
mov eax, dword [esp + 0x28]
push 0xfffffffffffffff7
push eax
push ebx
push esi
mov dword [eax + 8], edi
call fcn.004166d0
mov edx, dword [ebp]
mov eax, dword [edx]
lea ecx, [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x74]
push eax
push ebp
push ecx
xor edi, edi
call fcn.00435ae0
add esp, 0x2c
jmp 0x437b99
mov edi, dword [esp + 0x1c]
push edi
call fcn.00410bf0
add esp, 4
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x5c]
pop esi
pop edi
mov dword [edx + 8], eax
pop ebp
mov eax, ebx
pop ebx
add esp, 0x40
ret