Function at 0x415ef0
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [ebp + 0xc]
sub esp, 0x92c
push ebx
mov ebx, ecx
mov ecx, dword [ebp + 8]
push esi
push edi
mov dword [ebx + 0xa88], ecx
test eax, eax
je 0x415f1c
cmp word [eax], 0
mov byte [esp + 0x13], 1
je 0x415f21
mov byte [esp + 0x13], 0
test eax, eax
je 0x415f2f
cmp word [eax], 0
jne 0x416170
cmp byte [0x4d563e], 0
jne 0x416129
cmp byte [ebx + 0xacc], 0
je 0x416129
mov esi, dword [0x4d166c]
mov eax, dword [ebp + 0x10]
mov dword [0x4d5ea8], eax
cmp byte [esi + 0x17], 0
jne 0x415f60
mov esi, dword [esi + 0xc]
test byte [esi + 0x15], 8
je 0x415f6d
mov ecx, esi
call fcn.00401b40
mov al, byte [esi + 0x17]
cmp al, 1
jne 0x415f85
test byte [esi + 0x15], 4
je 0x415f80
push esi
call fcn.0042db20
mov ecx, dword [esi + 8]
jmp 0x415fd3
cmp al, 2
jne 0x415fce
mov ecx, dword [0x4d3e90]
test ecx, ecx
jne 0x415fd3
mov esi, dword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
push 0xd
call esi
test eax, eax
jne 0x415fb6
push 0xf
call esi
test eax, eax
mov ecx, 0x4ac220
mov edx, 0x4ac22c
cmove ecx, edx
jmp 0x415fd3
push 0
call fcn.004053d0
cmp eax, 0xffffffff
mov ecx, 0x4ac22c
cmovne ecx, dword [0x4d3e8c]
jmp 0x415fd3
mov ecx, 0x4d3e58
push 0x7f
push ecx
lea eax, [esp + 0x40]
push eax
call fcn.00497e59
inc dword [0x4d1670]
xor eax, eax
mov word [esp + 0x142], ax
add esp, 0xc
mov eax, dword [0x4ce8c8]
mov ecx, 0x44
add eax, 0x110
mov esi, 0x4d1340
mov edi, eax
mov dword [0x4ce8c8], eax
rep movsd dword es:[edi], dword [esi]
push 0
mov ecx, 0x4d3ee0
mov dword [eax + 0x2c], 0
call fcn.00415dc0
cmp dword [0x4d1680], 0
xorps xmm0, xmm0
movlpd qword [0x4d49b0], xmm0
je 0x416042
push 0x4d1460
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov ecx, dword [ebx + 0xa7c]
mov eax, 1
mov esi, dword [0x4ce8c0]
mov dword [0x4ce8c0], 0
mov byte [0x4d563e], 1
mov dword [esp + 0x14], eax
mov byte [0x4d0250], 0
test ecx, ecx
je 0x416092
call fcn.00401cd0
test eax, eax
mov eax, dword [esp + 0x14]
je 0x416092
xor ecx, ecx
movzx eax, al
cmp byte [0x4d0250], cl
cmove eax, ecx
mov dword [esp + 0x14], eax
mov byte [0x4d0250], 1
test al, al
je 0x4160f3
mov dword [esp + 0x20], 0
call fcn.00443370
mov dword [esp + 0x18], eax
lea ecx, [ebx + 0xa58]
mov eax, dword [0x4d5ea8]
cdq
mov dword [esp + 0x28], eax
xor eax, eax
cmp dword [ebx + 0xa7c], eax
mov dword [esp + 0x30], 1
sete al
mov dword [esp + 0x2c], edx
push eax
push 2
lea eax, [esp + 0x20]
push eax
call fcn.0046e590
mov edx, dword [esp + 0x14]
movzx ecx, dl
xor edx, edx
cmp eax, 3
cmove ecx, edx
mov al, cl
mov byte [0x4d563e], 0
test al, al
jne 0x4161b4
cmp byte [esp + 0x13], al
jne 0x4161b4
lea ecx, [esp + 0x38]
call fcn.004048b0
mov dword [0x4ce8c0], esi
mov eax, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp byte [0x4d0250], 0
jne 0x416165
cmp ecx, 9
jne 0x416165
mov eax, dword [0x4d3df0]
mov ecx, dword [0x4d5ea8]
pop edi
pop esi
cmp word [eax], 0
mov eax, 8
mov byte [0x4d0250], 1
cmovne ecx, dword [ebp + 0x10]
mov dword [0x4d5ea8], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push dword [ebp + 0x10]
push ecx
mov ecx, ebx
call fcn.004161c0
push eax
push str.Critical_Error:__s_n_nThe_program_will_exit.
lea eax, [esp + 0x140]
push 0x400
push eax
call fcn.00472ce0
add esp, 0x10
lea eax, [esp + 0x138]
push 0x10000
push dword [0x4d4994]
push eax
push dword [0x4d1684]
call dword [sym.imp.USER32.dll_MessageBoxW]
push 2
push ecx
mov ecx, ebx
call fcn.004161c0
push dword [ebp + 0x10]
push ecx
mov ecx, ebx
call fcn.004161c0
int3