Function at 0x140041f70
Capabilities:
Read .ini file

Disassembly:
push rbp
push rsi
push r12
push r14
push r15
lea rbp, [rsp - 0x50]
sub rsp, 0x150
mov rax, qword [0x1401f7280]
xor rax, rsp
mov qword [rbp + 0x30], rax
mov r12d, edx
mov r15d, r8d
mov r8, qword [rbp + 0xa0]
mov rsi, rcx
mov rcx, qword [0x1401fbba0]
mov r14, r9
mov edx, 0x50a
mov r9d, 0x80
mov dword [rsp + 0x4c], r12d
call qword [sym.imp.USER32.dll_LoadStringW]
test rsi, rsi
je 0x140042539
cmp r12d, 1
jb 0x140042539
mov qword [rsp + 0x190], rbx
mov edx, 1
mov qword [rsp + 0x148], rdi
xor eax, eax
mov qword [rsp + 0x140], r13
mov ebx, edx
mov edi, edx
test r12d, r12d
je 0x14004202f
mov rdx, rsi
mov r8d, r12d
movzx ecx, byte [rdx]
test cl, cl
je 0x140042023
inc eax
cmp cl, 9
jne 0x140042015
add eax, 4
cmp cl, 0xa
jne 0x140042023
cmp eax, ebx
cmova ebx, eax
inc edi
xor eax, eax
inc rdx
dec r8
jne 0x140042004
lea edx, [r8 + 1]
test r15d, r15d
jne 0x140042057
cmp r12d, 2
jbe 0x140042057
movzx ecx, byte [rsi]
cmp cl, 0xff
jne 0x14004204a
cmp byte [rsi + 1], 0xfe
cmove r15d, edx
cmp cl, 0xef
jne 0x140042057
cmp byte [rsi + 1], 0xbb
cmove r15d, edx
cmp edi, 1
jne 0x140042061
cmp eax, ebx
cmova ebx, eax
lea rcx, str.DISPLAY
xor r9d, r9d
xor r8d, r8d
xor edx, edx
call qword [sym.imp.GDI32.dll_CreateICW]
mov rcx, rax
mov qword [rsp + 0x68], rax
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
lea rdx, str.TXTFileFont
lea rcx, [0x1401872e8]
mov r9, r14
xor r8d, r8d
mov r13, rax
mov qword [rsp + 0x38], rax
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea r8, [rsp + 0x30]
mov r14d, eax
lea rax, [0x140208860]
lea rdx, [rsp + 0x34]
mov qword [rsp + 0x28], rax
lea rax, [0x1401872e8]
lea rcx, [rbp - 0x30]
xor r9d, r9d
mov qword [rsp + 0x20], rax
call fcn.1400ee550
mov ecx, r14d
dec ecx
je 0x140042100
dec ecx
je 0x1400420f9
dec ecx
je 0x1400420ed
mov ecx, InitCommonControls
jmp 0x140042105
lea rcx, [rbp - 0x30]
call qword [sym.imp.GDI32.dll_CreateFontIndirectW]
jmp 0x14004210b
mov ecx, 0xb
jmp 0x140042105
mov ecx, 0xa
call qword [sym.imp.GDI32.dll_GetStockObject]
mov rdx, rax
mov rcx, r13
mov qword [rsp + 0x40], rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0x58], rax
mov eax, 0x186a0
cmp ebx, 1
jae 0x140042132
mov ebx, 1
jmp 0x140042137
cmp ebx, eax
cmova ebx, eax
cmp edi, 1
jae 0x140042143
mov edi, 1
jmp 0x140042148
cmp edi, eax
cmova edi, eax
lea rdx, [rbp - 0x78]
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetTextMetricsW]
mov eax, dword [rbp - 0x64]
mov r13d, eax
imul r13d, ebx
add r13d, 5
cmp r14d, 3
jne 0x140042171
lea r13d, [rbx + 0x20]
imul r13d, eax
mov eax, dword [rbp - 0x68]
add eax, dword [rbp - 0x78]
mov r14d, eax
mov dword [rsp + 0x48], eax
lea eax, [r13 + 0x1f]
cdq
imul r14d, edi
and edx, 0x1f
add r14d, 5
lea r8d, [rdx + rax]
sar r8d, 5
shl r8d, 2
mov ecx, r8d
imul ecx, r14d
test r13d, r13d
jle 0x14004252a
test r14d, r14d
jle 0x14004252a
test r8d, r8d
jle 0x14004252a
mov eax, ecx
cdq
idiv r14d
test eax, eax
jle 0x14004252a
test ecx, ecx
jle 0x14004252a
cmp r13d, 0x7d000
jg 0x14004252a
cmp r14d, 0x7d000
jg 0x14004252a
cmp eax, r8d
jl 0x14004252a
cmp ecx, 0xfffffbd7
ja 0x14004252a
mov r9d, 1
mov edx, r14d
mov ecx, r13d
mov r8d, r9d
mov qword [rsp + 0x20], 0
call qword [sym.imp.GDI32.dll_CreateBitmap]
mov qword [rsp + 0x60], rax
test rax, rax
je 0x14004252a
mov rdi, qword [rsp + 0x38]
mov rdx, rax
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SelectObject]
mov r9d, r13d
xor r8d, r8d
xor edx, edx
mov rcx, rdi
mov dword [rsp + 0x28], 0xff0062
mov dword [rsp + 0x20], r14d
call qword [sym.imp.GDI32.dll_PatBlt]
mov edx, 1
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SetBkMode]
cmp r15d, 1
jne 0x14004234b
lea eax, [r13 + 5]
xor ecx, ecx
cmp byte [rsi], 0xef
mov qword [rsp + 0x78], 5
mov dword [rbp - 0x7c], r14d
mov dword [rbp - 0x80], eax
jne 0x140042315
cmp byte [rsi + 1], 0xbb
jne 0x140042315
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rcx
mov r9d, r12d
mov ecx, 0xfde9
mov r8, rsi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
test eax, eax
je 0x140042446
lea edx, [r15 + 1]
mov ecx, ebx
call fcn.1400f97a4
mov rdi, rax
test rax, rax
je 0x140042441
mov r9d, r12d
mov r8, rsi
xor edx, edx
mov ecx, 0xfde9
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov rcx, qword [rsp + 0x38]
lea r9, [rsp + 0x78]
mov r8d, ebx
mov rdx, rdi
mov dword [rsp + 0x20], 0x2900
call qword [sym.imp.USER32.dll_DrawTextW]
jmp 0x140042439
or r14, 0xffffffffffffffff
nop dword [rax]
inc r14
cmp word [rsi + r14*2], cx
jne 0x140042320
lea r9, [rsp + 0x78]
mov r8, r14
mov rdx, rsi
mov rcx, rdi
mov dword [rsp + 0x20], 0x2900
call qword [sym.imp.USER32.dll_DrawTextW]
jmp 0x140042446
lea ebx, [rbx*4 + 0x400]
mov edx, 1
mov eax, ebx
mov ecx, ebx
mov dword [rsp + 0x50], ebx
mov qword [rsp + 0x70], rax
call fcn.1400f97a4
mov rdi, rax
test rax, rax
je 0x140042441
xor ebx, ebx
xor r15d, r15d
test r12d, r12d
je 0x140042439
xor r12d, r12d
or r14, 0xffffffffffffffff
nop word [rax + rax]
movzx ecx, byte [rsi]
cmp cl, 0xa
jne 0x1400423f8
mov byte [rbx + rdi], 0
mov dword [rsp + 0x7c], r12d
add r12d, dword [rsp + 0x48]
mov dword [rsp + 0x78], 5
mov dword [rbp - 0x80], r13d
mov r8, r14
mov dword [rbp - 0x7c], r12d
nop dword [rax]
inc r8
cmp byte [rdi + r8], 0
jne 0x1400423c0
mov rcx, qword [rsp + 0x38]
lea r9, [rsp + 0x78]
mov rdx, rdi
mov dword [rsp + 0x20], 0x2900
call qword [sym.imp.USER32.dll_DrawTextA]
mov r8, qword [rsp + 0x70]
xor edx, edx
mov rcx, rdi
xor ebx, ebx
call fcn.1400f9ab0
jmp 0x140042428
mov eax, dword [rsp + 0x50]
cmp ebx, eax
jae 0x140042439
cmp cl, 9
jne 0x14004241d
mov byte [rbx + rdi], 0x20
inc ebx
mov byte [rbx + rdi], 0x20
inc ebx
mov byte [rbx + rdi], 0x20
inc ebx
mov byte [rbx + rdi], 0x20
jmp 0x140042426
dec eax
cmp ebx, eax
jae 0x140042428
mov byte [rbx + rdi], cl
inc ebx
inc r15d
inc rsi
cmp r15d, dword [rsp + 0x4c]
jb 0x140042390
mov rcx, rdi
call fcn.1400f97e8
mov rdi, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, rdi
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rsp + 0x60]
xor edx, edx
call fcn.14004d600
mov rcx, qword [rsp + 0x60]
mov rbx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GlobalLock]
mov rdx, rax
test rax, rax
je 0x1400424ea
mov dword [rax + 0x20], 2
movzx ecx, byte [rsp + 0x34]
mov byte [rax + 0x2a], cl
movzx ecx, word [rsp + 0x34]
shr cx, 8
mov byte [rax + 0x29], cl
mov ecx, dword [rsp + 0x34]
shr ecx, 0x10
mov byte [rax + 0x28], cl
movzx ecx, byte [rsp + 0x30]
mov byte [rax + 0x2e], cl
movzx eax, word [rsp + 0x30]
mov rcx, rbx
shr ax, 8
mov byte [rdx + 0x2d], al
mov eax, dword [rsp + 0x30]
shr eax, 0x10
mov byte [rdx + 0x2c], al
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov rax, rbx
mov rdi, qword [rsp + 0x148]
mov rbx, qword [rsp + 0x190]
mov r13, qword [rsp + 0x140]
mov rcx, qword [rbp + 0x30]
xor rcx, rsp
call fcn.1400f9a80
add rsp, 0x150
pop r15
pop r14
pop r12
pop rsi
pop rbp
ret
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.GDI32.dll_DeleteObject]
xor eax, eax
jmp 0x1400424f6
xor eax, eax
jmp 0x14004250e