Function at 0x45d2d0
Capabilities:
Accept command line arguments
Check os version
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
mov eax, dword [0x4a8014]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov dword [0x4ab370], eax
call dword [sym.imp.KERNEL32.dll_GetVersion]
rol ax, 8
movzx eax, ax
mov dword [0x4ab564], eax
lea eax, [ebp - 0x118]
push eax
mov dword [ebp - 0x118], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x45d33f
cmp dword [ebp - 0x108], 2
jne 0x45d33f
cmp dword [ebp - 0x114], 5
ja 0x45d335
jne 0x45d33f
cmp dword [ebp - 0x110], 0
je 0x45d33f
mov dword [0x4ab560], 1
push esi
call fcn.004469f0
mov dword [0x4ab4a4], 0x440710
mov dword [0x4ab494], 0x427470
mov dword [0x4ab498], 0x4274c0
mov dword [0x4ab49c], 0x428020
mov dword [0x4ab4a0], 0x4280d0
mov dword [0x4ab4a8], 0x427910
mov dword [0x4ab4dc], 0x4278f0
mov dword [0x4ab4ac], 0x427a00
mov dword [0x4ab4e0], 0x4279a0
mov dword [0x4ab4b0], 0x427630
mov dword [0x4ab4e4], 0x427610
mov dword [0x4ab4b4], 0x427720
mov dword [0x4ab4c0], 0x427a90
mov dword [0x4ab4c4], 0x427c90
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov esi, eax
movzx ecx, word [esi]
lea edx, [esi + 2]
cmp ecx, 0x22
je 0x45d3e6
mov edx, esi
xor eax, eax
cmp ecx, 0x22
sete al
lea eax, [eax*2 + 0x20]
push eax
push edx
call fcn.0046ed19
add esp, 8
test eax, eax
je 0x45d406
lea esi, [eax + 2]
mov ecx, esi
call fcn.00446f20
push 2
push 0x104
call fcn.0047122f
push 2
push 0x104
mov dword [0x4ab154], eax
call fcn.0047122f
mov ecx, dword [0x4ab154]
add esp, 0x10
mov dword [0x4ab148], eax
test ecx, ecx
je 0x45d63e
test eax, eax
je 0x45d63e
push edi
push 0x104
push ecx
push dword [0x4ab370]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov edi, dword [0x4ab148]
push 2
push 0x104
call fcn.0047122f
mov esi, eax
add esp, 8
test esi, esi
je 0x45d49a
push esi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
push edi
push 0
push 0x498e08
push esi
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push esi
call fcn.00471245
add esp, 4
mov eax, dword [0x4ab148]
cmp word [eax], 0
je 0x45d63d
push eax
call fcn.0047242a
add esp, 4
push 0
push dword [0x4ab148]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x45d63d
mov ecx, dword [0x4ab148]
call fcn.00428ca0
call fcn.00408d80
test eax, eax
jne 0x45d63d
mov ecx, dword [0x4ab148]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45d4f0
sub ecx, edx
sar ecx, 1
push 2
lea eax, [ecx + 1]
push eax
call fcn.0047122f
mov edx, dword [0x4ab148]
add esp, 8
mov dword [0x4ab368], eax
nop dword [eax + eax]
movzx ecx, word [edx]
lea edx, [edx + 2]
mov word [eax], cx
lea eax, [eax + 2]
test cx, cx
jne 0x45d520
mov edx, dword [0x4ab368]
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45d540
sub ecx, esi
sar ecx, 1
cmp ecx, 3
jle 0x45d563
cmp word [edx + ecx*2 - 2], 0x5c
jne 0x45d563
xor eax, eax
mov word [edx + ecx*2 - 2], ax
mov dword [0x4ab530], 0
call dword [sym.imp.MMFS2.dll_Ordinal_1055]
xor esi, esi
cmp dword [0x4a9d84], esi
jne 0x45d58b
mov esi, dword [0x4ab50c]
test esi, esi
je 0x45d63d
call fcn.00446ad0
test eax, eax
jne 0x45d621
mov edi, dword [sym.imp.KERNEL32.dll_GlobalAddAtomW]
cmp dword [0x4ab570], eax
jne 0x45d5d3
push str.krdp
call edi
movzx eax, ax
push str.kprc
mov dword [0x4ab570], eax
call edi
movzx eax, ax
push str.kspc
mov dword [0x4ab56c], eax
call edi
movzx eax, ax
mov dword [0x4ab578], eax
push str.knum
call edi
movzx eax, ax
mov dword [0x4ab574], eax
call fcn.00426fe0
test eax, eax
je 0x45d63d
push 0
push dword [0x4ab370]
call dword [sym.imp.MMFS2.dll_Ordinal_2]
mov ecx, eax
mov dword [0x4ab36c], ecx
cmp ecx, 0x20
ja 0x45d65b
xor eax, eax
mov dword [0x4ab36c], 0
cmp ecx, 1
setne al
lea eax, [eax*8 + 0xf]
test eax, eax
jle 0x45d63d
test byte [0x4ab51e], 1
je 0x45d63d
push ecx
mov ecx, dword [0x4ab380]
mov edx, eax
call fcn.00447d90
add esp, 4
pop edi
call fcn.00448280
call fcn.004094c0
mov ecx, dword [ebp - 4]
xor eax, eax
xor ecx, ebp
pop esi
call fcn.0046d741
mov esp, ebp
pop ebp
ret 0x10
push 4
push 0x42000000
push 0
push 0
xor edx, edx
mov ecx, esi
call fcn.00403240
mov edi, eax
add esp, 0x10
test edi, edi
je 0x45d63d
call dword [sym.imp.MMFS2.dll_Ordinal_794]
push dword [0x4a9d88]
mov ecx, eax
mov dword [0x4ab398], eax
push dword [0x4ab368]
call dword [sym.imp.MMFS2.dll_Ordinal_1053]
mov eax, dword [0x4ab3a4]
test eax, eax
je 0x45d6c9
mov eax, dword [eax + 0x3bc]
test eax, eax
je 0x45d6c9
test dword [eax], 0x40000000
je 0x45d6c9
test byte [0x4ab38c], 0x40
je 0x45d6c9
mov ecx, dword [0x4ab398]
push 1
call dword [sym.imp.MMFS2.dll_Ordinal_1128]
mov esi, dword [0x4ab368]
call dword [sym.imp.MMFS2.dll_Ordinal_795]
push dword [0x4a9d88]
mov ecx, eax
mov dword [0x4ab39c], eax
push esi
call dword [sym.imp.MMFS2.dll_Ordinal_1054]
cmp dword [0x4ab3a0], 0
jne 0x45d71a
mov ecx, dword [0x4ab39c]
test ecx, ecx
je 0x45d71a
push dword [0x4ab380]
call dword [sym.imp.MMFS2.dll_Ordinal_389]
mov dword [0x4ab3a0], eax
test eax, eax
je 0x45d71a
mov edx, dword [eax]
mov ecx, eax
push 0
call dword [edx + 4]
mov ecx, edi
call fcn.004067d0
test eax, eax
je 0x45d739
xor edx, edx
mov ecx, edi
call fcn.004069d0
test eax, eax
jne 0x45d725
mov ecx, edi
call fcn.00406c30
mov ecx, edi
call fcn.004056c0
jmp 0x45d63d