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

Disassembly:
sub esp, 0x84
push ebx
mov ebx, ecx
xor ecx, ecx
push ebp
push esi
push edi
mov eax, dword [ebx]
mov ebp, edx
mov dword [esp + 0x78], eax
push 0xa
pop esi
mov edi, dword [eax]
mov al, byte [ebx + 0x29]
movzx edx, al
mov byte [esp + 0x17], al
cmp edx, 2
push 5
pop eax
cmove esi, eax
mov dword [esp + 0x54], ebp
xor eax, eax
mov dword [esp + 0x6c], ebx
inc eax
mov dword [esp + 0x50], ecx
cmp edx, eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x30], ecx
cmovbe esi, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [ebx + 8]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x8c], edi
mov dword [esp + 0x70], edx
mov dword [esp + 0x68], esi
test eax, eax
je 0x45bdd2
test bp, bp
je 0x45bdd2
mov ecx, dword [eax]
lea eax, [edx + 8]
mov dword [esp + 0x24], ecx
imul eax, esi
lea edx, [ecx + eax*4]
mov ecx, edi
add edx, edx
call fcn.00413fe8
mov dword [esp + 0x7c], eax
test eax, eax
jne 0x45bdf8
push 7
pop eax
jmp 0x45c37e
mov edx, esi
mov dword [esp + 0x20], eax
shl edx, 5
add esi, esi
push 8
pop ecx
lea ebp, [edx + eax]
xor eax, eax
mov edi, ebp
mov dword [esp + 0x74], ebp
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x70]
lea ecx, [edx + ebp]
mov eax, dword [esp + 0x7c]
mov edx, edi
shl edx, 2
add eax, 0x18
mov dword [eax], ecx
dec esi
add ecx, edx
lea eax, [eax + 0x20]
test esi, esi
jg 0x45be26
mov edx, dword [esp + 0x24]
test edx, edx
je 0x45be51
lea eax, [edx + edx]
mov dword [esp + 0x3c], ecx
push eax
push 0
push ecx
call fcn.0047ed30
mov edx, dword [esp + 0x30]
add esp, 0xc
mov eax, dword [esp + 0x78]
push 0x30
pop ecx
mov eax, dword [eax + 0x1a4]
cmp eax, ecx
cmovb ecx, eax
xor eax, eax
inc eax
mov word [ebp + 0x10], cx
mov cl, byte [esp + 0x17]
mov dword [esp + 0x34], eax
test edx, edx
je 0x45be87
movzx eax, dl
or edx, 0xffffffff
test cl, cl
cmovne eax, edx
mov byte [ebp + 0x16], al
xor eax, eax
inc eax
xor esi, esi
mov dword [esp + 0x38], esi
test cl, cl
je 0x45c1f7
mov edx, dword [esp + 0x20]
xor ecx, ecx
mov dword [esp + 0x1c], ecx
test eax, eax
jle 0x45c1bd
lea eax, [ebp + 0x14]
mov dword [esp + 0x64], eax
mov ebp, eax
mov eax, dword [esp + 0x34]
mov edi, dword [ebx + 0x10]
mov dword [esp + 0x18], edi
test edi, edi
je 0x45c19d
mov al, byte [ebp + 2]
xorps xmm0, xmm0
mov ecx, dword [ebp - 0x14]
mov byte [esp + 0x16], al
not ecx
mov eax, dword [ebp - 0x10]
and ecx, dword [edi]
not eax
and eax, dword [edi + 4]
or ecx, eax
movlpd qword [esp + 0x58], xmm0
jne 0x45c186
mov eax, dword [edi + 8]
mov ecx, eax
mov edx, dword [edi + 0xc]
and ecx, dword [ebp - 0x14]
mov dword [esp + 0x40], eax
mov eax, edx
and eax, dword [ebp - 0x10]
or ecx, eax
mov dword [esp + 0x44], edx
jne 0x45c186
movzx esi, word [ebp - 4]
movzx edx, word [edi + 0x14]
mov cx, word [edi + 0x12]
add dx, si
call fcn.00416db6
mov dx, word [ebp]
mov ecx, eax
call fcn.00416db6
movzx edx, ax
lea ecx, [ebp - 0x14]
mov ax, word [edi + 0x16]
add ax, si
mov dword [esp + 0x28], edx
movzx eax, ax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
or eax, dword [ecx]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x44]
or eax, dword [ecx + 4]
mov dword [esp + 0x44], eax
mov ah, byte [esp + 0x16]
test ah, ah
jns 0x45bf93
mov edx, dword [ebx + 8]
lea eax, [esp + 0x58]
push eax
movzx eax, word [ebx + 0x22]
push edi
push dword [esp + 0x40]
push eax
push ecx
mov ecx, ebx
call fcn.0045b664
mov esi, dword [esp + 0x6c]
mov ah, al
mov ecx, dword [esp + 0x70]
add esp, 0x14
mov edx, dword [esp + 0x28]
mov byte [esp + 0x16], ah
mov dword [esp + 0x58], esi
jmp 0x45bf9d
mov ecx, dword [ebp - 0xc]
mov dword [esp + 0x58], ecx
mov ecx, dword [ebp - 8]
mov dword [esp + 0x64], ecx
test ah, ah
js 0x45c023
mov ecx, dword [esp + 0x24]
movsx edi, ah
cmp edi, ecx
jge 0x45c023
mov eax, dword [esp + 0x3c]
movzx eax, word [eax + edi*2]
mov edx, eax
test ax, ax
jne 0x45c011
mov eax, ecx
sub eax, edi
imul eax, eax, 0x64
cdq
idiv ecx
cdq
push edx
push eax
call fcn.00416e14
pop ecx
pop ecx
mov ecx, dword [esp + 0x54]
mov si, ax
call fcn.00459069
mov ecx, dword [esp + 0x54]
add si, ax
add ecx, 0xffffffce
movzx edx, si
add dx, cx
mov eax, 0x400
test word [ebx + 0x22], ax
lea eax, [edx + 0x10]
movzx ecx, ax
movzx eax, dx
cmove ecx, eax
movzx eax, cx
mov ecx, dword [esp + 0x3c]
mov edx, eax
mov word [ecx + edi*2], ax
mov ecx, dword [esp + 0x28]
call fcn.00416db6
movzx edx, ax
mov ah, byte [esp + 0x16]
jmp 0x45c026
movzx edx, dx
mov ecx, dword [esp + 0x1c]
xor esi, esi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x4c], edx
test ecx, ecx
jle 0x45c082
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
cmp dword [edi], edx
jne 0x45c050
cmp dword [edi + 4], ebx
jne 0x45c050
mov al, byte [edi + 0x16]
xor al, ah
jge 0x45c058
inc esi
add edi, 0x20
cmp esi, ecx
jl 0x45c040
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x4c]
cmp esi, ecx
jge 0x45c082
movzx eax, word [edi + 0x12]
cmp ax, dx
jl 0x45c079
mov esi, dword [esp + 0x48]
jne 0x45c0c0
cmp word [edi + 0x10], si
jg 0x45c0c0
mov edi, dword [esp + 0x18]
jmp 0x45c18a
mov esi, dword [esp + 0x68]
cmp ecx, esi
jl 0x45c0a0
mov eax, dword [esp + 0x30]
cmp dx, ax
jg 0x45c079
jne 0x45c0a0
mov eax, dword [esp + 0x2c]
cmp word [esp + 0x28], ax
jge 0x45c079
cmp ecx, esi
lea eax, [ecx + 1]
mov edi, ecx
cmovge edi, dword [esp + 0x50]
shl edi, 5
add edi, dword [esp + 0x20]
cmp ecx, esi
mov esi, dword [esp + 0x48]
cmovge eax, ecx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov edx, dword [esp + 0x18]
or eax, dword [edx + 0xc]
or ecx, dword [edx + 8]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x58]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x64]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x4c]
mov word [edi + 0x10], si
mov esi, dword [esp + 0x38]
mov word [edi + 0x12], ax
mov eax, dword [esp + 0x28]
mov word [edi + 0x14], ax
mov al, byte [esp + 0x16]
shl esi, 2
push esi
mov dword [edi], ecx
mov byte [edi + 0x16], al
push dword [ebp + 4]
push dword [edi + 0x18]
call fcn.0047e230
mov eax, dword [edi + 0x18]
add esp, 0xc
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esi + eax], edi
mov esi, dword [esp + 0x68]
cmp ecx, esi
jl 0x45c18a
mov eax, dword [esp + 0x20]
and dword [esp + 0x50], 0
movzx edx, word [eax + 0x12]
mov dword [esp + 0x30], edx
movzx edx, word [eax + 0x10]
mov dword [esp + 0x2c], edx
xor edx, edx
inc edx
cmp esi, edx
jbe 0x45c18a
mov ebx, dword [esp + 0x30]
add eax, 0x34
mov edi, dword [esp + 0x2c]
movzx ecx, word [eax - 2]
cmp cx, bx
jg 0x45c165
jne 0x45c16e
cmp word [eax], di
jle 0x45c16e
movzx edi, word [eax]
mov ebx, ecx
mov dword [esp + 0x50], edx
inc edx
add eax, 0x20
cmp edx, esi
jl 0x45c155
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x1c]
mov edi, dword [edi + 0x34]
mov dword [esp + 0x18], edi
test edi, edi
jne 0x45bec3
mov eax, dword [esp + 0x34]
add ebp, 0x20
sub eax, 1
mov dword [esp + 0x34], eax
jne 0x45beb4
mov ebp, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
mov eax, edx
inc esi
mov dword [esp + 0x38], esi
mov edx, ebp
mov dword [esp + 0x20], edx
mov ebp, eax
mov dword [esp + 0x74], ebp
mov eax, ecx
mov dword [esp + 0x34], eax
cmp esi, edi
jl 0x45be99
test ecx, ecx
jne 0x45c1f7
push str.no_query_solution
push dword [esp + 0x7c]
call fcn.00415d7f
pop ecx
pop ecx
jmp 0x45c367
cmp eax, 1
jle 0x45c215
lea ecx, [ebp + 0x20]
lea edx, [eax - 1]
mov ax, word [ebp + 0x12]
cmp ax, word [ecx + 0x12]
cmovg ebp, ecx
add ecx, 0x20
sub edx, 1
jne 0x45c202
xor esi, esi
cmp byte [esp + 0x17], 0
jbe 0x45c24a
lea edx, [ebx + 0x30c]
mov eax, dword [ebp + 0x18]
mov eax, dword [eax + esi*4]
mov dword [edx + 0x14], eax
mov al, byte [eax + 0x10]
mov byte [edx], al
lea edx, [edx + 0x50]
movzx eax, al
imul ecx, eax, 0x50
inc esi
mov eax, dword [ebx + 4]
mov eax, dword [ecx + eax + 0x38]
mov dword [edx - 0x78], eax
cmp esi, edi
jl 0x45c224
mov ax, word [ebx + 0x22]
mov ecx, 0x600
and ax, cx
mov ecx, 0x400
cmp ax, cx
jne 0x45c2a2
cmp byte [ebx + 0x28], 0
jne 0x45c2a2
cmp word [esp + 0x54], 0
je 0x45c2a2
mov edx, dword [ebx + 0xc]
lea eax, [esp + 0x80]
push eax
mov eax, dword [ebp + 0x18]
mov ecx, ebx
push dword [eax + edi*4 - 4]
lea eax, [edi - 1]
push eax
push 0x200
push ebp
call fcn.0045b664
movsx ecx, al
add esp, 0x14
mov eax, dword [ebx + 0xc]
cmp ecx, dword [eax]
jne 0x45c2a2
mov byte [ebx + 0x28], 2
mov edx, dword [ebx + 8]
test edx, edx
je 0x45c357
movzx esi, word [ebx + 0x22]
mov cl, byte [ebp + 0x16]
test esi, 0x200
je 0x45c2c9
movsx eax, cl
cmp eax, dword [edx]
jne 0x45c2f0
mov byte [ebx + 0x28], 2
jmp 0x45c2f0
and dword [esp + 0x80], 0
test cl, cl
movzx eax, cl
cmovs eax, dword [esp + 0x80]
mov byte [ebx + 0x24], cl
mov byte [ebx + 0x24], al
mov eax, dword [ebp + 8]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x1c], eax
test esi, 0x800
je 0x45c357
movsx eax, byte [ebx + 0x24]
cmp eax, dword [edx]
jne 0x45c357
cmp byte [esp + 0x17], 0
jbe 0x45c357
lea eax, [esp + 0x80]
xorps xmm0, xmm0
push eax
mov eax, dword [ebp + 0x18]
mov ecx, ebx
movlpd qword [esp + 0x84], xmm0
push dword [eax + edi*4 - 4]
lea eax, [edi - 1]
push eax
push 0
push ebp
call fcn.0045b664
movsx ecx, al
add esp, 0x14
mov eax, dword [ebx + 8]
cmp ecx, dword [eax]
jne 0x45c357
xor eax, eax
inc eax
mov byte [ebx + 0x25], al
mov eax, dword [esp + 0x80]
mov dword [ebx + 0x18], eax
mov eax, dword [esp + 0x84]
mov dword [ebx + 0x1c], eax
mov ax, word [ebp + 0x10]
and dword [esp + 0x80], 0
mov word [ebx + 0x20], ax
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x8c]
call fcn.00413e42
mov eax, dword [esp + 0x80]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84
ret