Function at 0x401d00
Capabilities:
Check os version
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x4d550c
mov eax, dword fs:[0]
push eax
sub esp, 0x1bc
mov eax, dword [0x54d158]
xor eax, esp
mov dword [esp + 0x1b8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x54d158]
xor eax, esp
push eax
lea eax, [esp + 0x1d0]
mov dword fs:[0], eax
mov ecx, 0xe
lea esi, [esp + 0x1e8]
lea edi, [esp + 0x7c]
xor ebp, ebp
rep movsd dword es:[edi], dword [esi]
mov esi, str.Root
mov dword [esp + 0x38], ebp
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x28], ebp
sub esi, 0x64
add dword [esp + 0x30], 1
add esi, 0x64
cmp esi, 0x54fde8
mov dword [esp + 0x34], esi
jge 0x40228c
mov eax, dword [esp + 0x28]
test eax, eax
je 0x401d94
push 0
push eax
call dword [sym.imp.CRYPT32.dll_CertCloseStore]
push esi
call fcn.004014f0
add esp, 4
push esi
push 0x20000
push 0
push 0x10001
push 0xa
call dword [sym.imp.CRYPT32.dll_CertOpenStore]
mov edi, eax
test edi, edi
mov dword [esp + 0x28], edi
jne 0x401dce
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
call fcn.004014f0
add esp, 8
jmp 0x401d6b
mov dword [esp + 0x24], 0xffffffff
call fcn.004a08e6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x402249
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x1d8], 0
call fcn.004a08e6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x402249
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
push 0
push edi
mov byte [esp + 0x1e0], 1
call dword [sym.imp.CRYPT32.dll_CertEnumCertificatesInStore]
mov ebx, eax
test ebx, ebx
je 0x4021e0
add dword [esp + 0x24], 1
lea ecx, [esp + 0x3c]
push ebx
push ecx
call fcn.00401a40
add esp, 8
mov byte [esp + 0x1d8], 2
mov ecx, dword [eax]
mov esi, dword [esp + 0x18]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x401eb6
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x401ea8
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x401ea8
push eax
call fcn.0040ff10
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x401e9f
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x18], ebp
jmp 0x401eb6
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.0040fe70
mov byte [esp + 0x1d8], 1
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401ede
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x40]
push ebx
push ecx
call fcn.00401b30
add esp, 8
mov byte [esp + 0x1d8], 3
mov ecx, dword [eax]
mov esi, dword [esp + 0x14]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x401f4b
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x401f3d
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x401f3d
push eax
call fcn.0040ff10
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x401f34
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x14], ebp
jmp 0x401f4b
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040fe70
mov byte [esp + 0x1d8], 1
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401f73
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x1e4], 0
je 0x401fbe
mov eax, dword [esp + 0x14]
mov ecx, str.my_dev_ca
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x401fac
test dx, dx
je 0x401fa8
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x401fac
add eax, 4
add ecx, 4
test dx, dx
jne 0x401f86
xor eax, eax
jmp 0x401fb1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
jne 0x4021c2
xor esi, esi
push 0x110
lea ecx, [esp + 0xbc]
push esi
push ecx
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], esi
call fcn.004b0770
add esp, 0xc
lea edx, [esp + 0xb4]
push edx
mov dword [esp + 0xb8], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0xb8], 6
jae 0x402022
push esi
push 1
push esi
push esi
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x402022
push str.CryptAcquireContext_succeeded._n
call fcn.004acf83
add esp, 4
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 4]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x24]
push esi
push edx
push eax
push esi
push esi
mov esi, dword [sym.imp.CRYPT32.dll_CryptHashCertificate]
push ecx
call esi
test eax, eax
je 0x402185
mov edx, dword [esp + 0x1c]
push edx
call fcn.004a08e1
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x402185
mov ecx, dword [ebx + 8]
mov edx, dword [ebx + 4]
lea eax, [esp + 0x1c]
push eax
mov eax, dword [esp + 0x24]
push ebp
push ecx
push edx
push 0
push 0
push eax
call esi
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
push 0
mov dword [esp + 0x84], ecx
push 0x38
mov dword [esp + 0xa0], edx
mov ecx, 0xe
lea esi, [esp + 0x84]
lea edi, [esp + 0x4c]
lea eax, [esp + 0x4c]
mov dword [esp + 0x8c], ebp
rep movsd dword es:[edi], dword [esi]
push eax
mov esi, 1
push esi
push 0
call dword [sym.imp.HTTPAPI.dll_HttpSetServiceConfiguration]
cmp eax, 0xb7
je 0x4020cc
test eax, eax
jne 0x40215e
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x28]
push edx
push eax
push ecx
mov dword [esp + 0x48], esi
call fcn.004014f0
add esp, 0x10
cmp byte [esp + 0x1e4], 0
je 0x40217a
mov ecx, str.127.0.0.1
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402126
test dx, dx
je 0x402122
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402126
add eax, 4
add ecx, 4
test dx, dx
jne 0x402100
xor eax, eax
jmp 0x40212b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
je 0x40214f
mov edx, dword [esp + 0x1e0]
push edx
call fcn.00401c70
add esp, 4
push ebp
call fcn.004a08dc
add esp, 4
jmp 0x4021a1
push ebp
mov dword [esp + 0x30], esi
call fcn.004a08dc
add esp, 4
jmp 0x4021a1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x28]
push ecx
push edx
push eax
call fcn.004014f0
add esp, 0x10
push ebp
call fcn.004a08dc
add esp, 4
jmp 0x4021a1
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x28]
push edx
push eax
push ecx
call fcn.004014f0
add esp, 0x10
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4021b2
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ebp, dword [esp + 0x2c]
test ebp, ebp
mov dword [esp + 0x20], 0
jne 0x4021dc
mov edx, dword [esp + 0x28]
push ebx
push edx
call dword [sym.imp.CRYPT32.dll_CertEnumCertificatesInStore]
mov ebx, eax
test ebx, ebx
jne 0x401e44
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
push esi
call fcn.004014f0
mov byte [esp + 0x1dc], 0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
add esp, 4
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test ebp, ebp
jne 0x402253
test edx, edx
jg 0x402215
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x1d8], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401d6b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x401d6b
push 0x80004005
call fcn.004103e0
test edx, edx
jg 0x402261
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x1d8], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40228c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x40229d
push 0
push eax
call dword [sym.imp.CRYPT32.dll_CertCloseStore]
cmp byte [esp + 0x1e4], 0
je 0x4022ae
test ebp, ebp
setne al
jmp 0x4022c1
cmp dword [esp + 0x38], 0
je 0x4022b9
mov al, 1
jmp 0x4022c1
cmp dword [esp + 0x30], 4
setl al
mov ecx, dword [esp + 0x1d0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x1b8]
xor ecx, esp
call fcn.004ac89d
add esp, 0x1c8
ret