Function at 0x4109d0
Capabilities:
Read .ini file

Disassembly:
mov eax, dword [esp + 0x14]
sub esp, 0xd4
mov ecx, dword [0x5b5574]
push ebx
push ebp
push esi
push edi
push 0x80
push eax
push 0x50a
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
mov edi, dword [esp + 0xe8]
test edi, edi
je 0x410ef5
mov esi, dword [esp + 0xec]
cmp esi, 1
jb 0x410ef5
mov ebx, 1
xor ecx, ecx
mov ebp, ebx
xor edx, edx
test esi, esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], ebp
jbe 0x410a5d
mov al, byte [edx + edi]
test al, al
je 0x410a54
inc ecx
cmp al, 9
jne 0x410a3b
add ecx, 4
cmp al, 0xa
je 0x410a47
cmp ecx, 0xf423f
jb 0x410a54
cmp ecx, ebx
jbe 0x410a51
mov dword [esp + 0x10], ecx
mov ebx, ecx
inc ebp
xor ecx, ecx
inc edx
cmp edx, esi
jb 0x410a2c
mov dword [esp + 0x18], ebp
mov eax, dword [esp + 0xf0]
test eax, eax
mov dword [esp + 0x20], eax
jne 0x410a97
cmp esi, 2
jbe 0x410a97
mov al, byte [edi]
cmp al, 0xff
jne 0x410a85
cmp byte [edi + 1], 0xfe
jne 0x410a85
mov dword [esp + 0x20], 1
cmp al, 0xef
jne 0x410a97
cmp byte [edi + 1], 0xbb
jne 0x410a97
mov dword [esp + 0x20], 1
cmp ebp, 1
jne 0x410aa6
cmp ecx, ebx
jbe 0x410aa6
mov dword [esp + 0x10], ecx
mov ebx, ecx
push 0
push 0
push 0
push 0x598100
call dword [sym.imp.GDI32.dll_CreateICW]
push eax
mov dword [esp + 0x4c], eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov edx, dword [esp + 0xf4]
mov esi, eax
push edx
push 0
push str.TXTFileFont
push 0x598368
mov dword [esp + 0x2c], esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov edi, eax
push 0x5b9260
push 0x598368
lea eax, [esp + 0x2c]
push 0
lea ecx, [esp + 0x34]
push eax
lea edx, [esp + 0x98]
push ecx
push edx
call fcn.004ca5f0
mov eax, edi
add esp, 0x18
dec eax
je 0x410b2d
dec eax
je 0x410b29
dec eax
je 0x410b19
push 0x10
jmp 0x410b2f
lea eax, [esp + 0x88]
push eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
jmp 0x410b35
push 0xb
jmp 0x410b2f
push 0xa
call dword [sym.imp.GDI32.dll_GetStockObject]
mov ecx, eax
mov dword [esp + 0x14], eax
push ecx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, 1
mov dword [esp + 0x40], eax
cmp ebx, ecx
mov eax, 0x186a0
jae 0x410b5b
mov dword [esp + 0x10], ecx
jmp 0x410b63
cmp ebx, eax
jbe 0x410b67
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0x10]
cmp ebp, ecx
jae 0x410b71
mov dword [esp + 0x18], ecx
jmp 0x410b79
cmp ebp, eax
jbe 0x410b79
mov dword [esp + 0x18], eax
lea edx, [esp + 0x4c]
push edx
push esi
call dword [sym.imp.GDI32.dll_GetTextMetricsW]
mov eax, dword [esp + 0x60]
mov ebp, eax
imul ebp, ebx
add ebp, 5
cmp edi, 3
jne 0x410b9c
lea ebp, [ebx + 0x20]
imul ebp, eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x5c]
lea edi, [ecx + eax]
lea eax, [ebp + 0x1f]
mov esi, edi
mov dword [esp + 0x44], edi
imul esi, dword [esp + 0x18]
cdq
and edx, 0x1f
add esi, 5
add eax, edx
mov ecx, eax
sar ecx, 5
shl ecx, 2
mov ebx, ecx
imul ebx, esi
test ebp, ebp
jle 0x410eea
test esi, esi
jle 0x410eea
test ecx, ecx
jle 0x410eea
mov eax, ebx
cdq
idiv esi
test eax, eax
jle 0x410eea
test ebx, ebx
jle 0x410eea
cmp ebp, 0x7d000
jg 0x410eea
cmp esi, 0x7d000
jg 0x410eea
cmp eax, ecx
jl 0x410eea
cmp ebx, 0xfffffbd7
ja 0x410eea
push 0
push 1
push 1
push esi
push ebp
call dword [sym.imp.GDI32.dll_CreateBitmap]
test eax, eax
mov dword [esp + 0x2c], eax
jne 0x410c52
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.GDI32.dll_DeleteObject]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd4
ret
mov ebx, dword [esp + 0x1c]
push eax
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
push 0xff0062
push esi
push ebp
push 0
push 0
push ebx
call dword [sym.imp.GDI32.dll_PatBlt]
push 1
push ebx
call dword [sym.imp.GDI32.dll_SetBkMode]
cmp dword [esp + 0x20], 1
jne 0x410ddb
mov edi, dword [esp + 0xe8]
add ebp, 5
mov dword [esp + 0x30], 5
mov dword [esp + 0x34], 0
mov al, byte [edi]
mov dword [esp + 0x38], ebp
cmp al, 0xef
mov dword [esp + 0x3c], esi
jne 0x410dba
cmp byte [edi + 1], 0xbb
jne 0x410dba
mov ebp, dword [esp + 0xec]
push 0
push 0
push ebp
push edi
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
test ebx, ebx
jbe 0x410d1c
push 2
push ebx
call fcn.004d61b4
mov esi, eax
add esp, 8
test esi, esi
je 0x410d1c
push ebx
push esi
push ebp
push edi
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x30]
push 0x2900
push eax
push ebx
push esi
push ecx
call dword [sym.imp.USER32.dll_DrawTextW]
push esi
call fcn.004d59c1
add esp, 4
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x40]
push ecx
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov edx, dword [esp + 0x14]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push edx
call esi
push ebx
call esi
mov eax, dword [esp + 0x48]
push eax
call esi
mov ecx, dword [esp + 0x2c]
push 0
push ecx
call fcn.004271f0
mov edx, dword [esp + 0x34]
add esp, 8
mov ebx, eax
push edx
call esi
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, dword [sym.imp.KERNEL32.dll_GlobalUnlock]
test eax, eax
je 0x410daa
mov dword [eax + 0x20], 2
mov cl, byte [esp + 0x28]
xor edx, edx
mov byte [eax + 0x2a], cl
mov dl, byte [esp + 0x29]
push ebx
mov byte [eax + 0x29], dl
mov ecx, dword [esp + 0x2c]
shr ecx, 0x10
mov byte [eax + 0x28], cl
mov dl, byte [esp + 0x28]
xor ecx, ecx
mov byte [eax + 0x2e], dl
mov cl, byte [esp + 0x29]
mov byte [eax + 0x2d], cl
mov edx, dword [esp + 0x28]
shr edx, 0x10
mov byte [eax + 0x2c], dl
call esi
push ebx
call esi
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0xd4
ret
lea edx, [esp + 0x30]
push 0x2900
push edx
push edi
call fcn.004d6713
add esp, 4
push eax
push edi
push ebx
call dword [sym.imp.USER32.dll_DrawTextW]
jmp 0x410d20
mov eax, dword [esp + 0x10]
push 1
lea eax, [eax*4 + 0x400]
push eax
mov dword [esp + 0x28], eax
call fcn.004d61b4
mov esi, eax
add esp, 8
test esi, esi
je 0x410d20
mov ecx, dword [esp + 0xec]
xor edx, edx
xor eax, eax
test ecx, ecx
mov dword [esp + 0x18], eax
jbe 0x410edc
xor ebx, ebx
mov ecx, dword [esp + 0xe8]
mov al, byte [eax + ecx]
cmp al, 0xa
je 0x410e5f
cmp edx, 0xf423f
jae 0x410e5f
mov ecx, dword [esp + 0x20]
cmp edx, ecx
jae 0x410ed8
cmp al, 9
jne 0x410e54
mov byte [edx + esi], 0x20
inc edx
mov byte [edx + esi], 0x20
inc edx
mov byte [edx + esi], 0x20
inc edx
mov byte [edx + esi], 0x20
inc edx
jmp 0x410ec0
dec ecx
cmp edx, ecx
jae 0x410ec0
mov byte [edx + esi], al
inc edx
jmp 0x410ec0
mov byte [edx + esi], 0
mov dword [esp + 0x34], ebx
add ebx, edi
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x30], 5
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebx
lea edx, [esp + 0x30]
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x1c]
push 0x2900
not ecx
dec ecx
push edx
push ecx
push esi
push eax
call dword [sym.imp.USER32.dll_DrawTextA]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x10], ebx
mov ebx, ecx
xor eax, eax
mov edi, esi
xor edx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
mov ebx, dword [esp + 0x10]
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xec]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jb 0x410e18
mov ebx, dword [esp + 0x1c]
push esi
call fcn.004d59c1
add esp, 4
jmp 0x410d20
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd4
ret