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

Disassembly:
sub esp, 0x54
push ebx
push esi
mov esi, dword [esp + 0x60]
push edi
push ebp
xor ebx, ebx
mov ecx, dword [esi + 0x52c]
lea eax, [esi + 0x52c]
xor ebp, ebp
mov edi, dword [esp + 0x70]
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x550]
cmp edi, ecx
jl 0x7f91bb56
mov eax, dword [esi + 0x554]
mov edx, dword [esp + 0x6c]
cmp edx, eax
jge 0x7f91bb56
cmp edx, ecx
jg 0x7f91b85d
mov edx, ecx
mov dword [esp + 0x6c], edx
cmp edi, eax
jl 0x7f91b867
mov edi, eax
sub edi, dword [esp + 0x6c]
mov dword [esp + 0x14], edi
jne 0x7f91b87d
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x54
ret 0xc
push 0
push 0
push 0
push 0
call dword [sym.imp.GDI32.dll_CreateRectRgn]
mov dword [esp + 0x10], eax
test eax, eax
jne 0x7f91b89f
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x54
ret 0xc
lea eax, [esp + 0x1c]
push 0
mov ecx, dword [esp + 0x70]
push eax
push 0
push ecx
push esi
call fcn.7f919c90
test eax, eax
jl 0x7f91bae0
lea eax, [esp + 0x3c]
mov ecx, dword [esp + 0x6c]
push eax
push ecx
push esi
call fcn.7f8f9af0
lea ecx, [esp + 0x28]
mov edx, dword [esp + 0x6c]
push ecx
push edx
push esi
call fcn.7f901b00
mov edi, dword [esp + 0x28]
mov eax, dword [esi + 0x4b4]
shl edi, 2
lea ecx, [esp + 0x24]
push ecx
nop
lea edi, [edi + edi*4]
mov ecx, dword [esp + 0x58]
add edi, eax
xor eax, eax
test byte [edi + 0x10], 0x10
setne al
push eax
mov edx, dword [edi + 4]
mov eax, dword [esp + 0x44]
push 0
push ecx
push edx
push eax
push esi
call fcn.7f8f7260
mov edx, dword [esi + 0x53c]
mov ebx, dword [esp + 0x1c]
sub eax, edx
mov ebp, dword [esp + 0x14]
add eax, dword [esp + 0x24]
sub ebx, eax
test ebp, ebp
mov dword [esp + 0x1c], ebx
jle 0x7f91bab7
xor ebx, ebx
mov eax, dword [esp + 0x14]
test byte [edi + 0x10], 0x10
setne bl
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jl 0x7f91b94c
mov eax, ecx
mov ecx, dword [edi + 4]
mov dword [esp + 0x38], eax
test ecx, ecx
jg 0x7f91b95d
mov ecx, dword [esi + 0x560]
lea eax, [esp + 0x24]
mov edx, dword [esp + 0x54]
push eax
push ebx
push 0
push edx
push ecx
mov ecx, dword [esp + 0x50]
push ecx
push esi
call fcn.7f8f7260
mov edx, dword [esi + 0x53c]
mov ecx, dword [esp + 0x24]
sub ecx, edx
push 0
lea ebp, [ecx + eax]
mov ecx, dword [esp + 0x20]
add ecx, ebp
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x38]
sub eax, ecx
mov ecx, dword [esp + 0x20]
add eax, edx
mov edx, dword [esp + 0x3c]
add eax, ecx
cmp ebx, 1
push eax
push edx
lea eax, [esp + 0x48]
push eax
mov eax, 0
adc eax, 0xffffffff
and eax, 2
push eax
push 0
push esi
call fcn.7f8f5580
add eax, dword [esp + 0x30]
add ebp, dword [esp + 0x1c]
cmp eax, ebp
jne 0x7f91b9db
add eax, dword [esi + 0x560]
movsx ecx, word [edi + 8]
mov edx, dword [esp + 0x20]
add ecx, edx
push ecx
push eax
push edx
push ebp
call dword [sym.imp.GDI32.dll_CreateRectRgn]
mov ebx, eax
test ebx, ebx
je 0x7f91bade
push 0
push 0
push 0
push 0
call dword [sym.imp.GDI32.dll_CreateRectRgn]
mov ebp, eax
test ebp, ebp
je 0x7f91bae0
mov eax, dword [esp + 0x10]
push 2
push ebx
push eax
push ebp
call dword [sym.imp.GDI32.dll_CombineRgn]
test eax, eax
je 0x7f91bae0
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
movsx eax, word [edi + 8]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x34]
add ecx, eax
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x10], ebp
sub ebx, eax
push eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0x70]
lea edx, [esp + 0x2c]
add ecx, eax
push edx
mov dword [esp + 0x1c], ebx
push esi
mov dword [esp + 0x78], ecx
call fcn.7f901bd0
mov ecx, dword [esp + 0x6c]
mov eax, dword [esi + 0x4e0]
cmp eax, ecx
jg 0x7f91baa8
mov eax, dword [esp + 0x28]
add eax, 5
push eax
push esi
call fcn.7f9042f0
mov edi, dword [esp + 0x28]
mov eax, dword [esi + 0x4b4]
shl edi, 2
lea edi, [edi + edi*4]
add edi, eax
jmp 0x7f91baab
add edi, 0x14
mov eax, dword [esp + 0x14]
test eax, eax
jg 0x7f91b935
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x18]
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [eax + 0xc]
add eax, edx
push eax
mov eax, dword [ebx + 8]
add eax, ecx
push eax
push edx
push ecx
call dword [sym.imp.GDI32.dll_CreateRectRgn]
mov ebx, eax
test ebx, ebx
jne 0x7f91bb11
xor ebp, ebp
mov eax, dword [esp + 0x10]
test eax, eax
je 0x7f91baef
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
test ebx, ebx
je 0x7f91bafa
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
test ebp, ebp
je 0x7f91bb05
push ebp
call dword [sym.imp.GDI32.dll_DeleteObject]
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x54
ret 0xc
push 0
push 0
push 0
push 0
call dword [sym.imp.GDI32.dll_CreateRectRgn]
mov ebp, eax
test ebp, ebp
je 0x7f91bae0
mov eax, dword [esp + 0x10]
push 1
push ebx
push eax
push ebp
call dword [sym.imp.GDI32.dll_CombineRgn]
test eax, eax
je 0x7f91bae0
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, ebp
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x54
ret 0xc
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x54
ret 0xc