Function at 0x403b20
Capabilities:
Set current directory

Disassembly:
mov eax, dword [0x41f358]
sub esp, 0xc
test eax, eax
push edi
jne 0x403e23
mov eax, dword [0x41f110]
mov edi, dword [0x41f10c]
test eax, eax
mov dword [esp + 8], 0
mov dword [esp + 4], edi
jbe 0x403e23
push ebx
push ebp
push esi
jmp 0x403b59
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 0x403b6f
cmp eax, 1
jmp 0x403b72
cmp eax, 2
je 0x403dfd
mov eax, dword [esp + 0x20]
mov edx, ecx
and edx, 0x7000000
cmp edx, eax
jne 0x403dfd
cmp eax, 0x3000000
ja 0x403bc8
je 0x403bd3
cmp eax, 0x1000000
je 0x403ba3
cmp eax, 0x2000000
jne 0x403be8
mov eax, dword [esp + 0x28]
test eax, eax
je 0x403bbe
mov eax, dword [0x41f35c]
test eax, eax
je 0x403be8
test ecx, ecx
js 0x403dfd
jmp 0x403be8
test ecx, ecx
jns 0x403dfd
jmp 0x403be8
cmp eax, 0x4000000
jne 0x403be8
test esi, esi
jne 0x403be8
mov eax, dword [esp + 0x28]
test eax, eax
je 0x403be8
mov eax, dword [0x41f35c]
test eax, eax
jne 0x403dfd
push edi
call fcn.004092d0
add esp, 4
test esi, esi
je 0x403c55
mov eax, dword [0x41f0d0]
push eax
call fcn.00401100
add esp, 4
test eax, eax
je 0x403dfd
mov ecx, dword [0x41f0d0]
push 0x2e
push ecx
call fcn.004131d0
mov esi, eax
add esp, 8
test esi, esi
jne 0x403c28
mov esi, dword [0x41a390]
mov edx, dword [0x41f0cc]
mov eax, dword [0x41f0d0]
push 0x104
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
mov ecx, dword [0x41f0cc]
push esi
push ecx
call fcn.004026d0
add esp, 8
jmp 0x403dfd
mov edx, dword [0x41f350]
push edx
call fcn.00402150
mov eax, dword [0x41f350]
add esp, 4
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov ecx, dword [0x41f350]
push ecx
call fcn.00402110
push 8
push edi
call fcn.00403e30
mov esi, eax
add esp, 0xc
mov dword [esp + 0x18], esi
mov ebp, esi
cmp byte [esi], 0
je 0x403cb7
push 0xffdc
push esi
push 0
call fcn.00408290
lea edi, [eax + 1]
push edi
call fcn.00413320
mov ebp, eax
push edi
push esi
push ebp
call fcn.00408290
add esp, 0x1c
mov edx, dword [0x41f0d0]
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 0x403dd4
lea edx, [edx + ebx - 4]
push str..msi
push edx
call fcn.00412fb0
add esp, 8
test eax, eax
jne 0x403dce
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.00413320
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x403dce
mov eax, 0x41a698
mov edx, ebx
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403d18
mov edi, dword [0x41f0d0]
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 0x403d69
xor eax, eax
repne scasb al, byte es:[edi]
mov ax, word [0x41a694]
mov word [edi - 1], ax
jmp 0x403da6
xor eax, eax
repne scasb al, byte es:[edi]
mov cx, word [0x41a690]
dec edi
mov word [edi], cx
mov dl, byte [0x41a692]
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.00402c40
push ebx
call fcn.00413483
mov esi, dword [esp + 0x28]
add esp, 0x10
jmp 0x403dec
mov edx, dword [0x41f0d0]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 8]
shr ecx, 0x1c
and ecx, 1
push ecx
push ebp
push edx
call fcn.00402c40
add esp, 0xc
cmp ebp, esi
je 0x403df9
push ebp
call fcn.00413483
add esp, 4
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push edi
inc edx
mov dword [esp + 0x18], edx
call fcn.00403b10
mov dword [esp + 0x14], eax
mov eax, dword [0x41f110]
add esp, 4
cmp edx, eax
jb 0x403b55
pop esi
pop ebp
pop ebx
pop edi
add esp, 0xc
ret