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

Disassembly:
sub esp, 0x1c
mov edx, dword [esp + 0x24]
push ebx
push ebp
push esi
push edi
mov edi, ecx
movzx eax, dx
shr edx, 0x10
xor ebp, ebp
mov dword [esp + 0x10], ebp
mov dword [esp + 0x20], eax
push dword [edi + 0x54]
or dword [edi + 0x28], 1
mov dword [edi + 0xc], 1
mov dword [esp + 0x28], edx
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [esp + 0x30]
test al, 8
je 0x10031b91
or dword [edi + 0x28], 4
test al, 4
je 0x10031b99
or dword [edi + 0x28], 8
push dword [edi + 0x54]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
push 8
push esi
call dword [sym.imp.GDI32.dll_SetMapMode]
push 0
push 1
push 1
push esi
call dword [sym.imp.GDI32.dll_SetWindowExtEx]
push 0
push 0xffffffffffffffff
push 1
push esi
call dword [sym.imp.GDI32.dll_SetViewportExtEx]
push 0
push dword [edi + 0x64]
push 0
push esi
call dword [sym.imp.GDI32.dll_SetViewportOrgEx]
push 1
lea eax, [esp + 0x24]
push eax
push esi
call dword [sym.imp.GDI32.dll_DPtoLP]
push esi
push dword [edi + 0x54]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [edi + 4]
xor edx, edx
mov ecx, dword [edi]
sub eax, ecx
sar eax, 2
mov dword [esp + 0x34], edx
test eax, eax
je 0x10031e37
mov ebx, dword [ecx + edx*4]
mov ecx, ebx
push 4
mov eax, dword [ebx]
call dword [eax + 0x14]
test eax, eax
jne 0x10031c26
mov eax, dword [ebx]
mov ecx, ebx
push 8
call dword [eax + 0x14]
test eax, eax
je 0x10031d27
mov eax, dword [ebx]
mov ecx, ebx
push 8
call dword [eax + 0x14]
mov edx, dword [ebx + 4]
or ebp, eax
mov eax, dword [ebx + 8]
mov esi, dword [esp + 0x24]
sub eax, edx
sar eax, 4
mov dword [esp + 0x10], ebp
xor ebp, ebp
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], eax
test eax, eax
je 0x10031ce3
movzx ecx, word [ebx + 0x60]
mov eax, dword [esp + 0x20]
movss xmm2, dword [edi + 0x84]
add eax, ecx
movss xmm3, dword [edi + 0xb4]
movss xmm4, dword [edi + 0x8c]
movss xmm5, dword [edi + 0xb8]
mov dword [esp + 0x14], eax
movups xmm1, xmmword [edx]
movaps xmm0, xmm1
shufps xmm1, xmm1, 0x55
subss xmm0, xmm2
subss xmm1, xmm4
mulss xmm0, xmm3
mulss xmm1, xmm5
cvttss2si eax, xmm0
cvttss2si edx, xmm1
add eax, dword [edi + 0x68]
mov dword [esp + 0x18], eax
add edx, dword [edi + 0x74]
cmp eax, dword [esp + 0x14]
jg 0x10031cd1
mov eax, dword [esp + 0x20]
sub eax, ecx
cmp dword [esp + 0x18], eax
jl 0x10031cd1
lea eax, [ecx + esi]
cmp edx, eax
jg 0x10031cd1
mov eax, esi
sub eax, ecx
cmp edx, eax
jge 0x10031d4f
mov edx, dword [esp + 0x30]
inc ebp
add edx, 0x10
mov dword [esp + 0x30], edx
cmp ebp, dword [esp + 0x1c]
jb 0x10031c84
test byte [edi + 0x28], 4
jne 0x10031d2b
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x44]
test eax, eax
je 0x10031d27
mov eax, dword [ebx]
mov ecx, ebx
push 1
call dword [eax + 0x40]
lea eax, [edi + 0x10]
mov dword [edi + 0x18], 0x464
push eax
mov dword [edi + 0x1c], ebx
mov dword [edi + 0x20], 0xffffffff
push dword [eax + 4]
push 0x4e
push dword [edi + 0x54]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [esp + 0x24]
mov eax, dword [edi + 4]
mov edx, dword [esp + 0x34]
mov ecx, dword [edi]
inc edx
sub eax, ecx
mov dword [esp + 0x34], edx
sar eax, 2
cmp edx, eax
jae 0x10031e14
mov ebp, dword [esp + 0x10]
jmp 0x10031c05
mov eax, dword [esp + 0x34]
mov ecx, ebx
mov dword [edi + 0x78], ebp
mov dword [edi + 0x7c], eax
mov eax, dword [ebx]
push 1
call dword [eax + 0x14]
test eax, eax
jne 0x10031d73
mov eax, dword [ebx]
mov ecx, ebx
push 2
call dword [eax + 0x14]
test eax, eax
je 0x10031d77
or dword [edi + 0x28], 0x20
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x44]
cmp eax, 1
jbe 0x10031d91
mov eax, dword [ebx + 4]
mov ecx, ebp
add ecx, ecx
test byte [eax + ecx*8 + 0xc], 1
jne 0x10031dba
mov eax, dword [ebx]
mov ecx, ebx
push 4
call dword [eax + 0x14]
test eax, eax
jne 0x10031db1
mov eax, dword [ebx]
mov ecx, ebx
push 8
call dword [eax + 0x14]
test eax, eax
je 0x10031dba
test byte [edi + 0x28], 4
jne 0x10031dba
push 0
mov ecx, edi
call fcn.10034590
mov ecx, dword [ebx + 4]
mov esi, ebp
add esi, esi
mov dl, byte [ecx + esi*8 + 0xc]
mov al, dl
or al, 1
mov byte [ecx + esi*8 + 0xc], al
inc dword [ebx + 0x5c]
test dl, 1
jne 0x10031dfb
lea eax, [edi + 0x10]
mov dword [edi + 0x18], 0x464
push eax
mov dword [edi + 0x1c], ebx
mov dword [edi + 0x20], ebp
push dword [eax + 4]
push 0x4e
push dword [edi + 0x54]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
push 1
push 0
push dword [edi + 0x54]
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret 8
cmp dword [esp + 0x10], 0
je 0x10031e37
mov eax, dword [esp + 0x20]
or dword [edi + 0x28], 0x40
mov dword [edi + 0x40], esi
mov dword [edi + 0x38], esi
mov dword [edi + 0x3c], eax
mov dword [edi + 0x34], eax
movups xmm0, xmmword [edi + 0x34]
movups xmmword [edi + 0x44], xmm0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret 8