Function at 0x40dc40
Capabilities:
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5d5f01
mov eax, dword fs:[0]
push eax
sub esp, 0x32c
mov eax, dword [0x65bfd4]
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
push str.srl::System::Initialize
lea ecx, [ebp - 0x224]
call fcn.00412820
mov dword [ebp - 4], 0
call fcn.00419a30
cmp dword [eax + 4], 4
jl 0x40dc9e
push ecx
lea ecx, [ebp - 0x224]
call fcn.00411390
lea ecx, [ebp - 0x44]
call fcn.0040dbb0
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x330]
call fcn.0040ee40
mov byte [ebp - 4], 1
mov edx, dword [eax]
test edx, edx
jne 0x40dcc3
xor ecx, ecx
jmp 0x40dcdf
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dcd0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [edi + 8]
call fcn.004020e5
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x32c]
mov eax, dword [ebp - 0x330]
cmp eax, ecx
je 0x40dd06
push eax
call fcn.005b3341
add esp, 4
push 0
push 0x23
lea eax, [ebp - 0x208]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push str._systemrequirementslabcyriconfig.ini
lea eax, [ebp - 0x208]
push eax
call dword [sym.imp.SHLWAPI.dll_StrCatW]
lea eax, [ebp - 0x208]
push eax
push 0x64
lea eax, [ebp - 0x140]
push eax
push 0x626078
push 0x6291b0
push str.Detection
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp word [ebp - 0x140], 0
jne 0x40ddea
lea ecx, [ebp - 0x78]
call fcn.0040dbb0
lea eax, [ebp - 0x78]
push eax
lea ecx, [ebp - 0x330]
call fcn.0040ee40
mov byte [ebp - 4], 2
lea esi, [edi + 0xc]
mov edx, dword [eax]
test edx, edx
jne 0x40dd86
xor ecx, ecx
jmp 0x40dd9f
mov ecx, edx
lea edi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dd90
sub ecx, edi
sar ecx, 1
push ecx
push edx
mov ecx, esi
call fcn.004020e5
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x32c]
mov eax, dword [ebp - 0x330]
cmp eax, ecx
je 0x40ddc5
push eax
call fcn.005b3341
add esp, 4
mov ecx, esi
call fcn.0040ec60
lea eax, [ebp - 0x208]
push eax
push dword [esi]
push 0x6291b0
push str.Detection
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
jmp 0x40df5e
lea esi, [ebp - 0x140]
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x40ddf3
sub esi, ecx
sar esi, 1
jne 0x40deab
mov eax, dword [edi + 0xc]
cmp dword [eax - 0xc], 0
lea ecx, [eax - 0x10]
mov esi, dword [ecx]
je 0x40df5e
cmp dword [ecx + 0xc], 0
lea edx, [ecx + 0xc]
jge 0x40de41
cmp dword [eax - 8], 0
jl 0x40df8c
mov dword [eax - 0xc], 0
xor ecx, ecx
mov eax, dword [edi + 0xc]
mov word [eax], cx
jmp 0x40df5e
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x40de7e
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40df96
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40df96
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40df9f
lock inc dword [esi + 0x14]
lea eax, [esi + 8]
add eax, 0x10
mov dword [edi + 0xc], eax
jmp 0x40df5e
add eax, 0x10
mov dword [edi + 0xc], eax
jmp 0x40df5e
mov edx, dword [edi + 0xc]
lea ebx, [ebp - 0x140]
sub ebx, edx
sar ebx, 1
mov eax, dword [edx - 0xc]
mov dword [ebp - 0x334], eax
test esi, esi
js 0x40dfa8
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, esi
or eax, ecx
jge 0x40dee6
push esi
lea ecx, [edi + 0xc]
call fcn.00401fd8
mov edx, dword [edi + 0xc]
cmp ebx, dword [ebp - 0x334]
ja 0x40df36
mov eax, dword [edx - 8]
lea ecx, [esi + esi]
lea ebx, [edx + ebx*2]
test ecx, ecx
je 0x40df4a
test ebx, ebx
jne 0x40df11
call fcn.005b0782
mov dword [eax], 0x16
call fcn.005b06a9
jmp 0x40df4a
add eax, eax
cmp eax, ecx
jae 0x40df29
call fcn.005b0782
mov dword [eax], 0x22
call fcn.005b06a9
jmp 0x40df4a
push ecx
push ebx
push edx
call fcn.005ad520
add esp, 0xc
jmp 0x40df4a
push esi
lea eax, [ebp - 0x140]
push eax
push dword [edx - 8]
push edx
call fcn.004021b4
add esp, 0x10
mov eax, dword [edi + 0xc]
cmp esi, dword [eax - 8]
jg 0x40df8c
mov dword [eax - 0xc], esi
xor ecx, ecx
mov eax, dword [edi + 0xc]
mov word [eax + esi*2], cx
lea ecx, [ebp - 0x224]
mov dword [ebp - 4], 0xffffffff
call fcn.00412760
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.005a909b
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.004022df
mov ecx, edx
call ebx
jmp 0x40de7e
mov ecx, esi
call edx
jmp 0x40dea0
push 0x80070057
call fcn.004022df
int3