Function at 0x406b8a
Capabilities:
Check os version
Get common file path

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x6c
mov edx, dword [ebp + 0xc]
mov ecx, dword [0x435a90]
test edx, edx
jns 0x406baf
not edx
mov eax, dword [0x436bb8]
mov eax, dword [eax + edx*4]
lea edx, [eax + eax]
jmp 0x406bb1
add edx, edx
mov dword [ebp - 0x40], 0x436bc8
cmp dword [ebp + 8], 0x436bc8
jb 0x406bdf
mov eax, dword [ebp + 8]
sub eax, 0x436bc8
sar eax, 1
cmp eax, 0x7ff
ja 0x406bdf
mov eax, dword [ebp + 8]
mov dword [ebp + 8], 0
mov dword [ebp - 0x40], eax
add ecx, edx
mov dword [ebp - 0x44], ecx
jmp 0x406e36
add dword [ebp - 0x44], 2
cmp cx, 3
ja 0x406e0c
mov edx, dword [ebp - 0x44]
mov al, byte [edx]
movzx esi, byte [edx + 1]
mov byte [ebp - 0x78], al
mov ax, word [edx]
movzx ebx, al
mov byte [ebp - 0x59], al
mov edx, ebx
shr ax, 8
or dh, 0x80
movzx edi, al
mov byte [ebp - 0x58], al
mov eax, edi
or ah, 0x80
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x20], edi
cmp cx, 2
mov dword [ebp - 0x24], eax
jne 0x406d7f
call sub.KERNEL32.dll_GetVersion
test eax, eax
jns 0x406c5b
cmp ax, 0x5a04
je 0x406c5b
cmp edi, 0x23
sete al
cmp edi, 0x2e
sete dl
or eax, edx
movzx eax, al
mov dword [ebp - 0x3c], eax
jmp 0x406c62
mov dword [ebp - 0x3c], 1
cmp dword [0x435a0c], 1
sbb esi, esi
and esi, 0xfffffffe
add esi, 4
test bl, bl
jns 0x406cb6
sub esp, 0xc
mov eax, ebx
and eax, 0x40
and ebx, 0x3f
push eax
xor esi, esi
push dword [ebp - 0x40]
lea eax, [ebx + ebx]
add eax, dword [0x435a90]
push eax
push str.SoftwareMicrosoftWindowsCurrentVersion
push 0x80000002
call fcn.00406b04
mov edx, dword [ebp - 0x40]
add esp, 0xc
cmp word [edx], 0
jne 0x406ce6
push eax
push eax
push edi
push edx
call fcn.00406b8a
jmp 0x406ce4
cmp byte [ebp - 0x59], 0x25
jne 0x406ccd
push eax
push eax
push 0x400
push dword [ebp - 0x40]
call sub.KERNEL32.dll_GetSystemDirectoryW
jmp 0x406ce2
cmp byte [ebp - 0x59], 0x24
jne 0x406ce6
push eax
push eax
push 0x400
push dword [ebp - 0x40]
call sub.KERNEL32.dll_GetWindowsDirectoryW
xor esi, esi
pop ebx
pop edi
lea edi, [ebp + esi*4 - 0x2c]
jmp 0x406d59
mov eax, dword [0x435af8]
test eax, eax
je 0x406d17
cmp dword [ebp - 0x3c], 0
je 0x406d17
sub esp, 0xc
push dword [ebp - 0x40]
push 0
push 0
push dword [edi - 4]
push dword [0x435b08]
call eax
add esp, 0xc
test eax, eax
je 0x406d5f
push ecx
lea ecx, [ebp - 0x1c]
push ecx
push dword [edi - 4]
push dword [0x435b08]
call sub.SHELL32.DLL_SHGetSpecialFolderLocation
pop edx
test eax, eax
jne 0x406d4e
push eax
push eax
push dword [ebp - 0x40]
push dword [ebp - 0x1c]
call sub.SHELL32.DLL_SHGetPathFromIDListW
mov ebx, eax
push eax
push dword [ebp - 0x1c]
call sub.OLE32.dll_CoTaskMemFree
add esp, 0xc
test ebx, ebx
jne 0x406d5f
mov eax, dword [ebp - 0x40]
sub edi, 4
mov word [eax], 0
dec esi
cmp esi, 0xffffffff
jne 0x406cec
mov edx, dword [ebp - 0x40]
cmp word [edx], 0
je 0x406dcc
cmp byte [ebp - 0x58], 0x1a
jne 0x406dcc
push eax
push eax
push str.MicrosoftInternet_ExplorerQuick_Launch
push edx
call fcn.00406a60
pop edi
pop eax
jmp 0x406dcc
mov ebx, esi
mov al, byte [ebp - 0x78]
and ebx, 0x7f
and eax, 0x7f
shl ebx, 7
or ebx, eax
cmp cx, 3
jne 0x406ddc
cmp ebx, 0x1d
jne 0x406dac
push esi
push esi
push dword [0x435b08]
push dword [ebp - 0x40]
call fcn.004067be
jmp 0x406dc2
mov eax, ebx
push ecx
shl eax, 0xb
push ecx
add eax, dword [0x40b688]
push eax
push dword [ebp - 0x40]
call fcn.00406aea
pop eax
lea eax, [ebx - 0x15]
pop edx
cmp eax, 6
ja 0x406def
sub esp, 0xc
push dword [ebp - 0x40]
call fcn.00406995
add esp, 0xc
jmp 0x406def
dec cx
jne 0x406def
not ebx
push eax
push eax
push ebx
push dword [ebp - 0x40]
call fcn.00406b8a
pop esi
pop edi
sub esp, 0xc
push dword [ebp - 0x40]
add dword [ebp - 0x44], 2
call fcn.00406a69
mov ecx, dword [ebp - 0x40]
add esp, 0xc
lea ecx, [ecx + eax*2]
mov dword [ebp - 0x40], ecx
jmp 0x406e36
cmp cx, 4
mov eax, dword [ebp - 0x40]
lea edx, [eax + 2]
jne 0x406e2d
mov ecx, dword [ebp - 0x44]
mov ax, word [ecx]
mov ecx, dword [ebp - 0x40]
mov word [ecx], ax
mov dword [ebp - 0x40], edx
add dword [ebp - 0x44], 2
jmp 0x406e36
mov eax, dword [ebp - 0x40]
mov word [eax], cx
mov dword [ebp - 0x40], edx
mov edx, dword [ebp - 0x44]
mov cx, word [edx]
test cx, cx
je 0x406e54
mov eax, dword [ebp - 0x40]
sub eax, 0x436bc8
cmp eax, 0x7ff
jle 0x406be9
mov ecx, dword [ebp - 0x40]
mov eax, 0x436bc8
mov word [ecx], 0
cmp dword [ebp + 8], 0
je 0x406e74
push ebx
push ebx
push eax
push dword [ebp + 8]
call fcn.00406aea
pop edx
pop ecx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 8