Function at 0x415880
Capabilities:
Check if file exists
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b582c
mov eax, dword fs:[0]
push eax
sub esp, 0x2dc
mov eax, dword [0x4dbe18]
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
call fcn.004157c0
mov esi, 0x11c
push esi
push 0
push 0x4e4f20
call fcn.0048f0a0
add esp, 0xc
mov edi, 0x4e4f20
mov dword [0x4e4f20], esi
call fcn.00415210
test eax, eax
jne 0x4158ed
push esi
push eax
push edi
call fcn.0048f0a0
add esp, 0xc
mov dword [0x4e4f20], esi
push 0
push 0x4bcd08
mov ecx, 0x4e503c
call fcn.00403b30
push 0
push 0x4bcd08
mov ecx, 0x4e5044
call fcn.00403b30
push 0
push 0x4bcd08
mov ecx, 0x4e5048
call fcn.00403b30
push 0
push 0x4bcd08
mov ecx, 0x4e5050
call fcn.00403b30
mov ebx, 1
push ebx
push 0x4c0420
mov ecx, 0x4e5054
call fcn.00403b30
push 0
push 0x4bcd08
mov ecx, 0x4e504c
call fcn.00403b30
lea eax, [ebp - 0x2e8]
push eax
mov esi, 0x4e4908
call fcn.00403c50
push 0xc
push 0x4c0424
lea ecx, [ebp - 0x2e8]
mov dword [ebp - 4], 0
call fcn.00405520
lea ecx, [ebp - 0x2e4]
push ecx
call fcn.00403c50
lea edx, [ebp - 0x2e8]
push edx
mov ecx, 0x4e622c
mov byte [ebp - 4], bl
call fcn.004064b0
lea eax, [ebp - 0x2e4]
push eax
mov ecx, 0x4e6230
call fcn.004064b0
cmp dword [0x4e615c], 0
jne 0x4159ca
mov ecx, dword [0x4e622c]
push ecx
call fcn.0040b010
add esp, 4
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcessId]
call fcn.0047e8d0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x2e4]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4159fb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [0x4e5060], ebx
jne 0x415a43
xor ecx, ecx
push 0xc6
push ecx
lea edx, [ebp - 0x2de]
push edx
mov word [ebp - 0x2e0], cx
call fcn.0048f0a0
add esp, 0xc
push 0x64
lea eax, [ebp - 0x2e0]
push eax
call fcn.004aa9e0
test eax, eax
je 0x415a43
lea edx, [ebp - 0x2e0]
mov edi, 0x4e503c
call fcn.00403c10
mov ecx, 0x4e5040
call fcn.0047b2b0
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x216]
push edx
mov word [ebp - 0x218], cx
call fcn.0048f0a0
mov esi, dword [sym.imp.SHLWAPI.dll_PathCombineW]
add esp, 0xc
push str.QHVer.dll
push 0x4e4908
lea eax, [ebp - 0x218]
push eax
call esi
lea ecx, [ebp - 0x218]
lea ebx, [ebp - 0x2e4]
call fcn.00412b30
push eax
mov ecx, 0x4e5044
mov byte [ebp - 4], 2
call fcn.004064b0
xor ebx, ebx
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x2e4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415acb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea edx, [ebp - 0x218]
lea ecx, [ebp - 0x2e4]
call fcn.004152f0
push eax
mov ecx, 0x4e5058
mov byte [ebp - 4], 3
call fcn.004064b0
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x2e4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415b10
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x206
lea edx, [ebp - 0x216]
xor ecx, ecx
push ebx
push edx
mov word [ebp - 0x218], cx
call fcn.0048f0a0
add esp, 0xc
push 0x4bee88
push 0x4e4908
lea eax, [ebp - 0x218]
push eax
call esi
lea ecx, [ebp - 0x218]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x415d07
mov ecx, dword [0x4e5048]
mov eax, dword [ecx - 8]
mov edx, 1
sub edx, dword [ecx - 4]
sub eax, 0x3e8
or eax, edx
jge 0x415b85
push 0x3e8
mov ecx, 0x4e5048
call fcn.00403a90
mov ecx, dword [0x4e5048]
mov esi, dword [sym.imp.KERNEL32.DLL_GetPrivateProfileStringW]
lea edx, [ebp - 0x218]
push edx
push 0x3e8
push ecx
push 0x4bef68
push str.language
push 0x4beeb4
call esi
mov eax, dword [0x4e5048]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.0048bd24
mov ecx, dword [0x4e5048]
mov dword [ecx - 0xc], eax
mov ecx, dword [0x4e5048]
xor edx, edx
mov word [ecx + eax*2], dx
mov edx, dword [0x4e5050]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x3e8
add esp, 8
or eax, ecx
jge 0x415bff
push 0x3e8
mov ecx, 0x4e5050
call fcn.00403a90
mov edx, dword [0x4e5050]
lea eax, [ebp - 0x218]
push eax
push 0x3e8
push edx
push 0x4bcd08
push str.channel
push 0x4beeb4
call esi
mov eax, dword [0x4e5050]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.0048bd24
mov ecx, dword [0x4e5050]
mov dword [ecx - 0xc], eax
mov ecx, dword [0x4e5050]
xor edx, edx
mov word [ecx + eax*2], dx
mov edx, dword [0x4e5054]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x3e8
add esp, 8
or eax, ecx
jge 0x415c73
push 0x3e8
mov ecx, 0x4e5054
call fcn.00403a90
mov edx, dword [0x4e5054]
lea eax, [ebp - 0x218]
push eax
push 0x3e8
push edx
push 0x4bcd08
push str.schannel
push 0x4beeb4
call esi
mov eax, dword [0x4e5054]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.0048bd24
mov ecx, dword [0x4e5054]
mov dword [ecx - 0xc], eax
mov ecx, dword [0x4e5054]
xor edx, edx
mov word [ecx + eax*2], dx
mov eax, dword [0x4e5054]
add esp, 8
cmp dword [eax - 0xc], ebx
je 0x415cf6
mov ecx, 0x4c0480
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x415ced
cmp dx, bx
je 0x415ce9
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x415ced
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x415cc7
xor eax, eax
jmp 0x415cf2
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x415d07
push 1
push 0x4c0420
mov ecx, 0x4e5054
call fcn.00403b30
push 0x1e
call dword [sym.imp.SHLWAPI.dll_IsOS]
test eax, eax
mov eax, 0x4c0454
jne 0x415d1d
mov eax, 0x4c045c
mov edx, dword [0x4e4f28]
push eax
mov eax, dword [0x4e4f24]
push edx
push eax
push str._d._d__s
mov edi, 0x4e504c
call fcn.00406770
add esp, 0x10
call fcn.0040a420
mov esi, eax
cmp byte [esi + 0x270], bl
jne 0x415d51
call fcn.0040a0d0
cmp dword [esi], ebx
je 0x415d6c
mov esi, dword [esi + 0x230]
cmp esi, ebx
je 0x415d6c
push ebx
push 0x4e51bc
call esi
add esp, 8
jmp 0x415d6e
xor eax, eax
push 0x4e5068
mov ecx, 0x4e6230
mov dword [0x4e5064], eax
call fcn.0047c370
push 0x4e5054
push 0x4e5050
push 0x4e504c
push 0x4e5048
push 0x4e5044
mov eax, 0x4e503c
call fcn.00454e30
push 0x4e57a8
mov ecx, 0x4e6230
call fcn.0047c370
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x2e8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415ddd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
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.0048ac3c
mov esp, ebp
pop ebp
ret