Function at 0x40a500
Capabilities:
Read .ini file

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0xb4
push ebx
cmp byte [eax], 0
push esi
push edi
push ebp
je 0x40a55b
cmp dword [0x40e428], 0
je 0x40a55b
push eax
push 0x400
push 0x40ddc0
push 0x410328
push str.IconMetrics
mov esi, 0x40ddc0
push str.Metrics
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x40ddc0
call fcn.00402370
lea edi, [esp + 0x7c]
add esp, 4
mov ecx, 0x13
rep movsd dword es:[edi], dword [esi]
jmp 0x40a574
lea eax, [esp + 0x78]
push 0
mov dword [esp + 0x7c], 0x4c
push eax
push 0x4c
push 0x2d
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
lea eax, [esp + 0x88]
push eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectA]
mov dword [esp + 0x28], eax
test eax, eax
je 0x40a59f
mov esi, dword [esp + 0xc8]
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x30], eax
jmp 0x40a5a6
mov esi, dword [esp + 0xc8]
lea eax, [esp + 0x40]
mov ebp, 0xd
push eax
push esi
call dword [sym.imp.GDI32.dll_GetTextMetricsA]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x34], ecx
lea eax, [ecx*4]
cdq
idiv ebp
mov ecx, eax
mov eax, 0xffffffe0
sub eax, ecx
mov edi, 3
sub eax, dword [esp + 0x40]
lea eax, [eax + eax*2]
sub eax, dword [0x40e404]
add eax, dword [0x40e40c]
cdq
idiv edi
cdq
mov edi, eax
sub eax, edx
sar eax, 1
mov edx, dword [0x40e404]
add edx, eax
mov eax, 0x40d30c
mov dword [0x40d304], edx
mov edx, dword [eax - 8]
add eax, 8
add edx, ecx
add edx, edi
add edx, dword [esp + 0x40]
add edx, 0x20
cmp eax, 0x40d31c
mov dword [eax - 8], edx
jb 0x40a608
mov ebx, 0x40d324
mov edi, 0x40d304
mov eax, dword [edi]
mov edx, dword [esp + 0x40]
add ebx, 0x10
add edi, 8
lea eax, [eax + ecx + 0x20]
add edx, eax
mov dword [ebx - 0x10], eax
mov dword [ebx - 8], edx
cmp edi, 0x40d31c
jb 0x40a62d
mov eax, dword [esp + 0xcc]
cmp byte [eax], 0
je 0x40a691
cmp dword [0x40e424], 0
je 0x40a691
push eax
push 0x200
push 0x40e5c0
push 0x410328
push 0x40f6fc
push str.Control_PanelColors
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x40e5c0
call fcn.00402c50
add esp, 4
jmp 0x40a699
push 1
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
push esi
call dword [sym.imp.GDI32.dll_GetNearestColor]
cmp al, 0x80
ja 0x40a6b9
cmp ah, 0x80
ja 0x40a6b9
mov ecx, eax
mov edi, 0xffffff
shr ecx, 0x10
cmp cl, 0x80
jbe 0x40a6bb
xor edi, edi
push eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [esp + 0x20], eax
push edi
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
push 1
mov ebp, 0x40d320
push esi
mov edi, 0x40d200
mov ebx, 0x40f080
mov dword [esp + 0x34], eax
call dword [sym.imp.GDI32.dll_SetBkMode]
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0x40d304
mov eax, dword [esp + 0x34]
mov dword [esp + 0x34], 0xfffffff3
lea ecx, [eax + eax*2]
mov eax, ecx
cdq
idiv dword [esp + 0x34]
mov dword [esp + 0x34], 0xd
mov dword [esp + 0x24], eax
mov eax, ecx
cdq
idiv dword [esp + 0x34]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xcc]
cmp byte [eax], 0
je 0x40a7a0
cmp dword [0x40e420], 0
je 0x40a7a0
cmp dword [esp + 0x14], 2
push eax
push 0x200
push 0x40e5c0
mov eax, 0x40fcbc
push 0x410328
je 0x40a75d
mov eax, str.DefaultValue
push eax
mov eax, dword [ebx]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x200
push 0x40e5c0
call fcn.00402ed0
add esp, 8
push 1
push 0x40e5c0
call fcn.00402f80
add esp, 8
cmp eax, 3
jne 0x40a7c7
push 0x40e5c0
mov eax, 0x40fcbc
cmp dword [esp + 0x18], 2
je 0x40a7b6
jmp 0x40a7b1
push 0x40e5c0
mov eax, 0x40fcbc
cmp dword [esp + 0x18], 2
je 0x40a7b6
mov eax, 0x410328
push eax
mov eax, dword [ebx]
push eax
push Ordinal_2
call fcn.00402a30
add esp, 0x10
push 0x2c
push 0x40e5c0
call fcn.00405800
mov dword [esp + 0x20], eax
add esp, 8
cmp byte [eax], 0
je 0x40a7f8
push eax
call dword [sym.imp.USER32.dll_CharNextA]
push eax
call fcn.00405830
mov ecx, dword [esp + 0x1c]
add esp, 4
mov byte [ecx], 0
jmp 0x40a7fa
xor eax, eax
lea ecx, [esp + 0x10]
push 0
push 0
push ecx
push eax
push 0x40e5c0
call fcn.00405d50
add esp, 0x14
cmp dword [esp + 0x10], 0
je 0x40a839
mov eax, dword [esp + 0x10]
push 3
mov ecx, dword [esp + 0x20]
push 0
push 0
push 0x20
push 0x20
mov edx, dword [ecx]
push eax
push edx
mov eax, dword [ecx - 4]
push eax
push esi
call dword [sym.imp.USER32.dll_DrawIconEx]
lea eax, [esp + 0x38]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push edi
push esi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov eax, dword [0x40e408]
mov ecx, dword [0x40e400]
sub eax, dword [0x40e400]
sub eax, dword [esp + 0x38]
cdq
sub eax, edx
sar eax, 1
add ecx, eax
add ecx, dword [esp + 0x24]
mov dword [ebp], ecx
mov ecx, dword [0x40e408]
sub ecx, eax
mov eax, dword [esp + 0x20]
add ecx, dword [esp + 0x34]
push eax
push ebp
mov dword [ebp + 8], ecx
push esi
call dword [sym.imp.USER32.dll_FillRect]
push 0x125
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push edi
push esi
call dword [sym.imp.USER32.dll_DrawTextA]
cmp dword [esp + 0x10], 0
je 0x40a8b6
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_DestroyIcon]
add ebp, 0x10
add edi, 0x51
add ebx, 0x18
inc dword [esp + 0x14]
add dword [esp + 0x1c], 8
cmp ebx, 0x40f0c8
jb 0x40a727
cmp dword [esp + 0x20], 0
je 0x40a8ea
mov eax, dword [esp + 0x20]
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call edi
jmp 0x40a8f0
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
cmp dword [esp + 0x2c], 0xffffffff
je 0x40a903
mov eax, dword [esp + 0x2c]
push eax
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
cmp dword [esp + 0x28], 0
je 0x40a91d
mov eax, dword [esp + 0x30]
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esp + 0x28]
push eax
call edi
pop ebp
pop edi
pop esi
pop ebx
add esp, 0xb4
ret 8