Function at 0x403af0
Capabilities:
Set current directory

Disassembly:
mov eax, dword [0x41f240]
sub esp, 0xc
test eax, eax
push edi
jne 0x403df3
mov eax, dword [0x41eff8]
mov edi, dword [0x41eff4]
test eax, eax
mov dword [esp + 8], 0
mov dword [esp + 4], edi
jbe 0x403df3
push ebx
push ebp
push esi
jmp 0x403b29
mov edi, dword [esp + 0x10]
mov ecx, dword [edi + 8]
mov eax, dword [esp + 0x24]
mov esi, ecx
shr esi, 0x1b
and esi, 1
je 0x403b3f
cmp eax, 1
jmp 0x403b42
cmp eax, 2
je 0x403dcd
mov eax, dword [esp + 0x20]
mov edx, ecx
and edx, 0x7000000
cmp edx, eax
jne 0x403dcd
cmp eax, 0x3000000
ja 0x403b98
je 0x403ba3
cmp eax, 0x1000000
je 0x403b73
cmp eax, 0x2000000
jne 0x403bb8
mov eax, dword [esp + 0x28]
test eax, eax
je 0x403b8e
mov eax, dword [0x41f244]
test eax, eax
je 0x403bb8
test ecx, ecx
js 0x403dcd
jmp 0x403bb8
test ecx, ecx
jns 0x403dcd
jmp 0x403bb8
cmp eax, 0x4000000
jne 0x403bb8
test esi, esi
jne 0x403bb8
mov eax, dword [esp + 0x28]
test eax, eax
je 0x403bb8
mov eax, dword [0x41f244]
test eax, eax
jne 0x403dcd
push edi
call fcn.00409010
add esp, 4
test esi, esi
je 0x403c25
mov eax, dword [0x41efbc]
push eax
call fcn.00401100
add esp, 4
test eax, eax
je 0x403dcd
mov ecx, dword [0x41efbc]
push 0x2e
push ecx
call fcn.00412e80
mov esi, eax
add esp, 8
test esi, esi
jne 0x403bf8
mov esi, dword [0x41a2c0]
mov edx, dword [0x41efb8]
mov eax, dword [0x41efbc]
push 0x104
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
mov ecx, dword [0x41efb8]
push esi
push ecx
call fcn.004026d0
add esp, 8
jmp 0x403dcd
mov edx, dword [0x41f238]
push edx
call fcn.00402150
mov eax, dword [0x41f238]
add esp, 4
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov ecx, dword [0x41f238]
push ecx
call fcn.00402110
push 8
push edi
call fcn.00403e00
mov esi, eax
add esp, 0xc
mov dword [esp + 0x18], esi
mov ebp, esi
cmp byte [esi], 0
je 0x403c87
push 0xffdc
push esi
push 0
call fcn.004080e0
lea edi, [eax + 1]
push edi
call fcn.00412fd0
mov ebp, eax
push edi
push esi
push ebp
call fcn.004080e0
add esp, 0x1c
mov edx, dword [0x41efbc]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
cmp ebx, 3
jle 0x403da4
lea edx, [edx + ebx - 4]
push str..msi
push edx
call fcn.00412c60
add esp, 8
test eax, eax
jne 0x403d9e
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [ecx + ebx + 7]
push eax
call fcn.00412fd0
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x403d9e
mov eax, str._i__
mov edx, ebx
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403ce8
mov edi, dword [0x41efbc]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov al, byte [ebp]
or ecx, 0xffffffff
test al, al
mov edi, ebx
jne 0x403d39
xor eax, eax
repne scasb al, byte es:[edi]
mov ax, word [0x41a5c4]
mov word [edi - 1], ax
jmp 0x403d76
xor eax, eax
repne scasb al, byte es:[edi]
mov cx, word [0x41a5c0]
dec edi
mov word [edi], cx
mov dl, byte [0x41a5c2]
or ecx, 0xffffffff
mov byte [edi + 2], dl
mov edi, ebp
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 8]
shr ecx, 0x1c
and ecx, 1
push ecx
push ebx
push str.msiexec
call fcn.00402c10
push ebx
call fcn.00413133
mov esi, dword [esp + 0x28]
add esp, 0x10
jmp 0x403dbc
mov edx, dword [0x41efbc]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 8]
shr ecx, 0x1c
and ecx, 1
push ecx
push ebp
push edx
call fcn.00402c10
add esp, 0xc
cmp ebp, esi
je 0x403dc9
push ebp
call fcn.00413133
add esp, 4
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push edi
inc edx
mov dword [esp + 0x18], edx
call fcn.00403ae0
mov dword [esp + 0x14], eax
mov eax, dword [0x41eff8]
add esp, 4
cmp edx, eax
jb 0x403b25
pop esi
pop ebp
pop ebx
pop edi
add esp, 0xc
ret