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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov eax, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x70]
lea ecx, [esp + 0x44]
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], 0x18
mov eax, dword [sym.imp.GDI32.dll_GetObjectW]
call eax
sub esp, 0xc
movzx eax, word [esp + 0x54]
movzx ecx, word [esp + 0x56]
mov edx, eax
not edx
mov esi, ecx
and esi, edx
mov edx, ecx
not edx
mov edi, eax
and edi, edx
imul edi, esi
mov edx, eax
and edx, ecx
or eax, ecx
imul eax, edx
add eax, edi
mov word [esp + 0x22], ax
movzx eax, word [esp + 0x22]
mov ecx, eax
sub ecx, 1
je 0x447dea
jmp 0x447dbf
mov ecx, eax
sub ecx, 4
je 0x447dea
jmp 0x447dc8
mov ecx, eax
sub ecx, 8
je 0x447dea
jmp 0x447dd1
mov ecx, eax
sub ecx, 0x10
je 0x447e01
jmp 0x447dda
mov ecx, eax
sub ecx, 0x18
je 0x447e01
jmp 0x447de3
sub eax, 0x20
jne 0x447e0d
jmp 0x447dea
jmp 0x447dec
movzx ecx, word [esp + 0x22]
mov eax, 1
shl eax, cl
shl eax, 2
mov dword [esp + 0x28], eax
jmp 0x447e01
jmp 0x447e03
mov dword [esp + 0x28], 0
jmp 0x447e0d
mov ecx, dword [esp + 0x48]
movzx eax, word [esp + 0x22]
imul ecx, eax
add ecx, 0x1f
xor ecx, 0xffffffff
mov eax, ecx
xor eax, 0xffffffff
xor ecx, 0xffffffff
or eax, ecx
xor eax, 0xffffffff
or eax, 0x1f
xor eax, 0xffffffff
and eax, 0xffffffff
mov ecx, 8
cdq
idiv ecx
mov ecx, dword [esp + 0x4c]
mov esi, ecx
xor esi, 0xffffffff
mov edx, ecx
xor edx, 0xffffffff
and esi, edx
or esi, 0
xor esi, 0xffffffff
or esi, 0
xor esi, 0xffffffff
mov edx, eax
xor edx, esi
xor edx, 0xffffffff
mov edi, eax
or edi, esi
and edi, edx
mov edx, eax
or edx, esi
xor edx, 0xffffffff
mov esi, edx
xor esi, 0xffffffff
mov ebx, edi
and ebx, esi
mov esi, edi
xor esi, 0xffffffff
mov ebp, edx
and ebp, esi
imul ebp, ebx
mov esi, edx
and esi, edi
or edx, edi
imul edx, esi
add edx, ebp
mov esi, eax
and esi, ecx
xor esi, 0xffffffff
mov edi, eax
xor edi, 0xffffffff
mov ebx, ecx
xor ebx, 0xffffffff
or edi, ebx
and esi, edi
xor esi, 0xffffffff
or eax, ecx
imul eax, esi
xor ecx, ecx
sub ecx, eax
xor eax, eax
sub eax, edx
add ecx, eax
xor eax, eax
sub eax, ecx
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x28]
mov eax, ecx
and eax, 0x28
shl eax, 1
mov esi, ecx
xor esi, 0xffffffff
and esi, 0xdd75e16a
and ecx, 0x228a1e95
or esi, ecx
xor esi, 0xdd75e142
add esi, eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov dword [esp], eax
mov dword [esp + 4], 8
mov dword [esp + 8], esi
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
sub esp, 0xc
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov dword [eax], 0x28
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x1c]
mov word [eax + 0xc], 1
mov ax, word [esp + 0x22]
mov ecx, dword [esp + 0x1c]
mov word [ecx + 0xe], ax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x10], 0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], 0
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x1c], 0
movzx eax, word [esp + 0x22]
cmp eax, 0x10
jge 0x447f85
movzx ecx, word [esp + 0x22]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x24], 0
mov word [esp + 0x34], 0x4d42
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
mov ecx, eax
and ecx, 0xfffffffb
mov edx, eax
or edx, 0xfffffffb
xor edx, 0xffffffff
imul edx, ecx
mov ecx, eax
and ecx, 4
or eax, 4
imul eax, ecx
add eax, edx
add eax, 0x36
mov dword [esp + 0x3e], eax
mov word [esp + 0x3a], 0
mov word [esp + 0x3c], 0
mov eax, dword [esp + 0x3e]
mov ecx, dword [esp + 0x24]
xor edx, edx
sub edx, eax
xor eax, eax
sub eax, ecx
add edx, eax
xor eax, eax
sub eax, edx
mov dword [esp + 0x36], eax
mov esi, dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], esi
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
sub esp, 0xc
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [esp], 0
call dword [sym.imp.USER32.dll_GetDC]
sub esp, 4
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x4c]
movzx edx, dx
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x30]
xor ebx, ebx
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], 0
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call dword [sym.imp.GDI32.dll_GetDIBits]
sub esp, 0x1c
mov eax, dword [esp + 0x30]
xor ecx, ecx
mov dword [esp], 0
mov dword [esp + 4], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
sub esp, 8
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
shl eax, 2
add eax, 0x36
add eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
mov dword [ecx], eax
mov eax, dword [esp + 0x78]
mov esi, dword [eax]
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], esi
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
sub esp, 0xc
mov ecx, dword [esp + 0x74]
mov dword [ecx], eax
mov eax, dword [esp + 0x74]
mov edi, dword [eax]
lea eax, [esp + 0x34]
mov ecx, 0xe
xchg esi, eax
rep movsb byte es:[edi], byte [esi]
xchg esi, eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x20]
mov eax, ecx
xor eax, 0xffffffff
and eax, 4
mov edx, ecx
and edx, 0xfffffffb
imul edx, eax
mov eax, ecx
and eax, 4
or ecx, 4
imul ecx, eax
add ecx, edx
xor ecx, 0xffffffff
sub ecx, 0xffffffff
mov eax, ecx
and eax, 0xffffffd7
xor ecx, 0xffffffff
and ecx, 0x28
sub ecx, eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x74]
mov edi, dword [edx]
add edi, 0xe
xchg esi, eax
rep movsb byte es:[edi], byte [esi]
xchg esi, eax
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x74]
mov edi, dword [edx]
mov edx, dword [esp + 0x1c]
mov edx, dword [edx + 0x20]
shl edx, 2
and edx, edx
xor edx, 0xffffffff
xor edx, 0xffffffff
or edx, 0
and edx, 0xffffffff
xor edx, 0xffffffff
add edx, 0xe44403c8
sub edx, 0xffffffff
sub edx, 0xe44403c8
mov esi, 0x36
sub esi, edx
add edi, esi
xchg esi, eax
rep movsb byte es:[edi], byte [esi]
xchg esi, eax
mov esi, dword [esp + 0x2c]
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], esi
call dword [sym.imp.KERNEL32.dll_HeapFree]
sub esp, 0xc
mov esi, dword [esp + 0x1c]
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], esi
call dword [sym.imp.KERNEL32.dll_HeapFree]
sub esp, 0xc
mov eax, 1
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret