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

Disassembly:
sub esp, 0xb0
mov eax, dword [0x6ee2dc]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0xac], eax
push ebp
xor eax, eax
mov dword [esp + 0x30], eax
push esi
push edi
mov dword [esp + 0x3c], eax
xor ebp, ebp
lea ecx, [esp + 0x38]
mov dword [esp + 0x40], eax
push ecx
mov dword [esp + 0x48], eax
push edx
mov edi, 0x80004005
mov dword [esp + 0x18], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x50], eax
call dword [sym.imp.user32.dll_GetIconInfo]
test eax, eax
je 0x4040a6
mov ecx, dword [esp + 0x44]
lea eax, [esp + 0x94]
push eax
push 0x18
push ecx
call dword [sym.imp.gdi32.dll_GetObjectA]
test eax, eax
je 0x4040a6
cmp dword [esp + 0x48], ebp
mov eax, dword [esp + 0x9c]
push ebx
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x54], ebx
mov esi, eax
jne 0x403dc5
mov dword [esp + 0x28], 1
shr eax, 1
jmp 0x403dcd
mov dword [esp + 0x28], 0
push 0
lea ecx, [esp + 0x18]
push ecx
push 3
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xd0]
mov edx, dword [eax]
push 0x15
push ecx
push ebx
push eax
call dword [edx + 0x90]
mov edi, eax
test edi, edi
jl 0x4040a5
mov edx, esi
imul edx, ebx
add edx, edx
add edx, edx
push edx
call fcn.0062fffc
mov ebp, eax
xor eax, eax
add esp, 4
mov ecx, 0xb
lea edi, [esp + 0x6c]
rep stosd dword es:[edi], eax
push eax
mov dword [esp + 0x54], ebp
mov dword [esp + 0x70], 0x28
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], esi
mov word [esp + 0x7c], 1
mov word [esp + 0x7e], 0x20
mov dword [esp + 0x80], eax
call dword [sym.imp.user32.dll_GetDC]
push eax
mov dword [esp + 0x3c], eax
call dword [sym.imp.gdi32.dll_CreateCompatibleDC]
test eax, eax
mov dword [esp + 0x20], eax
jne 0x403e6a
mov edi, 0x80004005
jmp 0x4040a5
mov ecx, dword [esp + 0x48]
mov edi, dword [sym.imp.gdi32.dll_SelectObject]
push ecx
push eax
call edi
mov ecx, dword [esp + 0x20]
push 0
lea edx, [esp + 0x70]
push edx
push ebp
push esi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x58]
push 0
push eax
push ecx
call dword [sym.imp.gdi32.dll_GetDIBits]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push edx
push eax
call edi
cmp dword [esp + 0x28], 0
jne 0x403f0c
mov ecx, dword [esp + 0x10]
imul ecx, ebx
add ecx, ecx
add ecx, ecx
push ecx
call fcn.0062fffc
mov edx, dword [esp + 0x3c]
add esp, 4
push edx
mov dword [esp + 0x20], eax
call dword [sym.imp.gdi32.dll_CreateCompatibleDC]
test eax, eax
mov dword [esp + 0x2c], eax
jne 0x403edf
mov edi, 0x80004005
jmp 0x4040a5
mov ecx, dword [esp + 0x4c]
push ecx
push eax
call edi
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
push 0
lea edx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x34]
push eax
push edi
push 0
push ecx
push edx
call dword [sym.imp.gdi32.dll_GetDIBits]
jmp 0x403f10
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push 0
push 0
lea edx, [esp + 0x6c]
push edx
push eax
call dword [ecx + 0x34]
test edi, edi
mov dword [esp + 0x18], 0
jbe 0x404077
mov eax, dword [esp + 0x68]
lea edx, [edi*4 - 4]
add esi, 0xffffffff
imul edx, ebx
mov dword [esp + 0x34], eax
imul esi, ebx
mov eax, ebx
neg eax
add eax, eax
mov ecx, ebx
neg ecx
add eax, eax
add edx, ebp
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
mov dword [esp + 0x30], esi
mov dword [esp + 0x24], edx
lea esp, [esp]
xor edi, edi
test ebx, ebx
jbe 0x40404f
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x34]
sub eax, ebp
mov ecx, 0xf
mov dword [esp + 0x60], eax
jmp 0x403f93
mov eax, dword [esp + 0x60]
cmp dword [esp + 0x28], 0
je 0x403fa8
mov esi, dword [esp + 0x30]
mov eax, dword [edx]
add esi, edi
mov esi, dword [ebp + esi*4]
jmp 0x403fad
mov eax, dword [eax + edx]
mov esi, dword [edx]
test esi, esi
jne 0x403fba
or eax, 0xff000000
mov dword [ebx], eax
jmp 0x403fc0
mov dword [ebx], 0
cmp dword [esp + 0xcc], 0
je 0x404029
cmp edi, 0xc
jae 0x404029
mov eax, dword [esp + 0x18]
cmp eax, 5
jae 0x404029
mov esi, 0xccc0
mov word [esp + 0xb0], si
mov word [esp + 0xb8], si
mov ebp, 0xa2a0
mov esi, 1
mov word [esp + 0xb2], bp
mov word [esp + 0xb6], bp
mov ebp, dword [esp + 0x50]
mov word [esp + 0xb4], 0xa4a0
movzx eax, word [esp + eax*2 + 0xb0]
shl esi, cl
test esi, eax
je 0x404029
or dword [ebx], 0xff808080
add edi, 1
add edx, 4
add ebx, 4
sub ecx, 1
cmp edi, dword [esp + 0x54]
jb 0x403f8f
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x18], 1
add dword [esp + 0x30], ecx
lea esi, [ebx*4]
add dword [esp + 0x34], esi
mov esi, dword [esp + 0x18]
add edx, eax
cmp esi, dword [esp + 0x10]
mov dword [esp + 0x24], edx
jb 0x403f70
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x38]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0xc4]
mov edx, dword [eax]
push ecx
mov ecx, dword [esp + 0x48]
push ecx
mov ecx, dword [esp + 0x48]
push ecx
push eax
call dword [edx + 0x28]
mov edi, eax
test edi, edi
jl 0x4040a5
xor edi, edi
pop ebx
mov eax, dword [esp + 0x44]
test eax, eax
mov esi, dword [sym.imp.gdi32.dll_DeleteObject]
je 0x4040b7
push eax
call esi
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4040c2
push eax
call esi
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4040d3
push eax
push 0
call dword [sym.imp.user32.dll_ReleaseDC]
mov eax, dword [esp + 0x28]
test eax, eax
mov esi, dword [sym.imp.gdi32.dll_DeleteDC]
je 0x4040e4
push eax
call esi
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4040ef
push eax
call esi
mov eax, dword [esp + 0x18]
test eax, eax
je 0x404100
push eax
call fcn.0062fced
add esp, 4
test ebp, ebp
je 0x40410d
push ebp
call fcn.0062fced
add esp, 4
mov eax, dword [esp + 0x10]
test eax, eax
je 0x40411b
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov ecx, dword [esp + 0xb8]
mov eax, edi
pop edi
pop esi
pop ebp
call fcn.0062fcdf
add esp, 0xb0
ret