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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x88
mov eax, dword [0x4ef52c]
xor eax, esp
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 0xc]
push esi
mov esi, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc], eax
push edi
test esi, esi
jle 0x414af2
mov edi, dword [ebp + 8]
lfence
test edi, edi
je 0x414af2
lea eax, [esp + 0x40]
xorps xmm0, xmm0
push eax
push 0x18
push dword [ecx + 4]
movaps xmmword [esp + 0x4c], xmm0
movq qword [esp + 0x5c], xmm0
call dword [sym.imp.GDI32.dll_GetObjectW]
cmp word [esp + 0x50], 1
jne 0x414af2
mov ax, word [esp + 0x52]
cmp ax, 0x18
je 0x414892
cmp ax, 0x20
jne 0x414af2
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0xc]
push eax
lea edx, [esp + 0x28]
call fcn.004132f0
add esp, 4
mov dword [esp + 0x34], eax
test eax, eax
je 0x414ae9
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x414af2
mov eax, edi
cdq
mov edi, eax
mov eax, ecx
xor edi, edx
mov ecx, esi
sub edi, edx
cdq
imul ecx, edi
xor eax, edx
sub eax, edx
mov dword [esp + 0x3c], edi
lfence
mov dword [esp + 0x2c], eax
shl ecx, 2
push ecx
call fcn.004994a3
mov ecx, dword [esp + 0x14]
add esp, 4
mov dword [esp + 0x14], eax
test ecx, ecx
je 0x41497d
mov eax, edi
mov dword [esp + 0x18], 0
cdq
idiv ecx
lfence
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2c]
cdq
idiv ecx
xor edx, edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], edx
mov eax, edx
xor edx, edx
div ecx
mov edx, dword [esp + 0x14]
push dword [esp + 0x38]
imul eax, esi
push esi
lea eax, [edx + eax*4]
xor edx, edx
push eax
mov eax, dword [esp + 0x24]
div ecx
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
push dword [esp + 0x2c]
imul eax, edx
lea ecx, [ecx + eax*4]
call fcn.004146c0
mov edx, dword [esp + 0x38]
add esp, 0x10
mov eax, dword [esp + 0x18]
add edx, edi
add eax, dword [esp + 0x2c]
sub dword [esp + 0xc], 1
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], eax
jne 0x414924
mov ecx, dword [esp + 0x1c]
call fcn.00476a36
cmp word [esp + 0x52], 0x18
jne 0x414a11
cmp dword [esp + 0x14], 0
je 0x414a11
test edi, edi
je 0x414a11
mov eax, edi
cdq
mov ecx, eax
lea eax, [esi + 1]
xor ecx, edx
lea eax, [eax + eax*2]
sub ecx, edx
and eax, 0xfffffffc
mov dword [esp + 0xc], ecx
mov dword [esp + 0x20], eax
test ecx, ecx
jle 0x414a11
mov eax, dword [esp + 0x14]
lea ecx, [esi*4]
mov edi, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], eax
mov edx, eax
mov eax, edi
movzx ecx, byte [edx]
lea edx, [edx + 4]
mov byte [eax], cl
lea eax, [eax + 3]
movzx ecx, byte [edx - 3]
mov byte [eax - 2], cl
movzx ecx, byte [edx - 2]
mov byte [eax - 1], cl
sub esi, 1
jne 0x4149d4
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x24]
add edi, dword [esp + 0x20]
sub dword [esp + 0xc], 1
mov esi, dword [esp + 0x30]
mov dword [esp + 0x10], eax
jne 0x4149d0
mov edi, dword [esp + 0x3c]
push 0
mov eax, 1
mov dword [esp + 0x68], esi
mov si, word [esp + 0x56]
neg edi
mov word [esp + 0x70], ax
lea eax, [esp + 0x64]
push eax
mov word [esp + 0x76], si
mov esi, dword [esp + 0x1c]
push esi
push 4
push eax
push 0
mov dword [esp + 0x78], 0x28
mov dword [esp + 0x80], edi
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_CreateDIBitmap]
push 0
push 0
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_CopyImage]
mov ecx, dword [esp + 0x1c]
push eax
call fcn.00476931
push esi
call fcn.004988d3
add esp, 4
push dword [esp + 0x34]
call fcn.004988d3
add esp, 4
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.00488461
mov esp, ebp
pop ebp
ret
push eax
call fcn.004988d3
add esp, 4
mov ecx, dword [esp + 0x8c]
xor al, al
pop edi
pop esi
xor ecx, esp
call fcn.00488461
mov esp, ebp
pop ebp
ret