Function at 0x401000
Capabilities:
Check if file exists
Get file attributes
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x537461
mov eax, dword fs:[0]
push eax
sub esp, 0x210
mov eax, dword [0x587be0]
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
push 0x565438
lea ecx, [ebp - 0x214]
call fcn.00402cb0
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x401083
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x214]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40107c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x401386
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov edx, dword [ebp - 0x214]
mov ecx, 0x7f
lea edi, [ebp - 0x210]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, edx
lea esi, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4010b0
sub eax, esi
sar eax, 1
add eax, eax
push eax
push edx
lea ecx, [ebp - 0x210]
push ecx
call fcn.00515870
add esp, 0xc
call fcn.004145bf
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4010ec
push 0x80004005
call fcn.00402b70
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x218], eax
mov byte [ebp - 4], 1
call fcn.004145bf
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40111c
push 0x80004005
call fcn.00402b70
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x21c], eax
push 8
push str.handicon
lea ecx, [ebp - 0x218]
mov byte [ebp - 4], 2
call fcn.00402bc0
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, 0x100
mov edi, 0x58fbe8
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x218]
lea eax, [ebp - 0x210]
push eax
push 0x200
push 0x58fbe8
push 0
push ecx
push str.ICON
call esi
mov eax, 0x58fbe8
lea ecx, [eax + 2]
jmp 0x401190
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x401190
sub eax, ecx
sar eax, 1
push eax
push 0x58fbe8
mov ecx, 0x590028
call fcn.00402bc0
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea edx, [ebp - 0x210]
push edx
push 1
push str.langSwitch
push str.GLOBAL
call ebx
mov dword [0x5900d0], eax
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, 0x100
mov edi, 0x58fbe8
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x210]
push eax
push 0x200
push 0x58fbe8
push str.imagstr.dll
push str.Model
push str.GLOBAL
call esi
mov eax, 0x58fbe8
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x401211
sub eax, ecx
sar eax, 1
push eax
push 0x58fbe8
mov ecx, 0x5900dc
call fcn.00402bc0
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, 0x100
mov edi, 0x58fbe8
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x210]
push eax
push 0x200
push 0x58fbe8
push 0x56560c
push str.nicDll
push str.GLOBAL
call esi
mov eax, 0x58fbe8
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x401272
sub eax, ecx
sar eax, 1
push eax
push 0x58fbe8
mov ecx, 0x5900e0
call fcn.00402bc0
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, 0x100
mov edi, 0x58fbe8
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x210]
push eax
push 0x200
push 0x58fbe8
push 0x56560c
push str.nicGuid
push str.GLOBAL
call esi
mov eax, 0x58fbe8
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x4012d3
sub eax, ecx
sar eax, 1
push eax
push 0x58fbe8
mov ecx, 0x5900e4
call fcn.00402bc0
lea ecx, [ebp - 0x210]
push ecx
push 1
push str.powerStatus
push str.GLOBAL
call ebx
mov dword [0x5900d4], eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401332
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x218]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401358
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x214]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401381
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 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.00511f1b
mov esp, ebp
pop ebp
ret