Function at 0x44f7d1
Capabilities:
Check os version
Get common file path
Set current directory

Disassembly:
push ebp
sub esp, 0x31c
lea ebp, [esp - 4]
mov eax, dword [0x49b390]
xor eax, ebp
mov dword [ebp + 0x31c], eax
push 0x38
mov eax, 0x47dbb9
call fcn.004642f2
mov ebx, ecx
push 7
xor edi, edi
pop eax
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x14], edi
mov dword [ebp - 0x28], ebx
mov word [ebx + 4], di
mov dword [ebp - 4], edi
mov dword [ebx + 0x34], eax
mov dword [ebx + 0x30], edi
mov word [ebx + 0x20], di
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x4c], edi
mov word [ebx + 0x3c], di
lea ecx, [ebx + 0x54]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov dword [ebp - 0x20], ecx
mov word [ecx + 4], di
lea ecx, [ebx + 0x70]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov dword [ebp - 0x24], ecx
mov word [ecx + 4], di
lea ecx, [ebx + 0x8c]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0xac]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0xc8]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0xe4]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0x124]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0x140]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0x15c]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0x178]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0x194]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0x1b0]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
lea ecx, [ebx + 0x1cc]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], edi
mov word [ecx + 4], di
push 0x103
lea eax, [ebp + 0x114]
push eax
mov byte [ebp - 4], 0xf
push edi
mov dword [ebx + 0xa8], edi
mov word [ebp + 0x31a], di
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp + 0x114]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.004045f7
push 0x5c
lea esi, [ebp - 0x1c]
mov byte [ebp - 4], 0x10
call fcn.00404634
mov dword [ebp - 0x18], eax
push 0x486cac
lea eax, [ebp - 0x14]
push eax
call fcn.004045f7
cmp dword [ebp - 0x18], 0xffffffff
mov byte [ebp - 4], 0x11
je 0x44f9b1
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x10]
push eax
xor edx, edx
mov eax, esi
call fcn.0040490a
mov byte [ebp - 4], 0x12
mov eax, dword [eax]
mov esi, ebx
call fcn.00404988
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
call fcn.00401144
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax - 0xc]
mov eax, dword [ebp - 0x18]
sub ecx, eax
lea edx, [eax + 1]
lea eax, [ebp - 0x10]
push eax
dec ecx
lea eax, [ebp - 0x1c]
call fcn.0040490a
lea edi, [ebp - 0x14]
mov byte [ebp - 4], 0x13
call fcn.004018be
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
call fcn.00401144
xor edi, edi
mov eax, dword [ebp - 0x14]
cmp dword [eax - 0xc], edi
jle 0x44fa8f
push 0x5f
push eax
call fcn.0045d66f
cmp eax, edi
pop ecx
pop ecx
je 0x44fa8f
mov edx, dword [ebp - 0x14]
sub eax, edx
sar eax, 1
cmp eax, 0xffffffff
mov dword [ebp - 0x10], eax
je 0x44fa8f
mov esi, dword [edx - 0xc]
lea ecx, [eax + 1]
cmp ecx, esi
mov dword [ebp - 0x18], ecx
jge 0x44fa8f
jmp 0x44f9f8
mov edx, dword [ebp - 0x14]
cmp ecx, edi
jl 0x44fa55
cmp ecx, esi
jg 0x44fa55
movzx eax, word [edx + ecx*2]
movzx edx, ax
cmp dx, 0x30
jb 0x44fa1a
cmp ecx, esi
jg 0x44fa55
movzx edx, ax
cmp dx, 0x39
jbe 0x44fa4e
cmp ecx, esi
jg 0x44fa55
movzx edx, ax
cmp dx, 0x41
jb 0x44fa34
cmp ecx, esi
jg 0x44fa55
movzx edx, ax
cmp dx, 0x5a
jbe 0x44fa4e
cmp ecx, esi
jg 0x44fa55
movzx edx, ax
cmp dx, 0x61
jb 0x44fa5f
cmp ecx, esi
jg 0x44fa55
movzx eax, ax
cmp ax, 0x7a
ja 0x44fa5f
inc ecx
cmp ecx, esi
jl 0x44f9f5
jmp 0x44fa8f
push 0x80070057
call fcn.00401000
sub ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
lea eax, [ebp - 0x10]
push eax
dec ecx
lea eax, [ebp - 0x14]
call fcn.0040490a
mov byte [ebp - 4], 0x14
mov eax, dword [eax]
lea esi, [ebx + 0x1c]
call fcn.00404988
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
call fcn.00401144
cmp dword [ebx + 0x18], 8
jb 0x44fa9a
mov eax, dword [ebx + 4]
jmp 0x44fa9d
lea eax, [ebx + 4]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov esi, 0x114
push esi
lea eax, [ebp]
push edi
push eax
mov byte [ebx + 0x100], 1
mov byte [ebx + 0x101], 0
mov byte [ebx + 0x102], 0
mov byte [ebx + 0x103], 0
call fcn.0045c910
add esp, 0xc
lea eax, [ebp]
push eax
mov dword [ebp], esi
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
push 1
push 0x23
lea eax, [ebp + 0x114]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov esi, dword [ebp - 0x24]
lea eax, [ebp + 0x114]
call fcn.00404988
lea eax, [ebp + 0x114]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea eax, [ebp + 0x114]
lea esi, [ebx + 0x8c]
call fcn.00404988
mov eax, dword [ebx + 0xa0]
lea edi, [eax - 1]
lea esi, [ebx + 0x8c]
mov eax, esi
call fcn.0040b056
cmp word [eax], 0x5c
je 0x44fb4a
push 0x485248
push esi
call fcn.00405073
mov eax, dword [ebp + 8]
mov dword [ebx + 0x10c], eax
mov eax, dword [ebp + 4]
cmp eax, 6
mov dword [ebx + 0x108], eax
jb 0x44fc22
push 1
push 0x1a
lea eax, [ebp + 0x114]
push eax
push 0
mov byte [ebx + 0x102], 1
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov esi, dword [ebp - 0x20]
lea eax, [ebp + 0x114]
call fcn.00404988
mov esi, str.Roaming
push esi
call fcn.0045c7b8
pop ecx
push eax
mov eax, dword [ebp - 0x20]
push esi
call fcn.0045010b
cmp eax, 0xffffffff
je 0x44fbe0
push eax
push dword [ebp - 0x20]
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040b076
push 0xffffffffffffffff
push dword [ebp - 0x20]
mov byte [ebp - 4], 0x15
call fcn.00404c2a
push ebx
push 1
mov byte [ebp - 4], 0x11
call fcn.004049f4
push str.LocalLow
push dword [ebp - 0x20]
call fcn.00405073
mov ebx, dword [ebp - 0x28]
mov esi, str.Application_Data
push esi
call fcn.0045c7b8
pop ecx
push eax
mov eax, dword [ebp - 0x24]
push esi
call fcn.0045010b
cmp eax, 0xffffffff
je 0x44fc22
push eax
push dword [ebp - 0x24]
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040b076
push 0xffffffffffffffff
push dword [ebp - 0x24]
mov byte [ebp - 4], 0x16
call fcn.00404c2a
push ebx
push 1
call fcn.004049f4
mov ebx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
mov dword [ebx + 0x120], 0x11800
call fcn.00401144
mov eax, dword [ebp - 0x1c]
add eax, 0xfffffff0
call fcn.00401144
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x31c]
xor ecx, ebp
call fcn.0045c28f
add ebp, 0x320
leave
ret