Function at 0x4c5090
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54943e
mov eax, dword fs:[0]
push eax
sub esp, 8
push esi
push edi
mov eax, dword [0x580124]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
push 2
call fcn.00409de0
push 0x108
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 0
test eax, eax
je 0x4c50e6
mov ecx, eax
call fcn.004083c0
mov esi, eax
jmp 0x4c50e8
xor esi, esi
mov dword [ebp - 4], 0xffffffff
cmp dword [edi + 0x12c], esi
je 0x4c5117
test esi, esi
je 0x4c5101
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x12c]
mov dword [edi + 0x12c], esi
test eax, eax
je 0x4c5117
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x12c]
push edi
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x12c]
push 1
call fcn.00409d70
mov ecx, dword [edi + 0x12c]
sub esp, 0x10
movaps xmm0, xmmword [0x54e210]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x50]
push 0xa8
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 1
test eax, eax
je 0x4c5170
mov ecx, eax
call fcn.0041f370
mov esi, eax
jmp 0x4c5172
xor esi, esi
push 3
push 0x95
mov ecx, esi
mov dword [ebp - 4], 0xffffffff
call fcn.0041f000
mov ecx, dword [edi + 0x12c]
push esi
mov eax, dword [ecx]
call dword [eax + 0x98]
mov ecx, dword [edi + 0x12c]
push 1
call fcn.0040b080
mov ecx, dword [edi + 0x12c]
sub esp, 0x10
movaps xmm0, xmmword [0x54ddc0]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
mov ecx, dword [edi + 0x12c]
push 2
call fcn.00409de0
push 0x15c
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 2
test eax, eax
je 0x4c51f0
mov ecx, eax
call fcn.00413630
mov esi, eax
jmp 0x4c51f2
xor esi, esi
mov dword [ebp - 4], 0xffffffff
cmp dword [edi + 0x130], esi
je 0x4c5221
test esi, esi
je 0x4c520b
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x130]
mov dword [edi + 0x130], esi
test eax, eax
je 0x4c5221
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x130]
push edi
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x130]
push 1
call fcn.00409d70
mov ecx, dword [edi + 0x130]
push 1
call fcn.00409d40
mov ecx, dword [edi + 0x130]
push 1
call fcn.00409d10
push ecx
mov ecx, esp
push 0x54dee4
call fcn.00407ab0
mov ecx, dword [edi + 0x130]
call fcn.00413c60
mov ecx, dword [edi + 0x130]
sub esp, 0x10
mov eax, esp
xorps xmm0, xmm0
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
mov ecx, dword [edi + 0x130]
push 1
call fcn.0040b080
mov ecx, dword [edi + 0x130]
push 0x455c0b
mov eax, dword [ecx]
call dword [eax + pe_nt_image_headers32]
mov ecx, dword [edi + 0x130]
push 0x16
call fcn.004148d0
mov ecx, dword [edi + 0x130]
push 2
call fcn.00409de0
push 0x11c
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 3
test eax, eax
je 0x4c52e2
mov ecx, eax
call fcn.00411750
mov esi, eax
jmp 0x4c52e4
xor esi, esi
mov dword [ebp - 4], 0xffffffff
cmp dword [edi + 0x134], esi
je 0x4c5313
test esi, esi
je 0x4c52fd
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x134]
mov dword [edi + 0x134], esi
test eax, eax
je 0x4c5313
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x134]
push edi
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x134]
push 1
call fcn.00409d70
mov ecx, dword [edi + 0x134]
sub esp, 0x10
movaps xmm0, xmmword [0x54e1e0]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x50]
mov ecx, dword [edi + 0x134]
sub esp, 0x10
movaps xmm0, xmmword [0x54da80]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
mov ecx, dword [edi + 0x134]
push 2
call fcn.00409de0
push 0x15c
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 4
test eax, eax
je 0x4c5393
mov ecx, eax
call fcn.00413630
mov esi, eax
jmp 0x4c5395
xor esi, esi
mov dword [ebp - 4], 0xffffffff
cmp dword [edi + 0x138], esi
je 0x4c53c4
test esi, esi
je 0x4c53ae
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x138]
mov dword [edi + 0x138], esi
test eax, eax
je 0x4c53c4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x138]
push dword [edi + 0x134]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x138]
push 0
call fcn.00409d70
mov ecx, dword [edi + 0x138]
push 1
call fcn.00409d40
mov ecx, dword [edi + 0x138]
push 1
call fcn.00409d10
push ecx
mov ecx, esp
push 0x54e124
call fcn.00407ab0
mov ecx, dword [edi + 0x138]
call fcn.00413c60
mov ecx, dword [edi + 0x138]
sub esp, 0x10
movaps xmm0, xmmword [0x54e180]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
mov ecx, dword [edi + 0x138]
push 2
call fcn.0040b080
mov ecx, dword [edi + 0x138]
push 0x373737
mov eax, dword [ecx]
call dword [eax + pe_nt_image_headers32]
push 0x15c
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 5
test eax, eax
je 0x4c5474
mov ecx, eax
call fcn.00413630
mov esi, eax
jmp 0x4c5476
xor esi, esi
mov dword [ebp - 4], 0xffffffff
cmp dword [edi + 0x13c], esi
je 0x4c54a5
test esi, esi
je 0x4c548f
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x13c]
mov dword [edi + 0x13c], esi
test eax, eax
je 0x4c54a5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x13c]
push dword [edi + 0x134]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x13c]
push 2
call fcn.00409d70
mov ecx, dword [edi + 0x13c]
push 1
call fcn.00409d40
mov ecx, dword [edi + 0x13c]
push 1
call fcn.00409d10
push ecx
mov ecx, esp
push 0x54e130
call fcn.00407ab0
mov ecx, dword [edi + 0x13c]
call fcn.00413c60
mov ecx, dword [edi + 0x13c]
sub esp, 0x10
movaps xmm0, xmmword [0x54e190]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
mov ecx, dword [edi + 0x13c]
push 2
call fcn.0040b080
mov ecx, dword [edi + 0x13c]
push 0xf9af23
mov eax, dword [ecx]
call dword [eax + pe_nt_image_headers32]
mov ecx, dword [edi + 0x13c]
push 1
call fcn.00409f70
mov ecx, dword [edi + 0x13c]
xor eax, eax
cmp dword [0x583380], eax
sete al
mov edx, dword [ecx]
push eax
call dword [edx + 0xe4]
mov ecx, dword [edi + 0x13c]
test ecx, ecx
je 0x4c5575
lea eax, [edi + 0x11c]
test eax, eax
je 0x4c5575
push eax
push 0x384
call fcn.00401c40
push 0x11c
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 6
test eax, eax
je 0x4c559b
mov ecx, eax
call fcn.00411750
mov esi, eax
jmp 0x4c559d
xor esi, esi
mov dword [ebp - 4], 0xffffffff
cmp dword [edi + 0x140], esi
je 0x4c55cc
test esi, esi
je 0x4c55b6
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x140]
mov dword [edi + 0x140], esi
test eax, eax
je 0x4c55cc
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x140]
push edi
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x140]
push 1
call fcn.00409d70
mov ecx, dword [edi + 0x140]
sub esp, 0x10
movaps xmm0, xmmword [0x566040]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x50]
mov ecx, dword [edi + 0x140]
sub esp, 0x10
movaps xmm0, xmmword [0x54e1c0]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
push 0xa8
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 7
test eax, eax
je 0x4c563f
mov ecx, eax
call fcn.0041f370
mov esi, eax
jmp 0x4c5641
xor esi, esi
push 3
push 0x8c
mov ecx, esi
mov dword [ebp - 4], 0xffffffff
call fcn.0041f000
push 2
mov ecx, esi
call fcn.0041fcc0
movaps xmm0, xmmword [0x54e1d0]
sub esp, 0x10
mov eax, esp
mov ecx, esi
movups xmmword [eax], xmm0
call fcn.0041fdf0
mov ecx, dword [edi + 0x140]
push esi
mov eax, dword [ecx]
call dword [eax + 0x98]
push 0x168
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 8
test eax, eax
je 0x4c56aa
mov ecx, eax
call fcn.0042f720
mov esi, eax
jmp 0x4c56ac
xor esi, esi
mov dword [ebp - 4], 0xffffffff
cmp dword [edi + 0x144], esi
je 0x4c56db
test esi, esi
je 0x4c56c5
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x144]
mov dword [edi + 0x144], esi
test eax, eax
je 0x4c56db
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x144]
push 0x800
call fcn.00430090
mov ecx, dword [edi + 0x144]
push dword [edi + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x144]
push 4
call fcn.00409d70
mov eax, dword [0x5800ac]
cmp eax, 0xffffffff
jne 0x4c57ad
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp al, 6
jb 0x4c5734
movaps xmm0, xmmword [0x54e1a0]
mov dword [0x5800ac], 1
jmp 0x4c5745
mov dword [0x5800ac], 0
movaps xmm0, xmmword [0x54e1b0]
mov ecx, dword [edi + 0x144]
sub esp, 0x10
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
push ecx
mov ecx, esp
push str.c:program_file_
call fcn.00407ab0
mov ecx, dword [edi + 0x144]
call fcn.0042fa20
mov ecx, dword [edi + 0x144]
push 0
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov eax, dword [0x5832cc]
test eax, eax
jne 0x4c57c8
push 0x158
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 9
test eax, eax
je 0x4c57ba
mov ecx, eax
call fcn.00445ec0
jmp 0x4c57bc
test eax, eax
je 0x4c573e
movaps xmm0, xmmword [0x54e1a0]
jmp 0x4c5745
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov dword [0x5832cc], eax
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [eax + 4]
call fcn.0044b8d0
push ecx
mov esi, esp
mov dword [ebp - 4], 0xa
mov dword [ebp - 0x14], esi
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
push eax
call fcn.00406f70
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov ecx, dword [edi + 0x144]
call fcn.0042fa20
push 0x218
call fcn.004e4542
add esp, 4
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0xb
test eax, eax
je 0x4c5823
mov ecx, eax
call fcn.00418340
mov esi, eax
jmp 0x4c5825
xor esi, esi
mov byte [ebp - 4], 0xa
cmp dword [edi + 0x148], esi
je 0x4c5851
test esi, esi
je 0x4c583b
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [edi + 0x148]
mov dword [edi + 0x148], esi
test eax, eax
je 0x4c5851
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [edi + 0x148]
push edi
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 0x148]
push 1
call fcn.00409d70
mov ecx, dword [edi + 0x148]
push 1
call fcn.0040b080
mov ecx, dword [edi + 0x148]
sub esp, 0x10
movaps xmm0, xmmword [0x54e200]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x50]
mov ecx, dword [edi + 0x148]
sub esp, 0x10
movaps xmm0, xmmword [0x54da90]
mov eax, esp
mov edx, dword [ecx]
movups xmmword [eax], xmm0
call dword [edx + 0x70]
push ecx
mov ecx, esp
push 0x54e160
call fcn.00407ab0
mov ecx, dword [edi + 0x148]
call fcn.0041a030
mov ecx, dword [edi + 0x148]
push 0xffffff
call fcn.0041aaa0
mov ecx, dword [edi + 0x148]
push 0x16
call fcn.0041dee0
movaps xmm0, xmmword [0x54e1f0]
sub esp, 0x10
mov ecx, dword [edi + 0x148]
mov eax, esp
push 4
push 0x85
movups xmmword [eax], xmm0
call fcn.0041d620
mov ecx, dword [edi + 0x148]
test ecx, ecx
je 0x4c591b
add edi, 0x11c
je 0x4c591b
push edi
push 0
call fcn.00401c40
mov edx, dword [ebp - 0x10]
or eax, 0xffffffff
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4c593d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret