Function at 0x409d10
Capabilities:
Capture screenshot
Read .ini file

Disassembly:
sub esp, 0x488
push ebx
push esi
push edi
xor esi, esi
mov word [esp + 0x18], si
push ebp
mov word [esp + 0x1e], si
mov word [esp + 0x20], si
mov word [esp + 0x22], si
mov eax, dword [0x4104b8]
mov word [esp + 0x24], si
push eax
mov word [esp + 0x2a], si
mov ecx, dword [0x4104bc]
mov word [esp + 0x2c], si
push ecx
mov word [esp + 0x32], si
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x18], eax
cmp dword [0x4104cc], esi
je 0x409d6f
mov eax, dword [0x4104cc]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov esi, dword [esp + 0x49c]
mov dword [0x4104cc], 0
cmp byte [esi], 0
je 0x409db0
cmp dword [0x40e41c], 0
je 0x409db0
push esi
push 0x400
push 0x40ddc0
push 0x410328
push str.Pattern
push str.Control_PanelDesktop
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
jmp 0x409dd6
push 0x400
push 0x40ddc0
push 0x410328
push str.Pattern
push str.Control_PanelDesktop
push Ordinal_2
call fcn.004017f0
add esp, 0x18
cmp byte [0x40ddc0], 0
je 0x409e25
cmp byte [0x40ddc0], 0x28
je 0x409e25
lea eax, [esp + 0x1c]
push eax
push 0x40ddc0
call fcn.00405ab0
lea eax, [esp + 0x1c]
push eax
push 1
push 1
push 8
push 8
call dword [sym.imp.GDI32.dll_CreateBitmap]
mov edi, eax
test edi, edi
je 0x409e54
push edi
call dword [sym.imp.GDI32.dll_CreatePatternBrush]
push edi
mov dword [0x4104cc], eax
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x409e54
cmp byte [esi], 0
je 0x409e40
cmp dword [0x40e424], 0
je 0x409e40
push 1
push esi
call fcn.0040a410
add esp, 8
jmp 0x409e48
push 1
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [0x4104cc], eax
cmp dword [0x4104cc], 0
jne 0x409e6a
push 4
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [0x4104cc], eax
cmp byte [esi], 0
je 0x409e9f
cmp dword [0x40e424], 0
je 0x409e9f
push 1
push esi
call fcn.0040a410
add esp, 8
push eax
mov eax, dword [0x4104bc]
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
mov edi, eax
push 8
push esi
call fcn.0040a410
add esp, 8
jmp 0x409ebe
push 1
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
mov eax, dword [0x4104bc]
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
mov edi, eax
push 8
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
mov eax, dword [0x4104bc]
push eax
call dword [sym.imp.GDI32.dll_SetBkColor]
mov ebx, eax
mov ecx, dword [0x4104bc]
mov eax, dword [0x4104cc]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
mov ebp, eax
push 0xf00021
mov ecx, dword [0x40ddb0]
mov eax, dword [0x40e1cc]
push ecx
mov edx, dword [0x4104bc]
push eax
push 0
push 0
push edx
call dword [sym.imp.GDI32.dll_PatBlt]
push ebp
mov ecx, dword [0x4104bc]
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
push edi
mov ecx, dword [0x4104bc]
push ecx
call dword [sym.imp.GDI32.dll_SetTextColor]
push ebx
mov ecx, dword [0x4104bc]
push ecx
call dword [sym.imp.GDI32.dll_SetBkColor]
cmp dword [0x4104c0], 0
je 0x409f8b
mov eax, dword [0x4104d0]
mov ecx, dword [0x4104c4]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [0x4104c0]
push ecx
call fcn.0040b990
mov dword [0x4104c0], 0
add esp, 4
cmp dword [0x4104c8], 0
je 0x409f8b
mov eax, dword [0x4104c8]
cmp dword [0x40ffe0], eax
je 0x409f81
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [0x4104c8], 0
push esi
call fcn.00406080
add esp, 4
cmp byte [esi], 0
je 0x409fe8
cmp dword [0x40e41c], 0
je 0x409fe8
push esi
push 0x400
push 0x40ddc0
push 0x410328
push str.Wallpaper
push str.Control_PanelDesktop
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x400
push 0x40ddc0
call fcn.00402ed0
add esp, 8
push 1
push 0x40ddc0
call fcn.00402f80
add esp, 8
cmp eax, 3
jne 0x40a00b
push 0x400
push 0x40ddc0
push 0
push str.Wallpaper
push str.Control_PanelDesktop
push Ordinal_2
call fcn.004017f0
add esp, 0x18
push 0
push str.TileWallpaper
push str.Control_PanelDesktop
push Ordinal_2
call fcn.00401850
mov dword [esp + 0x20], eax
add esp, 0x10
push 0
push str.WallpaperStyle
push str.Control_PanelDesktop
push Ordinal_2
call fcn.00401850
add esp, 0x10
mov edi, eax
cmp byte [esi], 0
je 0x40a07d
cmp dword [0x40e41c], 0
je 0x40a07d
mov eax, dword [esp + 0x10]
push esi
push eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push str.TileWallpaper
push str.Control_PanelDesktop
call ebx
mov dword [esp + 0x10], eax
push esi
push edi
push str.WallpaperStyle
push str.Control_PanelDesktop
call ebx
mov edi, eax
cmp byte [0x40ddc0], 0
je 0x40a0a4
cmp byte [0x40ddc0], 0x28
je 0x40a0a4
push 1
push esi
push 0x40ddc0
call fcn.00409a60
add esp, 0xc
mov dword [0x4104c0], eax
cmp dword [0x4104c0], 0
je 0x40a0d8
mov eax, dword [0x4104c0]
mov ecx, dword [0x4104c4]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
lea ecx, [esp + 0x2c]
mov edx, dword [0x4104c0]
push ecx
mov ebx, dword [sym.imp.GDI32.dll_GetObjectA]
push 0x18
push edx
call ebx
jmp 0x40a0de
mov ebx, dword [sym.imp.GDI32.dll_GetObjectA]
push 0x26
mov eax, dword [0x4104bc]
push eax
mov ebp, dword [sym.imp.GDI32.dll_GetDeviceCaps]
call ebp
test ah, 1
je 0x40a1bb
mov dword [esp + 0x14], 0
cmp dword [0x4104c0], 0
je 0x40a1b1
mov eax, dword [0x4104c4]
push eax
call fcn.00405a20
add esp, 4
mov dword [0x4104c8], eax
test eax, eax
jne 0x40a13e
cmp word [esp + 0x3e], 8
jb 0x40a13e
mov eax, dword [0x4104bc]
mov ebp, dword [sym.imp.GDI32.dll_CreateHalftonePalette]
push eax
call ebp
mov dword [0x4104c8], eax
lea eax, [esp + 0x14]
mov ecx, dword [0x4104c8]
push eax
push 4
push ecx
call ebx
lea ecx, [esp + 0x48]
mov edx, dword [0x40ffe0]
push ecx
mov ebp, dword [sym.imp.GDI32.dll_GetPaletteEntries]
push 0x14
push 0
push edx
call ebp
lea ecx, [esp + 0x98]
mov eax, dword [esp + 0x14]
push ecx
mov edx, dword [0x4104c8]
push eax
push 0
push edx
call ebp
mov eax, dword [esp + 0x14]
mov ecx, dword [0x4104c8]
add ax, 0x14
push ecx
movzx eax, ax
shl eax, 0x10
or eax, 0x300
mov dword [esp + 0x48], eax
call dword [sym.imp.GDI32.dll_DeleteObject]
lea ecx, [esp + 0x44]
mov ebp, dword [sym.imp.GDI32.dll_CreatePalette]
push ecx
call ebp
jmp 0x40a1b6
mov eax, dword [0x40ffe0]
mov dword [0x4104c8], eax
cmp dword [0x4104c8], 0
je 0x40a21b
mov eax, dword [0x40e488]
mov ebp, dword [sym.imp.USER32.dll_GetDC]
push eax
call ebp
mov ebp, eax
push 0
mov eax, dword [0x4104c8]
push eax
push ebp
call dword [sym.imp.GDI32.dll_SelectPalette]
push ebp
call dword [sym.imp.GDI32.dll_RealizePalette]
push ebp
mov eax, dword [0x40e488]
push eax
mov ebp, dword [sym.imp.USER32.dll_ReleaseDC]
call ebp
push 0
mov ecx, dword [0x4104c8]
push ecx
mov eax, dword [0x4104bc]
push eax
call dword [sym.imp.GDI32.dll_SelectPalette]
mov ecx, dword [0x4104bc]
push ecx
call dword [sym.imp.GDI32.dll_RealizePalette]
cmp dword [0x4104c0], 0
je 0x40a3c5
lea eax, [esp + 0x2c]
mov ecx, dword [0x4104c0]
push eax
push 0x18
push ecx
call ebx
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
cmp ebp, 1
jge 0x40a24a
mov ebp, 1
cmp dword [esp + 0x34], 1
jge 0x40a256
mov ebx, 1
mov eax, dword [0x40ddb0]
mov ecx, dword [0x40e1cc]
push eax
mov edx, dword [0x4104bc]
push ecx
push 0
push 0
push edx
call dword [sym.imp.GDI32.dll_IntersectClipRect]
push 3
mov ecx, dword [0x4104bc]
push ecx
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
cmp dword [esp + 0x10], 0
je 0x40a324
mov eax, dword [esp + 0x34]
push 0xcc0020
mov ecx, dword [esp + 0x34]
push eax
push ecx
mov edx, dword [0x4104c4]
push 0
push 0
push edx
mov eax, dword [0x4104bc]
push ebx
mov edi, ebp
push ebp
push 0
push 0
push eax
call dword [sym.imp.GDI32.dll_StretchBlt]
cmp dword [0x40e1cc], ebp
jle 0x40a2e9
push 0xcc0020
mov eax, dword [0x4104bc]
push 0
push 0
push eax
push ebx
push ebp
push 0
push edi
push eax
add edi, ebp
call dword [sym.imp.GDI32.dll_BitBlt]
cmp edi, dword [0x40e1cc]
jl 0x40a2c4
xor edi, edi
cmp dword [0x40ddb0], edi
jle 0x40a38b
push 0xcc0020
mov eax, dword [0x4104bc]
push 0
mov ecx, dword [0x40e1cc]
push 0
push eax
push ebx
push ecx
push edi
push 0
push eax
add edi, ebx
call dword [sym.imp.GDI32.dll_BitBlt]
cmp edi, dword [0x40ddb0]
jl 0x40a2f7
jmp 0x40a38b
mov eax, dword [esp + 0x34]
push 0xcc0020
mov ecx, dword [esp + 0x34]
push eax
push ecx
mov edx, dword [0x4104c4]
test edi, 2
push 0
push 0
push edx
je 0x40a360
mov eax, dword [0x40ddb0]
mov ecx, dword [0x40e1cc]
push eax
mov edx, dword [0x4104bc]
push ecx
push 0
push 0
push edx
jmp 0x40a385
push ebx
mov eax, dword [0x40ddb0]
push ebp
sub eax, ebx
cdq
sub eax, edx
sar eax, 1
push eax
mov eax, dword [0x40e1cc]
sub eax, ebp
mov ecx, dword [0x4104bc]
cdq
sub eax, edx
sar eax, 1
push eax
push ecx
call dword [sym.imp.GDI32.dll_StretchBlt]
mov eax, dword [0x4104d0]
mov ecx, dword [0x4104c4]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
push 1
push 0xf
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
mov ecx, dword [0x4104bc]
push ecx
call dword [sym.imp.GDI32.dll_SelectPalette]
push 0
mov ecx, dword [0x4104bc]
push ecx
call dword [sym.imp.GDI32.dll_SelectClipRgn]
push esi
mov eax, dword [0x4104bc]
push eax
call fcn.0040a500
mov eax, dword [0x4104bc]
push eax
call fcn.00406d00
mov eax, dword [esp + 0x18]
mov ecx, dword [0x4104bc]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
push 0
mov ecx, dword [0x40e488]
push 0x40e490
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x488
ret 4