Function at 0x4089b0
Capabilities:
Accept command line arguments
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x57f8ef
mov eax, dword fs:[0]
push eax
sub esp, 0x260
mov eax, dword [0x6531f0]
xor eax, esp
mov dword [esp + 0x258], eax
push ebx
push esi
push edi
mov eax, dword [0x6531f0]
xor eax, esp
push eax
lea eax, [esp + 0x270]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, edx
cmp dword [edi + 0x18], 8
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov byte [esp + 0x17], 0
lea ebx, [edi + 4]
jb 0x408a0f
mov eax, dword [ebx]
jmp 0x408a11
mov eax, ebx
push 0x104
push eax
lea edx, [esp + 0x64]
push edx
call fcn.004fe366
mov esi, dword [sym.imp.USER32.dll_CharLowerW]
add esp, 0xc
lea ecx, [esp + 0x5c]
xor eax, eax
push ecx
mov word [esp + 0x266], ax
call esi
push 0xb
lea edx, [esp + 0x60]
push str._systemroot
push edx
call fcn.004fe905
add esp, 0xc
test eax, eax
jne 0x408bc7
push 0x104
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
xor ebx, ebx
cmp eax, ebx
je 0x408f7d
lea edx, [esp + 0x5c]
xor ecx, ecx
push edx
mov word [esp + 0x266], cx
call esi
mov eax, dword [edi + 0x14]
lea ecx, [eax - 0xb]
lea eax, [esp + 0x40]
push eax
push edi
lea edx, [ebx + 0xb]
call fcn.0040c900
mov dword [esp + 0x278], ebx
mov edi, 8
cmp dword [eax + 0x18], edi
jb 0x408aac
mov eax, dword [eax + 4]
jmp 0x408aaf
add eax, 4
push eax
lea ecx, [esp + 0x60]
push 0x104
push ecx
call fcn.004fe888
or esi, 0xffffffff
add esp, 0xc
mov dword [esp + 0x278], esi
cmp dword [esp + 0x58], edi
jb 0x408adf
mov edx, dword [esp + 0x44]
push edx
call fcn.004fdb3f
add esp, 4
xor eax, eax
lea ecx, [esp + 0x5c]
mov dword [esp + 0x58], 7
mov dword [esp + 0x54], ebx
mov word [esp + 0x44], ax
call fcn.00406880
test al, al
je 0x408f7d
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x60]
call fcn.004026a0
mov dword [esp + 0x278], 1
lea edi, [esp + 0x18]
call fcn.0040cc50
lea edx, [esp + 0x1c]
push edx
call fcn.00407560
mov byte [esp + 0x278], 2
mov eax, edi
lea edi, [esp + 0x1c]
call fcn.0040e9d0
push 0x10
call fcn.004fdddd
add esp, 4
cmp eax, ebx
je 0x408b5d
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
jmp 0x408b5f
xor eax, eax
mov ecx, dword [esp + 0x28]
push ecx
push eax
mov dword [esp + 0x28], eax
call fcn.00412f40
sub esp, 8
mov edx, esp
mov dword [esp + 0x34], esp
push edx
lea edi, [esp + 0x28]
call fcn.00468180
mov byte [esp + 0x280], 3
mov byte [esp + 0x280], 2
mov ebx, dword [esp + 0x2c]
call fcn.0040bcb0
mov al, 1
add esp, 8
mov byte [esp + 0x17], al
mov byte [esp + 0x278], al
mov eax, edi
push eax
call fcn.00464110
mov dword [esp + 0x278], esi
lea ecx, [esp + 0x18]
call fcn.00402750
jmp 0x408f7d
push 8
lea ecx, [esp + 0x60]
push str.system32
push ecx
call fcn.004fe905
add esp, 0xc
test eax, eax
jne 0x408d12
push 0x104
lea edx, [esp + 0x60]
push edx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x408f7d
lea ecx, [esp + 0x5c]
xor eax, eax
push ecx
mov word [esp + 0x266], ax
call esi
push 0x63132c
lea edx, [esp + 0x60]
push 0x104
push edx
call fcn.004fe888
add esp, 0xc
cmp dword [edi + 0x18], 8
jb 0x408c2b
mov ebx, dword [ebx]
push ebx
lea eax, [esp + 0x60]
push 0x104
push eax
call fcn.004fe888
add esp, 0xc
lea ecx, [esp + 0x5c]
call fcn.00406880
test al, al
je 0x408f7d
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x60]
call fcn.004026a0
mov dword [esp + 0x278], 4
lea edx, [esp + 0x1c]
push edx
call fcn.00407560
mov bl, 5
mov byte [esp + 0x278], bl
lea eax, [esp + 0x18]
lea edi, [esp + 0x1c]
call fcn.0040e9d0
push 0x10
call fcn.004fdddd
xor ecx, ecx
add esp, 4
cmp eax, ecx
je 0x408ca5
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
jmp 0x408ca7
xor eax, eax
mov ecx, dword [esp + 0x28]
push ecx
push eax
mov dword [esp + 0x28], eax
call fcn.00412f40
sub esp, 8
mov edx, esp
mov dword [esp + 0x34], esp
push edx
lea edi, [esp + 0x28]
call fcn.00468180
mov byte [esp + 0x280], 6
mov byte [esp + 0x280], bl
mov ebx, dword [esp + 0x2c]
call fcn.0040bcb0
add esp, 8
mov byte [esp + 0x17], 1
mov byte [esp + 0x278], 4
mov eax, edi
push eax
call fcn.00464110
mov dword [esp + 0x278], 0xffffffff
lea ecx, [esp + 0x18]
call fcn.00402750
jmp 0x408f7d
push 0x13
xor esi, esi
push esi
lea ecx, [esp + 0x64]
push ecx
call dword [sym.imp.SHELL32.dll_PathResolve]
test eax, eax
je 0x408e17
push 0x104
lea edx, [esp + 0x60]
push edx
mov eax, edx
push eax
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
je 0x408f7d
lea ecx, [esp + 0x5c]
call fcn.00406880
test al, al
je 0x408f7d
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x60]
call fcn.004026a0
mov dword [esp + 0x278], 7
lea edx, [esp + 0x1c]
push edx
call fcn.00407560
mov byte [esp + 0x278], 8
lea eax, [esp + 0x18]
lea edi, [esp + 0x1c]
call fcn.0040e9d0
push 0x10
call fcn.004fdddd
add esp, 4
cmp eax, esi
je 0x408da9
mov dword [eax], esi
mov dword [eax + 4], esi
mov dword [eax + 8], esi
mov dword [eax + 0xc], esi
jmp 0x408dab
xor eax, eax
mov ecx, dword [esp + 0x28]
push ecx
push eax
mov dword [esp + 0x28], eax
call fcn.00412f40
sub esp, 8
mov edx, esp
mov dword [esp + 0x34], esp
push edx
lea edi, [esp + 0x28]
call fcn.00468180
mov byte [esp + 0x280], 9
mov byte [esp + 0x280], 8
mov ebx, dword [esp + 0x2c]
call fcn.0040bcb0
add esp, 8
mov byte [esp + 0x17], 1
mov byte [esp + 0x278], 7
mov eax, edi
push eax
call fcn.00464110
mov dword [esp + 0x278], 0xffffffff
lea ecx, [esp + 0x18]
call fcn.00402750
jmp 0x408f7d
cmp dword [edi + 0x18], 8
jb 0x408e1f
mov ebx, dword [ebx]
lea ecx, [esp + 0x30]
push ecx
push ebx
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov ebx, eax
mov dword [esp + 0x2c], ebx
cmp ebx, esi
je 0x408f7d
xor edi, edi
cmp dword [esp + 0x30], esi
mov dword [esp + 0x34], edi
jle 0x408f7d
lea esp, [esp]
mov edx, dword [ebx + edi*4]
push 0x104
push edx
lea eax, [esp + 0x64]
push eax
call fcn.004fe366
add esp, 0xc
push 0x13
push esi
lea ecx, [esp + 0x64]
push ecx
call dword [sym.imp.SHELL32.dll_PathResolve]
test eax, eax
je 0x408f6e
push 0x104
lea edx, [esp + 0x60]
push edx
mov eax, edx
push eax
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
je 0x408f6e
lea ecx, [esp + 0x5c]
call fcn.00406880
test al, al
je 0x408f6e
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x60]
call fcn.004026a0
mov dword [esp + 0x278], 0xa
lea edx, [esp + 0x38]
push edx
call fcn.00407560
mov byte [esp + 0x278], 0xb
lea eax, [esp + 0x18]
lea edi, [esp + 0x38]
call fcn.0040e9d0
push 0x10
call fcn.004fdddd
add esp, 4
cmp eax, esi
je 0x408efb
mov dword [eax], esi
mov dword [eax + 4], esi
mov dword [eax + 8], esi
mov dword [eax + 0xc], esi
jmp 0x408efd
xor eax, eax
mov ecx, dword [esp + 0x28]
push ecx
push eax
mov dword [esp + 0x44], eax
call fcn.00412f40
sub esp, 8
mov edx, esp
mov dword [esp + 0x24], esp
push edx
lea edi, [esp + 0x44]
call fcn.00468180
mov byte [esp + 0x280], 0xc
mov byte [esp + 0x280], 0xb
mov ebx, dword [esp + 0x2c]
call fcn.0040bcb0
add esp, 8
mov byte [esp + 0x17], 1
mov byte [esp + 0x278], 0xa
mov eax, edi
push eax
call fcn.00464110
mov dword [esp + 0x278], 0xffffffff
lea ecx, [esp + 0x18]
call fcn.00402750
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
xor esi, esi
inc edi
cmp edi, dword [esp + 0x30]
mov dword [esp + 0x34], edi
jl 0x408e50
mov al, byte [esp + 0x17]
mov ecx, dword [esp + 0x270]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x258]
xor ecx, esp
call fcn.004fdb4a
mov esp, ebp
pop ebp
ret