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

Disassembly:
sub esp, 0x78
mov eax, dword [esp + 0x80]
xor ecx, ecx
mov cl, ah
push ebx
mov ch, al
push esi
shr eax, 0x10
push edi
mov edi, dword [esp + 0x88]
shl ecx, 8
and eax, 0xff
xor esi, esi
or ecx, eax
cmp edi, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x8c], ecx
je 0x1001923f
mov ebx, dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push esi
call ebx
cmp eax, esi
mov dword [esp + 0x14], eax
je 0x1001923f
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
push ebp
mov dword [esp + 0x64], edx
push esi
lea edx, [esp + 0x48]
mov dword [esp + 0x6c], ecx
push esi
push edx
lea ecx, [esp + 0x6c]
push esi
mov ebp, 1
push ecx
push eax
mov dword [esp + 0x78], 0x28
mov word [esp + 0x84], bp
mov word [esp + 0x86], 0x20
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
mov dword [esp + 0x9c], esi
call dword [sym.imp.GDI32.dll_CreateDIBSection]
mov esi, eax
test esi, esi
je 0x10019226
mov edx, dword [esp + 0x18]
push esi
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x18]
push eax
call ebx
test eax, eax
mov dword [esp + 0x40], eax
je 0x1001920f
lea ecx, [esp + 0x48]
push ecx
push 0x18
push esi
call dword [sym.imp.GDI32.dll_GetObjectA]
mov eax, dword [esp + 0x54]
mov edx, eax
and edx, 0x80000003
jns 0x10018f03
dec edx
or edx, 0xfffffffc
inc edx
je 0x10018f1b
inc eax
mov ecx, eax
and ecx, 0x80000003
jns 0x10018f15
dec ecx
or ecx, 0xfffffffc
inc ecx
jne 0x10018f05
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x98]
mov eax, dword [esp + 0x18]
push 0xcc0020
push 0
push 0
push edi
mov edi, dword [esp + 0xa4]
push edx
push edi
push 0
push 0
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
push 0x660
push 2
mov dword [esp + 0x1c], 0x64
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov ebx, eax
push ebx
mov dword [esp + 0x30], ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, eax
xor eax, eax
push eax
push eax
push SysReAllocString
lea ecx, [esi + 0x10]
push SysReAllocString
push ecx
mov dword [esi], 0x20
mov dword [esi + 4], ebp
mov dword [esi + 0xc], eax
mov dword [esi + 8], eax
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [esp + 0x90]
mov cx, ax
mov ebp, eax
and eax, 0xff
shr cx, 8
lea edx, [eax + eax]
mov word [esp + 0x38], cx
shr ebp, 0x10
cmp edx, 0xff
mov dword [esp + 0x3c], ebp
jle 0x10018fc2
mov byte [esp + 0x11], 0xff
jmp 0x10018fc8
add al, al
mov byte [esp + 0x11], al
mov eax, ecx
mov byte [esp + 0x12], 0xff
and eax, 0xff
add eax, eax
cmp eax, 0xff
jg 0x10018fe1
mov byte [esp + 0x12], al
mov eax, ebp
mov byte [esp + 0x13], 0xff
and eax, 0xff
add eax, eax
cmp eax, 0xff
jg 0x10018ffa
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x20], 0
lea ecx, [eax - 1]
mov eax, dword [esp + 0x98]
imul ecx, dword [esp + 0x54]
add ecx, edx
test eax, eax
mov dword [esp + 0x30], ecx
jle 0x100191bb
xor ebp, ebp
test edi, edi
jle 0x10019199
mov edx, dword [esp + 0x14]
lea eax, [edx + 2]
shl eax, 4
mov dword [esp + 0x28], eax
cmp ebp, edi
mov dword [esp + 0x24], ebp
lea eax, [ecx + ebp*4]
jge 0x1001918c
mov cl, byte [eax]
mov dl, byte [esp + 0x90]
cmp cl, dl
jb 0x10019083
cmp cl, byte [esp + 0x11]
ja 0x10019083
mov cl, byte [eax + 1]
mov dl, byte [esp + 0x38]
cmp cl, dl
jb 0x10019083
cmp cl, byte [esp + 0x12]
ja 0x10019083
mov cl, byte [eax + 2]
mov dl, byte [esp + 0x3c]
cmp cl, dl
jb 0x10019083
cmp cl, byte [esp + 0x13]
jbe 0x1001908b
add eax, 4
inc ebp
cmp ebp, edi
jl 0x1001904e
cmp ebp, dword [esp + 0x24]
jle 0x1001918c
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
jb 0x100190d6
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
add eax, 0x640
push 2
add edx, 0x64
push eax
push ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x34], eax
call dword [sym.imp.KERNEL32.dll_GlobalReAlloc]
push eax
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, eax
mov eax, dword [esp + 0x20]
mov edx, dword [esi + 8]
mov ecx, dword [esp + 0x24]
add edx, 2
lea edi, [eax + 1]
push edi
push ebp
shl edx, 4
push eax
add edx, esi
push ecx
push edx
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x10]
lea ebx, [esi + 0x10]
cmp eax, ecx
jge 0x10019107
mov dword [ebx], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x14]
cmp eax, ecx
jge 0x10019115
mov dword [esi + 0x14], eax
cmp ebp, dword [esi + 0x18]
jle 0x1001911d
mov dword [esi + 0x18], ebp
cmp edi, dword [esi + 0x1c]
jle 0x10019125
mov dword [esi + 0x1c], edi
mov ecx, dword [esi + 8]
inc ecx
mov eax, ecx
mov dword [esi + 8], ecx
cmp eax, 0x7d0
jne 0x10019181
mov eax, dword [esp + 0x28]
push esi
push eax
push 0
call dword [sym.imp.GDI32.dll_ExtCreateRegion]
mov edi, eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x10019161
push 2
push edi
push eax
push eax
call dword [sym.imp.GDI32.dll_CombineRgn]
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x10019165
mov dword [esp + 0x1c], edi
push 0
push 0
push SysReAllocString
push SysReAllocString
push ebx
mov dword [esi + 8], 0
call dword [sym.imp.USER32.dll_SetRect]
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x94]
mov ecx, dword [esp + 0x30]
inc ebp
cmp ebp, edi
jl 0x1001903f
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x98]
sub ecx, eax
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x30], ecx
cmp eax, edx
mov dword [esp + 0x20], eax
jl 0x10019027
mov ecx, dword [esp + 0x14]
push esi
add ecx, 2
shl ecx, 4
push ecx
push 0
call dword [sym.imp.GDI32.dll_ExtCreateRegion]
mov esi, eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x100191ed
push 2
push esi
push eax
push eax
call dword [sym.imp.GDI32.dll_CombineRgn]
push esi
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x100191f1
mov dword [esp + 0x1c], esi
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x40]
push edx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x1c]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x78
ret 0x10
mov eax, esi
pop edi
pop esi
pop ebx
add esp, 0x78
ret 0x10