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

Disassembly:
sub esp, 0x160
mov dword [esp + 4], 0
push ebx
push esi
push edi
push ebp
mov ebp, dword [esp + 0x174]
test ebp, ebp
jne 0x4025e4
xor eax, eax
jmp 0x403137
mov dword [ebp + 0x444], 1
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x402618
mov eax, dword [ebp + 8]
cmp eax, 3
je 0x403133
push ebp
call fcn.00402580
add esp, 4
push ebp
call fcn.004018d0
add esp, 4
jmp 0x403133
mov byte [esp + 0x13], 0
mov eax, dword [esp + 0x178]
test eax, eax
jne 0x402641
mov eax, dword [ebp + 0x464]
push eax
call dword [sym.imp.USER32.dll_GetDC]
mov byte [esp + 0x13], 1
mov dword [esp + 0x178], eax
mov eax, dword [ebp + 0x458]
test eax, eax
jne 0x402654
push ebp
call fcn.00403150
add esp, 4
push 0
mov eax, dword [ebp + 0x458]
mov ecx, dword [esp + 0x17c]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectPalette]
mov ecx, dword [esp + 0x178]
mov esi, dword [sym.imp.GDI32.dll_RealizePalette]
mov dword [esp + 0x18], eax
push ecx
call esi
mov eax, dword [ebp + 0x440]
test eax, eax
je 0x402703
mov dword [esp + 0x14], 0x100
mov al, byte [esp + 0x13]
test al, al
jne 0x4026e5
mov eax, dword [esp + 0x18]
push 0
mov ecx, dword [esp + 0x17c]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectPalette]
mov byte [esp + 0x13], 1
mov ecx, dword [ebp + 0x464]
push ecx
call dword [sym.imp.USER32.dll_GetDC]
push 0
mov ecx, dword [ebp + 0x458]
mov dword [esp + 0x17c], eax
push ecx
push eax
call dword [sym.imp.GDI32.dll_SelectPalette]
mov ecx, dword [esp + 0x178]
mov dword [esp + 0x18], eax
push ecx
call esi
xor esi, esi
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x14]
mov dword [esp + 0x188], esi
mov dword [esp + 0x18c], ecx
mov dword [ebp + 0x440], esi
jmp 0x402711
mov esi, dword [esp + 0x184]
mov ebx, dword [esp + 0x190]
mov eax, ebx
mov ecx, dword [esp + 0x18c]
or eax, ecx
je 0x403101
mov eax, dword [ebp + 8]
cmp eax, 4
je 0x402738
cmp eax, 5
je 0x4028b8
jmp 0x403101
push ebp
call fcn.00402580
mov eax, dword [esp + 0x17c]
add esp, 4
push 3
push eax
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x24]
mov dword [esp + 0xd0], edi
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], ebx
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
mul ecx
mov ecx, dword [esp + 0xd0]
div ecx
mov ecx, dword [ebp + 0x20]
mov edx, dword [esp + 0x18c]
mov dword [esp + 0xa8], eax
mov dword [esp + 0xc8], ecx
mov eax, dword [ebp + 0x10]
mov dword [esp + 0xcc], edx
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0xc8]
mul ecx
mov ecx, dword [esp + 0xc4]
div ecx
mov ecx, dword [esp + 0x188]
mov dword [esp + 0xa4], eax
mov eax, dword [ebp + 0x24]
mov dword [esp + 0xb8], edi
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], ecx
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xbc]
mul ecx
mov ecx, dword [esp + 0xb8]
div ecx
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0xa0], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xac], eax
mov dword [esp + 0xb4], esi
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb0]
mul ecx
mov ecx, dword [esp + 0xac]
div ecx
push 0xcc0020
mov ecx, dword [ebp + 0x448]
sub di, bx
push 1
movsx edx, bx
sub di, word [esp + 0x190]
push 0x418660
push ecx
push edx
movsx ecx, word [esp + 0x1a0]
movsx ebx, word [esp + 0xbc]
push ecx
movsx edx, si
movsx ecx, di
push ecx
push edx
movsx ecx, word [esp + 0xc4]
add ax, word [esp + 0x19c]
push ebx
push ecx
mov ecx, dword [esp + 0xc8]
add cx, word [esp + 0x1a8]
movsx edx, cx
movsx ecx, ax
push edx
push ecx
mov edx, dword [esp + 0x1a8]
push edx
call dword [sym.imp.GDI32.dll_StretchDIBits]
jmp 0x403101
xor edi, edi
mov eax, dword [ebp + 0x484]
cmp eax, edi
je 0x402948
mov eax, dword [ebp + 0x464]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x403101
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, dword [ebp + 0x464]
cmp eax, ecx
je 0x4029a5
push ecx
push eax
call dword [sym.imp.USER32.dll_IsChild]
test eax, eax
jne 0x4029a5
mov eax, dword [ebp + 0x490]
cmp eax, edi
je 0x402948
mov eax, dword [ebp + 0x464]
mov dword [ebp + 0x490], edi
push eax
xor esi, esi
mov byte [esp + 0x17], 1
call dword [sym.imp.USER32.dll_GetDC]
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x14]
mov dword [esp + 0x178], eax
mov dword [esp + 0x188], edi
mov dword [esp + 0x14], 0x100
mov dword [esp + 0x18c], ecx
mov eax, dword [ebp + 0x1c]
test eax, eax
mov eax, dword [0x416078]
jne 0x402efc
test eax, eax
je 0x402ebc
mov ecx, dword [esp + 0x188]
push 0xcc0020
push ecx
mov eax, dword [ebp + 0x45c]
mov edx, dword [esp + 0x194]
push esi
mov edi, dword [esp + 0x188]
push eax
mov eax, dword [esp + 0x190]
push ebx
push edx
add eax, ecx
push eax
add edi, esi
mov eax, dword [esp + 0x194]
push edi
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
jmp 0x403101
mov eax, dword [ebp + 0x48c]
test eax, eax
jne 0x402aa1
push 0
mov edi, dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [esp + 0xec], 0
mov dword [esp + 0xe8], 0
call edi
mov dword [esp + 0xec], eax
push 1
call edi
mov dword [esp + 0xf0], eax
push 0
lea eax, [ebp + 0x494]
push eax
push 0
push 0x30
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov edi, dword [ebp + 0x464]
test edi, edi
je 0x402aa1
lea eax, [esp + 0xf4]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0xf4]
sub eax, ecx
mov edx, dword [esp + 0xec]
cmp eax, edx
jl 0x402a4b
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0xf8]
sub eax, ecx
mov edx, dword [esp + 0xf0]
cmp eax, edx
jge 0x402a5a
push edi
call dword [sym.imp.USER32.dll_GetParent]
mov edi, eax
test edi, edi
jne 0x402a06
jmp 0x402aa1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, dword [esp + 0xe4]
mov eax, dword [esp + 0xe8]
mov dword [ebp + 0x494], edi
lea ecx, [esp + 0xe4]
mov dword [ebp + 0x498], eax
lea edx, [ebp + 0x494]
mov edi, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [edx + 8], edi
mov dword [edx + 0xc], ecx
xor edi, edi
mov eax, dword [ebp + 0x490]
mov dword [ebp + 0x48c], 1
cmp eax, edi
jne 0x402b1c
xor esi, esi
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x14]
mov dword [esp + 0x188], edi
mov eax, dword [ebp + 0x480]
mov dword [esp + 0x18c], ecx
mov dword [ebp + 0x490], 1
mov dword [esp + 0x14], 0x100
test al, 8
je 0x402b1c
mov eax, dword [ebp + 0x464]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push 0x42
mov ecx, dword [ebp + 0x20]
mov byte [esp + 0x17], 1
mov dword [esp + 0x17c], eax
mov eax, dword [ebp + 0x24]
mov edx, dword [esp + 0x17c]
push eax
push ecx
push edi
push edi
push edx
call dword [sym.imp.GDI32.dll_PatBlt]
mov edi, dword [esp + 0x17c]
mov eax, dword [esp + 0x180]
lea ecx, [esp + 0xdc]
mov edx, dword [ebp + 0x464]
mov dword [esp + 0xdc], edi
push ecx
mov dword [esp + 0xe4], eax
push edx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov ecx, dword [ebp + 0x488]
test ecx, ecx
je 0x402bbc
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x402b8f
lea eax, [ebx*2]
mov edx, dword [esp + 0x180]
mov ecx, dword [esp + 0x188]
push eax
mov eax, dword [esp + 0x190]
add eax, eax
push eax
lea eax, [edx + ecx*2]
push eax
lea edx, [edi + esi*2]
push edx
mov ecx, dword [ebp + 0x464]
push ecx
jmp 0x402bb3
mov ecx, dword [esp + 0x18c]
push ebx
mov eax, dword [esp + 0x184]
push ecx
mov edx, dword [esp + 0x190]
add edi, esi
add eax, edx
push eax
push edi
mov eax, dword [ebp + 0x464]
push eax
call fcn.00403d30
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x402cc6
mov eax, dword [esp + 0xdc]
mov edi, dword [esp + 0x188]
mov ecx, dword [esp + 0xe0]
nop
lea edi, [ecx + edi*2]
mov ecx, dword [esp + 0x18c]
lea edx, [eax + esi*2]
nop
lea eax, [edx + ecx*2]
lea ecx, [edi + ebx*2]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
cmp edx, dword [ebp + 0x49c]
jge 0x402e88
mov eax, dword [ebp + 0x494]
mov ecx, dword [esp + 0x28]
cmp ecx, eax
jle 0x402e88
mov ecx, dword [ebp + 0x498]
cmp dword [esp + 0x24], ecx
jle 0x402e88
mov ecx, dword [ebp + 0x4a0]
cmp edi, ecx
jge 0x402e88
cmp edx, eax
jge 0x402c52
sub eax, edx
mov ecx, dword [esp + 0x18c]
cdq
sub eax, edx
sar eax, 1
add esi, eax
sub ecx, eax
mov dword [esp + 0x18c], ecx
mov eax, dword [ebp + 0x498]
cmp edi, eax
jge 0x402c75
sub eax, edi
mov ecx, dword [esp + 0x188]
cdq
sub eax, edx
sar eax, 1
add ecx, eax
sub ebx, eax
mov dword [esp + 0x188], ecx
mov eax, dword [ebp + 0x49c]
mov ecx, dword [esp + 0x28]
cmp ecx, eax
jle 0x402ca0
sub eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x18c]
sar eax, 1
add edx, eax
mov dword [esp + 0x18c], edx
je 0x402e88
mov eax, dword [ebp + 0x4a0]
mov ecx, dword [esp + 0x24]
cmp ecx, eax
jle 0x402dac
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add ebx, eax
jne 0x402dac
jmp 0x402e88
mov edx, dword [esp + 0xdc]
mov edi, dword [esp + 0xe0]
add edx, esi
add edi, dword [esp + 0x188]
mov ecx, dword [esp + 0x18c]
add ecx, edx
lea eax, [edi + ebx]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
cmp edx, dword [ebp + 0x49c]
jge 0x402e88
mov eax, dword [ebp + 0x494]
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jle 0x402e88
mov ecx, dword [ebp + 0x498]
cmp dword [esp + 0x1c], ecx
jle 0x402e88
cmp edi, dword [ebp + 0x4a0]
jge 0x402e88
cmp edx, eax
jge 0x402d43
sub eax, edx
mov edx, dword [esp + 0x18c]
add esi, eax
sub edx, eax
mov dword [esp + 0x18c], edx
cmp edi, ecx
jge 0x402d5b
sub ecx, edi
mov eax, dword [esp + 0x188]
add eax, ecx
sub ebx, ecx
mov dword [esp + 0x188], eax
mov eax, dword [ebp + 0x49c]
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jle 0x402d8e
mov eax, dword [esp + 0x18c]
mov edx, dword [ebp + 0x49c]
sub eax, ecx
mov dword [esp + 0x18c], eax
add eax, edx
mov dword [esp + 0x18c], eax
je 0x402e88
mov eax, dword [ebp + 0x4a0]
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
jle 0x402dac
sub ebx, ecx
mov ecx, dword [ebp + 0x4a0]
add ebx, ecx
je 0x402e88
mov eax, dword [ebp + 0x480]
test eax, 0xc0000000
je 0x402dc9
mov eax, dword [esp + 0xdc]
add eax, eax
mov dword [esp + 0xdc], eax
lea edi, [esp + 0x104]
xor eax, eax
mov ecx, 0x1b
rep stosd dword es:[edi], eax
mov dword [esp + 0x108], 1
mov dword [esp + 0x16c], 0x200
mov dword [esp + 0x104], 0x6c
mov eax, dword [ebp + 0x47c]
push 0
lea ecx, [esp + 0x108]
push 1
push ecx
mov edi, dword [eax]
push 0
push eax
call dword [edi + 0x64]
cmp eax, 0x887601c2
je 0x402e21
test eax, eax
je 0x402e33
jmp 0x402e9f
mov eax, dword [ebp + 0x47c]
push eax
mov edi, dword [eax]
call dword [edi + 0x6c]
test eax, eax
je 0x402dfa
jmp 0x402e9f
mov edx, dword [esp + 0x188]
push ebx
mov ecx, dword [esp + 0x190]
mov eax, dword [ebp + 0x18]
push ecx
mov ebx, dword [ebp + 0x448]
mov ecx, dword [esp + 0x11c]
push edx
push esi
push eax
mov eax, dword [esp + 0x128]
push ebx
mov edi, dword [esp + 0xf4]
push edx
imul eax, dword [esp + 0xfc]
push esi
push ecx
mov esi, dword [esp + 0x14c]
mov ecx, dword [ebp + 0x484]
add eax, esi
add eax, edi
push eax
push ecx
call sym.smackplw.exe__SmackBlit_44
mov eax, dword [ebp + 0x47c]
mov ecx, dword [esp + 0x128]
mov ebx, dword [eax]
push ecx
push eax
call dword [ebx + pe_nt_image_headers32]
mov eax, dword [ebp + 0x488]
test eax, eax
je 0x403101
mov eax, dword [esp + 0x2c]
push eax
call fcn.00403df0
jmp 0x403101
mov ecx, dword [esp + 0x188]
mov eax, dword [ebp + 0x45c]
mov edx, dword [esp + 0x18c]
push ecx
push esi
push eax
mov eax, dword [esp + 0x18c]
push ebx
push edx
add eax, ecx
mov edi, dword [esp + 0x190]
push eax
add edi, esi
mov eax, dword [esp + 0x190]
push edi
push eax
call dword [0x418644]
jmp 0x403101
test eax, eax
mov eax, dword [ebp + 0x14]
je 0x403024
mov ecx, dword [ebp + 0x24]
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], ecx
mov dword [esp + 0x9c], ebx
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x98]
mul ecx
mov ecx, dword [esp + 0x94]
div ecx
mov ecx, dword [ebp + 0x20]
mov edx, dword [esp + 0x18c]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x8c], ecx
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x90], edx
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x8c]
mul ecx
mov ecx, dword [esp + 0x88]
div ecx
mov edi, eax
mov ecx, dword [ebp + 0x24]
mov eax, dword [ebp + 0x14]
mov edx, dword [esp + 0x188]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], edx
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x80]
mul ecx
mov ecx, dword [esp + 0x7c]
div ecx
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x78], esi
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mul ecx
mov ecx, dword [esp + 0x70]
div ecx
mov ecx, dword [esp + 0x18c]
push 0xcc0020
mov edx, dword [esp + 0x18c]
push ebx
push ecx
mov ebx, dword [ebp + 0x45c]
mov ecx, dword [esp + 0x78]
push edx
push esi
push ebx
mov esi, dword [esp + 0x198]
push ecx
mov ecx, dword [esp + 0x84]
push edi
add ecx, esi
add eax, dword [esp + 0x19c]
push ecx
push eax
mov ecx, dword [esp + 0x1a0]
push ecx
call dword [sym.imp.GDI32.dll_StretchBlt]
jmp 0x403101
mov edi, dword [ebp + 0x24]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], ebx
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mul ecx
mov ecx, dword [esp + 0x5c]
div ecx
mov ecx, dword [ebp + 0x20]
mov edx, dword [esp + 0x18c]
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], ecx
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x58], edx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mul ecx
mov ecx, dword [esp + 0x50]
div ecx
mov ecx, dword [esp + 0x188]
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mul ecx
mov ecx, dword [esp + 0x44]
div ecx
mov edi, eax
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mul ecx
mov ecx, dword [esp + 0x38]
div ecx
mov ecx, dword [esp + 0x18c]
push ebx
mov edx, dword [esp + 0x18c]
push ecx
push edx
mov ebx, dword [ebp + 0x45c]
mov ecx, dword [esp + 0x40]
push esi
mov edx, dword [esp + 0x40]
push ebx
add eax, dword [esp + 0x190]
push ecx
mov ecx, dword [esp + 0x198]
push edx
add ecx, edi
push ecx
push eax
mov ecx, dword [esp + 0x19c]
push ecx
call dword [0x418640]
mov eax, dword [esp + 0x18]
push 0
mov ecx, dword [esp + 0x17c]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectPalette]
mov cl, byte [esp + 0x13]
test cl, cl
je 0x403133
mov eax, dword [esp + 0x178]
mov ecx, dword [ebp + 0x464]
push eax
push ecx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esp + 0x14]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x160
ret 0x20