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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5d4991
mov eax, dword fs:[0]
push eax
sub esp, 0x32c
mov eax, dword [0x659fd4]
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.004128a0
mov dword [ebp - 4], 0
call fcn.00419ac0
cmp dword [eax + 4], 4
jl 0x40de0e
push ecx
lea ecx, [ebp - 0x224]
call fcn.00411500
lea ecx, [ebp - 0x44]
call fcn.0040dd20
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x330]
call fcn.0040efb0
mov byte [ebp - 4], 1
mov edx, dword [eax]
test edx, edx
jne 0x40de33
xor ecx, ecx
jmp 0x40de4f
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40de40
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 0x40de76
push eax
call fcn.005b1e01
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 0x624ff8
push 0x6280a0
push str.Detection
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp word [ebp - 0x140], 0
jne 0x40df5a
lea ecx, [ebp - 0x78]
call fcn.0040dd20
lea eax, [ebp - 0x78]
push eax
lea ecx, [ebp - 0x330]
call fcn.0040efb0
mov byte [ebp - 4], 2
lea esi, [edi + 0xc]
mov edx, dword [eax]
test edx, edx
jne 0x40def6
xor ecx, ecx
jmp 0x40df0f
mov ecx, edx
lea edi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40df00
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 0x40df35
push eax
call fcn.005b1e01
add esp, 4
mov ecx, esi
call fcn.0040edd0
lea eax, [ebp - 0x208]
push eax
push dword [esi]
push 0x6280a0
push str.Detection
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
jmp 0x40e0ce
lea esi, [ebp - 0x140]
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x40df63
sub esi, ecx
sar esi, 1
jne 0x40e01b
mov eax, dword [edi + 0xc]
cmp dword [eax - 0xc], 0
lea ecx, [eax - 0x10]
mov esi, dword [ecx]
je 0x40e0ce
cmp dword [ecx + 0xc], 0
lea edx, [ecx + 0xc]
jge 0x40dfb1
cmp dword [eax - 8], 0
jl 0x40e0fc
mov dword [eax - 0xc], 0
xor ecx, ecx
mov eax, dword [edi + 0xc]
mov word [eax], cx
jmp 0x40e0ce
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x40dfee
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40e106
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40e106
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 0x40e10f
lock inc dword [esi + 0x14]
lea eax, [esi + 8]
add eax, 0x10
mov dword [edi + 0xc], eax
jmp 0x40e0ce
add eax, 0x10
mov dword [edi + 0xc], eax
jmp 0x40e0ce
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 0x40e118
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, esi
or eax, ecx
jge 0x40e056
push esi
lea ecx, [edi + 0xc]
call fcn.00401fd8
mov edx, dword [edi + 0xc]
cmp ebx, dword [ebp - 0x334]
ja 0x40e0a6
mov eax, dword [edx - 8]
lea ecx, [esi + esi]
lea ebx, [edx + ebx*2]
test ecx, ecx
je 0x40e0ba
test ebx, ebx
jne 0x40e081
call fcn.005af242
mov dword [eax], 0x16
call fcn.005af169
jmp 0x40e0ba
add eax, eax
cmp eax, ecx
jae 0x40e099
call fcn.005af242
mov dword [eax], 0x22
call fcn.005af169
jmp 0x40e0ba
push ecx
push ebx
push edx
call fcn.005abfe0
add esp, 0xc
jmp 0x40e0ba
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 0x40e0fc
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.004127e0
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.005a7b5f
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.004022df
mov ecx, edx
call ebx
jmp 0x40dfee
mov ecx, esi
call edx
jmp 0x40e010
push 0x80070057
call fcn.004022df
int3