Function at 0x412350
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42663e
mov eax, dword fs:[0]
push eax
sub esp, 0x840
mov eax, dword [0x433074]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x82c], edi
lea eax, [ebp - 0x818]
push eax
call fcn.004079a0
add esp, 4
push dword [ebp - 0x818]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push 0
push 0x4285f8
push str.mouse
mov dword [ebp - 4], 0
call ebx
push dword [ebp - 0x818]
mov dword [edi], eax
push 0
push str.ctrl
push str.mouse
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push 0x428618
setne al
push str.mouse
mov byte [edi + 4], al
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push str.shift
setne al
push str.mouse
mov byte [edi + 5], al
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push 0x4285f8
setne al
push str.keyboard
mov byte [edi + 6], al
call ebx
push dword [ebp - 0x818]
mov dword [edi + 8], eax
push 0
push str.ctrl
push str.keyboard
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push 0x428618
setne al
push str.keyboard
mov byte [edi + 0xc], al
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push str.shift
setne al
push str.keyboard
mov byte [edi + 0xd], al
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push str.ui_language
setne al
push str.config
mov byte [edi + 0xe], al
call ebx
push dword [ebp - 0x818]
mov word [edi + 0x10], ax
push 1
push str.check_for_updates
push str.config
call ebx
test eax, eax
setne al
mov byte [edi + 0x12], al
push dword [ebp - 0x818]
push 0
push str.auto_copy_selection
push str.config
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push str.hide_wnd_on_startup
setne al
push str.config
mov byte [edi + 0x13], al
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push str.hide_tray_icon
setne al
push str.config
mov byte [edi + 0x14], al
call ebx
push dword [ebp - 0x818]
test eax, eax
push 0
push str.text_box_non_resizable
setne al
push str.config
mov byte [edi + 0x15], al
call ebx
mov ebx, dword [ebp - 0x818]
test eax, eax
mov ecx, 1
setne al
mov byte [edi + 0x16], al
mov edx, dword [edi + 0x18]
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, 0x20
or eax, ecx
jge 0x412543
push 0x20
lea ecx, [edi + 0x18]
call fcn.00405ea0
mov edx, dword [edi + 0x18]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x20
push edx
push 0x427944
push str.font_name
push str.config
call ebx
mov eax, dword [edi + 0x18]
test eax, eax
jne 0x412569
xor ecx, ecx
jmp 0x41257f
push dword [eax - 8]
push eax
call fcn.00418486
mov ecx, eax
add esp, 8
test ecx, ecx
js 0x412c2d
mov eax, dword [edi + 0x18]
cmp ecx, dword [eax - 8]
jg 0x412c2d
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
xor edx, edx
mov dword [eax - 0xc], ecx
mov eax, dword [edi + 0x18]
mov word [eax + ecx*2], dx
push dword [ebp - 0x818]
push edx
push str.font_size
push str.config
call esi
push dword [ebp - 0x818]
mov dword [edi + 0x1c], eax
push 0
push str.unicode_spaces_to_ascii
push str.config
call esi
push dword [ebp - 0x818]
test eax, eax
mov dword [edi + 0x24], 0
push 0x401
setne al
mov byte [edi + 0x20], al
lea eax, [ebp - 0x814]
push eax
push 0x427944
push str.text_retrieval_method
push str.config
call ebx
lea eax, [ebp - 0x814]
push str.msaa
push eax
call fcn.00419dfa
add esp, 8
test eax, eax
jne 0x41261a
mov dword [edi + 0x24], 1
jmp 0x412639
lea eax, [ebp - 0x814]
push 0x4287bc
push eax
call fcn.00419dfa
add esp, 8
test eax, eax
jne 0x412639
mov dword [edi + 0x24], 2
push dword [ebp - 0x818]
push 0x10
push str.icon_size
push str.web_buttons
call esi
push dword [ebp - 0x818]
mov dword [edi + 0x28], eax
push 8
push str.buttons_per_row
push str.web_buttons
call esi
mov esi, 1
mov dword [edi + 0x2c], eax
mov dword [ebp - 0x820], esi
mov byte [ebp - 4], 1
call fcn.00404d30
mov ecx, eax
test ecx, ecx
je 0x412c37
or ebx, 0xffffffff
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x81c], eax
push esi
lea eax, [ebp - 0x81c]
mov byte [ebp - 4], 2
push str.web_button__d
push eax
call fcn.00404b60
mov esi, dword [ebp - 0x81c]
lea eax, [ebp - 0x814]
add esp, 0xc
push dword [ebp - 0x818]
push 0x401
push eax
push 0x427944
push str.command
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp word [ebp - 0x814], 0
je 0x412a33
mov byte [ebp - 4], 3
call fcn.00404d30
test eax, eax
je 0x412c37
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x848], eax
mov byte [ebp - 4], 4
call fcn.00404d30
test eax, eax
je 0x412c37
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x844], eax
mov byte [ebp - 4], 5
call fcn.00404d30
test eax, eax
je 0x412c37
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x840], eax
lea ecx, [ebp - 0x814]
mov byte [ebp - 4], 6
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x412756
sub ecx, edx
lea eax, [ebp - 0x814]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x848]
call fcn.00406400
push dword [ebp - 0x818]
lea eax, [ebp - 0x814]
push 0x401
push eax
push 0x427944
push str.name
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [ebp - 0x814]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4127a4
sub ecx, edx
lea eax, [ebp - 0x814]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x844]
call fcn.00406400
push dword [ebp - 0x818]
lea eax, [ebp - 0x814]
push 0x401
push eax
push 0x427944
push str.icon
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp word [ebp - 0x814], 0
je 0x412911
lea ecx, [ebp - 0x814]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x412800
sub ecx, edx
sar ecx, 1
lea edx, [ecx - 1]
mov ecx, edx
test ecx, ecx
je 0x412834
jmp 0x412820
cmp word [ebp + ecx*2 - 0x814], 0x2c
je 0x4128b2
sub ecx, 1
jne 0x412820
xor eax, eax
mov dword [ebp - 0x83c], eax
lea eax, [ebp - 0x814]
push eax
lea eax, [ebp - 0x824]
push eax
call fcn.00412c50
add esp, 8
mov ecx, dword [eax]
mov edi, dword [ebp - 0x840]
add edi, 0xfffffff0
mov byte [ebp - 4], 7
lea edx, [ecx - 0x10]
cmp edx, edi
je 0x4128ea
mov eax, dword [edi + 0xc]
shr eax, 0x1f
test al, al
jne 0x4128db
mov eax, dword [edx]
cmp eax, dword [edi]
jne 0x4128db
push edx
call fcn.0040cd70
add esp, 4
mov dword [ebp - 0x828], eax
mov ecx, ebx
lea edx, [edi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4128a7
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x828]
add eax, 0x10
mov dword [ebp - 0x840], eax
jmp 0x4128ea
cmp ecx, edx
je 0x412834
xor eax, eax
mov word [ebp + ecx*2 - 0x814], ax
lea eax, [ebp - 0x812]
lea eax, [eax + ecx*2]
push eax
call fcn.0041a8b7
add esp, 4
jmp 0x412836
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x840]
call fcn.00406400
mov edx, dword [ebp - 0x824]
mov eax, ebx
mov byte [ebp - 4], 6
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41290b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x82c]
push dword [ebp - 0x818]
lea eax, [ebp - 0x814]
push 0x401
push eax
push 0x427944
push 0x4285f8
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push dword [ebp - 0x818]
mov ax, word [ebp - 0x814]
push 0
push str.width
push esi
mov word [ebp - 0x838], ax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push dword [ebp - 0x818]
mov dword [ebp - 0x834], eax
push 0
push str.height
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov ecx, dword [edi + 0x34]
mov dword [ebp - 0x830], eax
cmp ecx, dword [edi + 0x38]
je 0x412990
lea eax, [ebp - 0x848]
push eax
call fcn.004121b0
add dword [edi + 0x34], 0x1c
jmp 0x4129a0
lea edx, [ebp - 0x848]
push edx
push ecx
lea ecx, [edi + 0x30]
call fcn.00411c40
mov edx, dword [ebp - 0x840]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4129bd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x844]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4129da
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x848]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4129f7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x412a0e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x820]
inc esi
mov dword [ebp - 0x820], esi
mov byte [ebp - 4], 1
call fcn.00404d30
mov ecx, eax
test ecx, ecx
je 0x412c37
jmp 0x412688
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x412a4a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, 1
mov dword [ebp - 0x828], esi
mov byte [ebp - 4], 8
call fcn.00404d30
mov ecx, eax
test ecx, ecx
je 0x412c37
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x820], eax
push esi
lea eax, [ebp - 0x820]
mov byte [ebp - 4], 9
push 0x427f14
push eax
call fcn.00404b60
mov edi, dword [ebp - 0x820]
lea eax, [ebp - 0x814]
add esp, 0xc
push dword [ebp - 0x818]
push 0x401
push eax
push 0x427944
push edi
push str.exclude
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp word [ebp - 0x814], 0
je 0x412bdd
mov esi, dword [ebp - 0x82c]
lea eax, [esi + 0x3c]
mov dword [ebp - 0x824], eax
call fcn.00404d30
test eax, eax
je 0x412c37
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x81c], eax
lea eax, [ebp - 0x814]
mov byte [ebp - 4], 0xa
test eax, 0xffff0000
jne 0x412b14
movzx eax, ax
lea ecx, [ebp - 0x81c]
push eax
call fcn.00404ff0
jmp 0x412b39
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x412b17
sub eax, edx
lea ecx, [ebp - 0x81c]
sar eax, 1
push eax
lea eax, [ebp - 0x814]
push eax
call fcn.00406400
mov eax, dword [esi + 0x40]
mov byte [ebp - 4], 0xb
mov dword [ebp - 0x84c], eax
cmp eax, dword [esi + 0x44]
je 0x412b74
mov esi, dword [ebp - 0x81c]
lea eax, [esi - 0x10]
push eax
call fcn.0040cd70
mov ecx, dword [ebp - 0x84c]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
mov eax, dword [ebp - 0x824]
add dword [eax + 4], 4
jmp 0x412b8d
lea ecx, [ebp - 0x81c]
push ecx
mov ecx, dword [ebp - 0x824]
push eax
call fcn.00411ed0
mov esi, dword [ebp - 0x81c]
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x412ba4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x412bbb
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x828]
inc esi
mov dword [ebp - 0x828], esi
mov byte [ebp - 4], 8
call fcn.00404d30
mov ecx, eax
test ecx, ecx
jne 0x412a68
jmp 0x412c37
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x412bf4
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x818]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x412c0f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00414c7c
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.00402060
push 0x80004005
call fcn.00402060
int3