Function at 0x50b1d0
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x551c3d
mov eax, dword fs:[0]
push eax
sub esp, 0x164
mov eax, dword [0x5d3b14]
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
cmp byte [0x5de9b0], 0
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x168], ecx
jne 0x50b265
push 0x110
lea eax, [ebp - 0x158]
push 0
push eax
call fcn.00515fd2
add esp, 0xc
mov dword [ebp - 0x15c], 0x114
lea eax, [ebp - 0x15c]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0x158], 5
ja 0x50b251
jne 0x50b258
cmp dword [ebp - 0x154], 1
jb 0x50b258
mov byte [0x5de9b1], 1
mov ecx, dword [ebp - 0x168]
mov byte [0x5de9b0], 1
test ecx, ecx
je 0x50b4e0
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x50b4e0
xor eax, eax
xor edi, edi
xor esi, esi
mov dword [ebp - 0x16c], edi
mov dword [ebp - 0x164], eax
mov dword [ebp - 0x170], eax
test ebx, ebx
je 0x50b3a9
nop dword [eax + eax]
mov eax, dword [ecx + esi*4]
test eax, eax
je 0x50b394
xor ecx, ecx
xorps xmm0, xmm0
mov word [ebp - 0x2c], cx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x40], ecx
movups xmmword [ebp - 0x3c], xmm0
mov dword [ebp - 4], ecx
lea ecx, [ebp - 0x48]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
jne 0x50b2ff
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x50b2e8
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x50b38e
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x50b38e
lea eax, [ebp - 0x16c]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.0050b500
add esp, 0xc
mov byte [ebp - 0x15d], al
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x50b331
push ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x50b33f
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
cmp byte [ebp - 0x15d], 0
je 0x50b38e
mov eax, dword [ebp - 0x18]
cmp edi, eax
mov cx, word [ebp - 0x16c]
cmovg eax, edi
movzx edx, cx
mov edi, eax
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0x164], eax
cmovg eax, dword [ebp - 0x164]
cmp word [ebp - 0x170], cx
mov dword [ebp - 0x164], eax
mov eax, dword [ebp - 0x170]
movzx eax, ax
cmova edx, eax
movzx edx, dx
mov dword [ebp - 0x170], edx
mov ecx, dword [ebp - 0x168]
inc esi
cmp esi, ebx
jb 0x50b2a0
mov eax, dword [ebp - 0x164]
mov dword [ebp - 0x16c], edi
mov ecx, dword [ebp - 0x16c]
xor edi, edi
test ecx, ecx
je 0x50b4dc
test eax, eax
je 0x50b4dc
add eax, 7
mov dword [ebp - 0x20], edi
cdq
xorps xmm0, xmm0
and edx, 7
movq qword [ebp - 0x28], xmm0
lea esi, [edx + eax]
lea eax, [ecx + 7]
sar esi, 3
cdq
lea ecx, [ebp - 0x28]
and edx, 7
add eax, edx
sar eax, 3
imul esi, eax
lea eax, [ebp - 0x15d]
push eax
shl esi, 3
push esi
call fcn.0050ab60
mov dword [ebp - 4], 1
lea eax, [ebp - 0x15d]
push eax
xorps xmm0, xmm0
mov dword [ebp - 0x14], edi
push esi
lea ecx, [ebp - 0x1c]
movq qword [ebp - 0x1c], xmm0
call fcn.0050ab60
mov byte [ebp - 4], 2
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x28]
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push esi
mov esi, dword [ebp - 0x16c]
push edi
mov edi, dword [ebp - 0x164]
push 1
push 1
push edi
push esi
push eax
call dword [sym.imp.USER32.dll_CreateIcon]
cmp word [ebp - 0x170], 0x20
mov dword [ebp - 0x164], eax
jne 0x50b468
cmp byte [0x5de9b1], 0
mov eax, 0x20
jne 0x50b46d
mov eax, 0xff
push 0
push ebx
push eax
push edi
push esi
call dword [sym.imp.COMCTL32.dll_ImageList_Create]
xor esi, esi
mov edi, eax
test ebx, ebx
je 0x50b4b5
lfence
mov eax, dword [ebp - 0x168]
mov ecx, dword [eax + esi*4]
or eax, 0xffffffff
test ecx, ecx
je 0x50b49d
push ecx
push eax
push edi
call dword [sym.imp.COMCTL32.dll_ImageList_ReplaceIcon]
cmp eax, esi
je 0x50b4b0
push dword [ebp - 0x164]
push 0xffffffffffffffff
push edi
call dword [sym.imp.COMCTL32.dll_ImageList_ReplaceIcon]
inc esi
cmp esi, ebx
jb 0x50b484
push dword [ebp - 0x164]
call dword [sym.imp.USER32.dll_DestroyIcon]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x1c]
call fcn.00494e00
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.00494e00
mov eax, edi
jmp 0x50b4e2
xor eax, eax
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.005150f0
mov esp, ebp
pop ebp
ret