Function at 0x1000ddd0
Capabilities:
Check os version
Get common file path
Get file system object information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x578
mov eax, dword [0x1002bea0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push 0x154
lea eax, [ebp - 0x3fc]
mov dword [ebp - 0x400], 0x158
push 0
push eax
call fcn.10012240
mov ax, word [0x10023ea4]
add esp, 0xc
movaps xmm0, xmmword [0x10024020]
mov ebx, dword [sym.imp.USER32.dll_GetSysColor]
mov word [0x1002d9a0], ax
mov al, byte [0x10023ea6]
movups xmmword [0x1002e1bc], xmm0
mov byte [0x1002d9a2], al
xor eax, eax
movaps xmm0, xmmword [0x10024010]
movups xmmword [0x1002e1d8], xmm0
push 4
movaps xmm0, xmmword [0x10024000]
mov dword [0x1002d990], 0xffffffff
mov dword [0x1002e1d4], 1
mov dword [0x1002d998], 0x1000a
mov dword [0x1002d99c], 0
mov word [0x1002daa4], ax
mov word [0x1002dba8], ax
mov dword [0x1002dfa8], 1
mov dword [0x1002dfac], eax
mov byte [0x1002dfb4], al
mov byte [0x1002e0b8], al
mov dword [0x1002e1cc], 1
mov dword [0x1002e1d0], eax
mov dword [0x1002e1e8], 0x10
mov dword [0x1002e1ec], eax
mov dword [0x1002e1f0], 0xffffffff
mov byte [0x1002e1f8], al
movups xmmword [0x1002e2fc], xmm0
mov dword [0x1002e30c], eax
mov dword [0x1002e310], eax
call ebx
push 0xd
mov dword [0x1002e314], eax
call ebx
movsd xmm0, qword [0x10023f88]
sub esp, 0x18
xorps xmm1, xmm1
mov dword [0x1002e318], eax
mov dword [0x1002e31c], 0
mov dword [0x1002e320], 0
movsd qword [esp + 0x10], xmm1
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm1
push 4
call ebx
push eax
call fcn.1000da80
movsd xmm0, qword [0x10023f90]
add esp, 4
xorps xmm1, xmm1
mov dword [0x1002e324], eax
movsd qword [esp + 0x10], xmm1
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm1
push 0xd
call ebx
push eax
call fcn.1000da80
add esp, 0x1c
mov dword [0x1002e328], eax
mov dword [0x1002e32c], 0
mov dword [0x1002e330], 0
push 4
call ebx
movsd xmm0, qword [0x10023f98]
sub esp, 0x18
xorps xmm1, xmm1
mov dword [0x1002e334], eax
movsd qword [esp + 0x10], xmm1
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm1
push 0xd
call ebx
push eax
call fcn.1000da80
add esp, 0x1c
mov dword [0x1002e338], eax
mov dword [0x1002e33c], 0
mov dword [0x1002e340], 0
push 7
call ebx
push 0xe
mov dword [0x1002e344], eax
call ebx
push 0x15
mov dword [0x1002e348], eax
mov dword [0x1002e34c], 0
mov dword [0x1002e350], 0
call ebx
push 0xe
mov dword [0x1002e354], eax
call ebx
push 0
mov dword [0x1002e358], eax
call fcn.10015f2a
mov ecx, dword [str.__1_]
mov dword [0x1002e35c], eax
mov al, byte [0x10023eac]
push 0x98
mov byte [0x1002e368], al
mov byte [0x1002e46c], al
lea eax, [ebp - 0x2a4]
push 0
push eax
mov dword [0x1002e360], 0x7080
mov dword [0x1002e364], ecx
mov dword [0x1002e468], ecx
mov dword [ebp - 0x2a8], 0x9c
call fcn.10012240
add esp, 0x10
lea eax, [ebp - 0x2a8]
xor ebx, ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x298], 2
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
jne 0x1000e16a
mov eax, dword [ebp - 0x2a4]
cmp eax, 5
jne 0x1000e118
mov eax, dword [ebp - 0x2a0]
cmp eax, 1
jne 0x1000e08d
mov ebx, 0x1fe
jmp 0x1000e16a
cmp eax, 2
jne 0x1000e16a
cmp byte [ebp - 0x20e], 1
jne 0x1000e0a9
mov ebx, 0x208
jmp 0x1000e16a
push 0x59
call esi
test eax, eax
mov ecx, 0x209
mov eax, dword [ebp - 0x2a4]
cmove ebx, ecx
cmp eax, 5
jne 0x1000e118
cmp dword [ebp - 0x2a0], 2
jne 0x1000e16a
cmp byte [ebp - 0x20e], 1
je 0x1000e16a
push 0x59
call esi
test eax, eax
mov ecx, 0x20b
mov eax, dword [ebp - 0x2a4]
cmovne ebx, ecx
cmp eax, 5
jne 0x1000e118
cmp dword [ebp - 0x2a0], 2
jne 0x1000e16a
cmp byte [ebp - 0x20e], 1
je 0x1000e16a
test dword [ebp - 0x210], 0x8000
je 0x1000e16a
lea ebx, [ecx - 1]
jmp 0x1000e16a
cmp eax, 6
jne 0x1000e16a
mov eax, dword [ebp - 0x2a0]
test eax, eax
jne 0x1000e13b
xor ebx, ebx
cmp byte [ebp - 0x20e], 1
setne bl
add ebx, 0x258
jmp 0x1000e16a
cmp eax, 1
jne 0x1000e153
xor ebx, ebx
cmp byte [ebp - 0x20e], al
setne bl
add ebx, 0x262
jmp 0x1000e16a
cmp eax, 2
jne 0x1000e16a
xor ebx, ebx
cmp byte [ebp - 0x20e], 1
setne bl
add ebx, 0x26c
push str.FastFolders
mov byte [0x1002d7ac], 0
mov dword [0x1002d7a8], ebx
call fcn.100049c0
add esp, 4
test al, al
je 0x1000e68d
push edi
push str.FastFolders
push 0x1002cbd4
push str._s_s.exe
push 0x104
push 0x1002d840
call fcn.10001fc0
add esp, 0x14
push 0x31
call esi
mov ebx, eax
push 0x32
mov dword [ebp - 0x568], ebx
call esi
mov esi, eax
push 0
mov dword [ebp - 0x574], esi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push esi
push ebx
mov edi, eax
push 0
mov dword [ebp - 0x56c], edi
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
push edi
mov dword [ebp - 0x564], eax
call dword [sym.imp.GDI32.dll_SelectObject]
push 4
mov ebx, eax
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
push 0
push esi
push dword [ebp - 0x568]
mov edi, eax
push 1
push 1
push dword [0x1002d79c]
call dword [sym.imp.USER32.dll_LoadImageA]
push 3
push edi
push 0
push dword [ebp - 0x574]
mov esi, eax
push dword [ebp - 0x568]
push esi
push 0
push 0
push dword [ebp - 0x56c]
call dword [sym.imp.USER32.dll_DrawIconEx]
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
push esi
call dword [sym.imp.USER32.dll_DestroyIcon]
push ebx
mov ebx, dword [ebp - 0x56c]
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
push ebx
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [ebp - 0x564]
push 0
mov dword [0x1002d7b0], eax
lea eax, [ebp - 0x400]
push eax
push 0x158
push 0x29
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov esi, dword [sym.imp.GDI32.dll_CreateFontIndirectA]
lea eax, [ebp - 0x324]
push eax
call esi
mov dword [0x1002d7b4], eax
lea eax, [ebp - 0x360]
push eax
call esi
mov dword [0x1002d7b8], eax
push 0x4001
push 0x160
lea eax, [ebp - 0x560]
push eax
push 0
push 0x10023ebc
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
push 0x1002d7c0
push 0x1002d7bc
push eax
mov dword [0x1002d804], eax
call dword [sym.imp.COMCTL32.dll_ImageList_GetIconSize]
mov esi, dword [sym.imp.USER32.dll_RegisterWindowMessageA]
push str.FastFolders_LButtonMsg
call esi
push str.FastFolders_RButtonMsg
mov dword [0x1002d820], eax
call esi
push str.FastFolders_CursorMsg
mov dword [0x1002d824], eax
call esi
push 0x1002d790
mov dword [0x1002d828], eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
push 0x1002d794
call dword [sym.imp.SHELL32.dll_SHGetDesktopFolder]
push 0xbdc
push 0x1002d990
push 0xffffffffffffffff
push str.Options
call fcn.100046c0
add esp, 0x10
mov esi, 0x1002e570
nop dword [eax]
mov edx, dword [esi]
test edx, edx
je 0x1000e358
mov eax, dword [0x1002d790]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [esi], 0
add esi, 4
cmp esi, 0x1002e670
jl 0x1000e340
push 0x100
push 0
push 0x1002e570
call fcn.10012240
add esp, 0xc
cmp dword [0x1002e1d0], 0
je 0x1000e3ba
mov esi, 0x1002e570
mov edx, dword [esi]
test edx, edx
je 0x1000e39d
mov eax, dword [0x1002d790]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [esi], 0
add esi, 4
cmp esi, 0x1002e670
jl 0x1000e385
push 0x10023f74
call fcn.10004570
add esp, 4
jmp 0x1000e462
cmp dword [0x1002e1c4], 0
je 0x1000e462
xor esi, esi
cmp dword [0x1002e1c8], esi
jle 0x1000e462
push 0
push 0
push esi
push 0x10023f74
call fcn.100046c0
mov edi, eax
add esp, 0x10
test edi, edi
je 0x1000e462
mov ecx, dword [0x1002d790]
push edi
push ecx
mov edx, dword [ecx]
call dword [edx + 0xc]
push edi
push eax
push esi
push 0x10023f74
mov dword [esi*4 + 0x1002e570], eax
call fcn.100046c0
push 0x8000
push 0x208
lea eax, [ebp - 0x20c]
push eax
push dword [esi*4 + 0x1002e570]
push dword [0x1002d794]
call fcn.10004050
add esp, 0x24
test eax, eax
je 0x1000e455
mov eax, dword [0x1002d790]
push dword [esi*4 + 0x1002e570]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [esi*4 + 0x1002e570], 0
inc esi
cmp esi, dword [0x1002e1c8]
jl 0x1000e3d5
mov esi, 0x1002e678
mov edx, dword [esi]
test edx, edx
je 0x1000e47e
cmp edx, 0xffffffff
je 0x1000e47e
mov eax, dword [0x1002d790]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
add esi, 4
cmp esi, 0x1002e778
jl 0x1000e467
push 0x100
push 0
push 0x1002e678
call fcn.10012240
add esp, 0xc
cmp dword [0x1002e1e4], 0
je 0x1000e518
xor esi, esi
cmp dword [0x1002e1e8], esi
jle 0x1000e518
push 0
push 0
push esi
push 0x10023f78
call fcn.100046c0
mov edi, eax
add esp, 0x10
test edi, edi
je 0x1000e518
mov ecx, dword [0x1002d790]
push edi
push ecx
mov edx, dword [ecx]
call dword [edx + 0xc]
push edi
push eax
push esi
push 0x10023f78
mov dword [esi*4 + 0x1002e678], eax
call fcn.100046c0
mov edx, dword [esi*4 + 0x1002e678]
add esp, 0x10
cmp dword [edx], 0xffffffff
jne 0x1000e50f
mov eax, dword [0x1002d790]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [esi*4 + 0x1002e678], 0xffffffff
inc esi
cmp esi, dword [0x1002e1e8]
jl 0x1000e4b0
call fcn.1000f3b0
mov eax, dword [0x1002e304]
mov esi, 0x10023f08
cmp eax, 3
ja case.default.0x1000e52c
jmp dword [eax*4 + 0x1000e6a0]
mov esi, str.8.888.888.888_KB
jmp case.default.0x1000e52c
mov esi, str.8.888.888_MB
jmp case.default.0x1000e52c
mov esi, str._8.888_GB
jmp case.default.0x1000e52c
mov esi, str.__8888_GB
xorps xmm0, xmm0
push 0
movq qword [ebp - 0x578], xmm0
call dword [sym.imp.USER32.dll_GetDC]
push dword [0x1002d7b8]
mov ebx, dword [sym.imp.GDI32.dll_SelectObject]
mov edi, eax
push edi
call ebx
mov edx, esi
mov dword [ebp - 0x564], eax
lea eax, [edx + 1]
nop dword [eax]
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x1000e580
sub edx, eax
lea eax, [ebp - 0x578]
push eax
push edx
push esi
push edi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
push dword [ebp - 0x564]
push edi
call ebx
push edi
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [ebp - 0x578]
mov ecx, dword [0x1002d7c0]
mov dword [0x1002d7e4], eax
mov eax, dword [ebp - 0x574]
cmp eax, ecx
mov dword [0x1002d7e8], eax
cmovg ecx, eax
mov eax, dword [0x1002e1d8]
add eax, 2
add ecx, eax
mov dword [0x1002d7ec], ecx
mov eax, ecx
cmp ecx, 8
jge 0x1000e5f0
mov ecx, 8
mov dword [0x1002d7ec], ecx
mov eax, ecx
mov edi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov esi, 0x1002b04c
cdq
sub eax, edx
mov dword [0x1002d7f4], 6
sar eax, 1
mov dword [0x1002d7f0], eax
mov eax, dword [0x1002e1f0]
cmp eax, 0xffffffff
cmove eax, ecx
mov dword [0x1002e1f0], eax
nop
lea eax, [ebp - 0x570]
push eax
push dword [esi - 4]
push 0
call edi
push 0x8000
push 0x104
push esi
push dword [ebp - 0x570]
push dword [0x1002d794]
call fcn.10004050
mov eax, dword [0x1002d790]
add esp, 0x14
push dword [ebp - 0x570]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
add esi, 0x108
cmp esi, 0x1002b784
jl 0x1000e620
cmp byte [0x1002e0b8], 0
pop edi
jne 0x1000e68d
push 0x1002b04c
push 0x104
push 0x1002e0b8
call fcn.1001557c
add esp, 0xc
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.1001025d
mov esp, ebp
pop ebp
ret