Function at 0x405e3c
Capabilities:
Contain obfuscated stackstrings
Get common file path
Move file
Set current directory

Disassembly:
mov eax, 0x5660a2
call fcn.00524444
mov eax, 0x23e4
call fcn.00524e70
push ebx
xor ebx, ebx
cmp dword [ebp + 8], ebx
push esi
push edi
je 0x406983
cmp dword [ebp + 0xc], ebx
je 0x406983
push 0x11
mov esi, 0x57b2e0
pop eax
mov dword [ebp - 0x98], esi
push 0xa
mov dword [ebp - 0x94], ebx
pop ecx
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], ebx
mov dword [ebp - 0x88], ebx
mov dword [ebp - 0x84], ebx
mov dword [ebp - 0x80], ecx
mov dword [ebp - 4], ebx
mov dword [ebp - 0xb4], esi
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xac], eax
mov dword [ebp - 0xa8], ebx
mov dword [ebp - 0xa4], ebx
mov dword [ebp - 0xa0], ebx
mov dword [ebp - 0x9c], ecx
lea eax, [ebp - 0x98]
push ebx
push eax
mov byte [ebp - 4], 1
call fcn.00406ad6
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0xb4]
push 1
push eax
call fcn.00406ad6
add esp, 0x10
mov dword [ebp - 0xc0], eax
call fcn.0055c7c5
mov eax, dword [eax + 4]
push ebx
mov edi, str.Version
push 0x5b8594
push edi
mov ecx, eax
call fcn.004449d0
mov dword [ebp - 0x28], eax
call fcn.0055c7c5
mov eax, dword [eax + 4]
push ebx
push 0x5bca14
push edi
mov ecx, eax
call fcn.004449d0
push 1
mov dword [ebp - 0x30], eax
pop eax
lea ecx, [ebp - 0x1a8]
push ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x40], ebx
call fcn.004f6ad5
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 2
cmp eax, ebx
je 0x405f55
cmp dword [ebp - 0x18], ebx
je 0x405f55
cmp eax, dword [ebp + 8]
jl 0x405f58
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp - 0x30]
cmp eax, ebx
je 0x405f6c
cmp dword [ebp - 0xc0], ebx
je 0x405f6c
cmp eax, dword [ebp + 0xc]
jl 0x405f6f
mov dword [ebp - 0x34], ebx
cmp dword [ebp - 0x14], ebx
jne 0x405f7f
cmp dword [ebp - 0x34], ebx
je 0x406039
jmp 0x405f89
mov dword [ebp - 0xcc], 1
cmp dword [ebp - 0x34], ebx
je 0x405f98
mov dword [ebp - 0xd0], 1
lea ecx, [ebp - 0x1a8]
call fcn.005453a7
push 1
pop ecx
cmp eax, ecx
je 0x406018
cmp dword [ebp - 0xc8], ebx
je 0x405fe2
call fcn.0055c7c5
push dword [ebp + 8]
mov eax, dword [eax + 4]
mov ecx, eax
push 0x5b8594
push edi
call fcn.00444a10
call fcn.0055c7c5
push dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, eax
push 0x5bca14
push edi
call fcn.00444a10
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 1
call fcn.00406994
mov dword [ebp - 0xb4], esi
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 3
call fcn.00407559
mov dword [ebp - 0x98], esi
mov dword [ebp - 4], 4
jmp 0x406978
cmp dword [ebp - 0xc8], ebx
je 0x406023
mov dword [ebp - 0x40], ecx
cmp dword [ebp - 0xcc], ebx
je 0x40602e
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0xd0], ebx
je 0x406039
mov dword [ebp - 0x34], ebx
lea eax, [ebp - 0x3e8]
push eax
push 0x208
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
test eax, eax
jne 0x406055
mov byte [ebp - 0x3e8], bl
mov eax, dword [0x622cb4]
cmp eax, ebx
je 0x40606b
cmp byte [eax], bl
je 0x40606b
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
jmp 0x40606d
xor eax, eax
cmp eax, ebx
je 0x40693a
mov eax, dword [0x61d784]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0xbc]
mov byte [ebp - 4], 7
push eax
call fcn.0053b194
cmp dword [ebp - 0x14], ebx
jne 0x406495
cmp dword [ebp - 0x18], ebx
je 0x406495
mov eax, dword [ebp + 8]
cmp dword [ebp - 0x28], eax
jge 0x406495
mov eax, dword [ebp - 0x8c]
neg eax
sbb eax, eax
cmp eax, ebx
mov dword [ebp - 0xb8], eax
je 0x40649a
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x98]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.0040722d
lea ecx, [ebp - 0x7c]
call fcn.00540041
cmp dword [ebp - 0xc4], ebx
mov byte [ebp - 4], 8
je 0x4062cc
push dword [ebp - 0x10]
lea ecx, [ebp - 0x1e0]
call fcn.0040207d
push ebx
lea ecx, [ebp - 0x1e0]
call fcn.004020bb
test eax, eax
je 0x4062cc
push dword [ebp - 0x10]
lea ecx, [ebp - 0x13ec]
call fcn.00404989
lea eax, [ebp - 0x3c]
lea ecx, [ebp - 0x13ec]
push eax
call fcn.00407720
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x60]
push str._m._d._y
push eax
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 9
call fcn.0053b22d
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x5c]
lea ecx, [ebp - 0x13ec]
push eax
mov byte [ebp - 4], 0xa
call fcn.00407702
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x64]
lea ecx, [ebp - 0x13ec]
push eax
mov byte [ebp - 4], 0xb
call fcn.00404a99
push dword [ebp - 0x28]
mov byte [ebp - 4], 0xc
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.0053ed7e
push str.Saved__
push eax
lea eax, [ebp - 0x58]
mov byte [ebp - 4], 0xd
push eax
call fcn.0053ede4
push dword [ebp - 0x48]
mov byte [ebp - 4], 0xe
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.0053ed7e
push 0x5b85c8
push eax
lea eax, [ebp - 0x50]
mov byte [ebp - 4], 0xf
push eax
call fcn.0053ede4
push dword [ebp - 0x24]
mov byte [ebp - 4], 0x10
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0053ed7e
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x19
call fcn.0053eb4f
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x18
call fcn.0053eb4f
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x58]
call fcn.0053eb4f
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0x16
call fcn.0053eb4f
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 0x15
call fcn.0053eb4f
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x14
call fcn.0053eb4f
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0x13
call fcn.0053eb4f
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x12
call fcn.0053eb4f
push 1
push dword [ebp - 0x18]
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x4062c0
lea eax, [ebp - 0x4c]
lea ecx, [ebp - 0x13ec]
push eax
call fcn.00407702
push str.menu
mov byte [ebp - 4], 0x1a
push dword [eax]
lea eax, [ebp - 0x44]
push 0x87f4
push eax
call fcn.00402f3e
add esp, 0x10
mov eax, dword [eax]
mov byte [ebp - 4], 0x1b
mov dword [ebp - 0x24], eax
call fcn.0055c7c5
mov eax, dword [eax + 4]
push ebx
push 4
mov ecx, eax
mov edx, dword [eax]
push dword [ebp - 0x24]
call dword [edx + 0x8c]
cmp eax, 7
lea ecx, [ebp - 0x44]
sete byte [ebp - 0x1d]
mov byte [ebp - 4], 0x1a
call fcn.0053eb4f
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0x12
call fcn.0053eb4f
cmp byte [ebp - 0x1d], bl
jne 0x4063af
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x18]
call fcn.0053eb4f
push ebx
push 0x1001
push dword [ebp - 0x10]
lea ecx, [ebp - 0x7c]
call fcn.005400b6
test eax, eax
jne 0x40636d
push dword [ebp - 0x10]
lea ecx, [ebp - 0x23f0]
call fcn.00404989
lea eax, [ebp - 0x14]
lea ecx, [ebp - 0x23f0]
push eax
call fcn.00407702
mov byte [ebp - 4], 0x1e
call fcn.00401e47
test eax, eax
je 0x40631c
call fcn.00401e47
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x28], eax
jmp 0x40631f
mov dword [ebp - 0x28], ebx
push str.menu
lea eax, [ebp - 0x54]
push dword [ebp - 0x14]
push 0x87ec
push eax
call fcn.00402f3e
mov eax, dword [eax]
add esp, 0x10
push 5
push ebx
push eax
push dword [ebp - 0x28]
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x24], eax
call fcn.0053eb4f
mov eax, dword [ebp - 0x24]
dec eax
dec eax
je 0x406422
dec eax
mov byte [ebp - 4], 8
dec eax
lea ecx, [ebp - 0x14]
jne 0x40638d
jmp 0x4062c7
push dword [ebp - 0x1c]
lea ecx, [ebp - 0x7c]
call fcn.00540229
lea ecx, [ebp - 0x7c]
call fcn.005403be
lea ecx, [ebp - 0x7c]
call fcn.005403e6
inc dword [ebp - 0x2c]
jmp 0x406392
call fcn.0053eb4f
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 7
call fcn.00540073
cmp dword [ebp - 0xb8], ebx
jne 0x4060c9
jmp 0x40649a
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 8
call fcn.0053eb4f
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 7
call fcn.00540073
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 6
call fcn.0053eb4f
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call fcn.0053eb4f
lea eax, [ebp - 0x3e8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 1
call fcn.00406994
mov dword [ebp - 0xb4], esi
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 0x1c
call fcn.00407559
mov dword [ebp - 0x98], esi
mov dword [ebp - 4], 0x1d
jmp 0x406978
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 8
call fcn.0053eb4f
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 7
call fcn.00540073
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 6
call fcn.0053eb4f
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call fcn.0053eb4f
lea eax, [ebp - 0x3e8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 1
call fcn.00406994
mov dword [ebp - 0xb4], esi
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 0x1f
call fcn.00407559
mov dword [ebp - 0x98], esi
mov dword [ebp - 4], 0x20
jmp 0x406978
cmp dword [ebp - 0x40], ebx
je 0x4064b2
call fcn.0055c7c5
push dword [ebp + 8]
mov eax, dword [eax + 4]
mov ecx, eax
push 0x5b8594
push edi
call fcn.00444a10
cmp dword [ebp - 0x34], ebx
jne 0x4068ae
cmp dword [ebp - 0xc0], ebx
je 0x4068ae
mov eax, dword [ebp + 0xc]
cmp dword [ebp - 0x30], eax
jge 0x4068ae
mov eax, dword [ebp - 0xa8]
neg eax
sbb eax, eax
cmp eax, ebx
mov dword [ebp - 0x30], eax
je 0x4068b3
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0xb4]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.0040722d
lea ecx, [ebp - 0x7c]
call fcn.00540041
cmp dword [ebp - 0xc4], ebx
mov byte [ebp - 4], 0x21
je 0x4066e8
push dword [ebp - 0x10]
lea ecx, [ebp - 0x1e0]
call fcn.0040207d
push ebx
lea ecx, [ebp - 0x1e0]
call fcn.004020bb
test eax, eax
je 0x4066e8
push dword [ebp - 0x10]
lea ecx, [ebp - 0x13ec]
call fcn.00404989
lea eax, [ebp - 0x38]
lea ecx, [ebp - 0x13ec]
push eax
call fcn.00407720
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x58]
push str._m._d._y
push eax
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 0x22
call fcn.0053b22d
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x68]
lea ecx, [ebp - 0x13ec]
push eax
mov byte [ebp - 4], 0x23
call fcn.00407702
mov dword [ebp + 8], eax
lea eax, [ebp - 0x64]
lea ecx, [ebp - 0x13ec]
push eax
mov byte [ebp - 4], 0x24
call fcn.00404a99
push dword [ebp + 8]
mov byte [ebp - 4], 0x25
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.0053ed7e
push str.Saved__
push eax
lea eax, [ebp - 0x60]
mov byte [ebp - 4], 0x26
push eax
call fcn.0053ede4
push dword [ebp - 0x54]
mov byte [ebp - 4], 0x27
push eax
lea eax, [ebp - 0x3c]
push eax
call fcn.0053ed7e
push 0x5b85c8
push eax
lea eax, [ebp - 0x44]
mov byte [ebp - 4], 0x28
push eax
call fcn.0053ede4
push dword [ebp - 0x4c]
mov byte [ebp - 4], 0x29
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0053ed7e
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], 0x32
call fcn.0053eb4f
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x31
call fcn.0053eb4f
mov byte [ebp - 4], 0x30
lea ecx, [ebp - 0x60]
call fcn.0053eb4f
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x2f
call fcn.0053eb4f
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 0x2e
call fcn.0053eb4f
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0x2d
call fcn.0053eb4f
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0x2c
call fcn.0053eb4f
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x2b
call fcn.0053eb4f
push 1
push dword [ebp - 0x18]
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x4066dc
lea eax, [ebp - 0x24]
lea ecx, [ebp - 0x13ec]
push eax
call fcn.00407702
push str.toolbar
mov byte [ebp - 4], 0x33
push dword [eax]
lea eax, [ebp - 0x50]
push 0x87f4
push eax
call fcn.00402f3e
add esp, 0x10
mov eax, dword [eax]
mov byte [ebp - 4], 0x34
mov dword [ebp + 8], eax
call fcn.0055c7c5
mov eax, dword [eax + 4]
push ebx
push 4
mov ecx, eax
mov edx, dword [eax]
push dword [ebp + 8]
call dword [edx + 0x8c]
cmp eax, 7
lea ecx, [ebp - 0x50]
sete byte [ebp + 0xb]
mov byte [ebp - 4], 0x33
call fcn.0053eb4f
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0x2b
call fcn.0053eb4f
cmp byte [ebp + 0xb], bl
jne 0x4067c8
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0x18]
call fcn.0053eb4f
push ebx
push 0x1001
push dword [ebp - 0x10]
lea ecx, [ebp - 0x7c]
call fcn.005400b6
test eax, eax
jne 0x406789
push dword [ebp - 0x10]
lea ecx, [ebp - 0x23f0]
call fcn.00404989
lea eax, [ebp - 0x14]
lea ecx, [ebp - 0x23f0]
push eax
call fcn.00407702
mov byte [ebp - 4], 0x37
call fcn.00401e47
test eax, eax
je 0x406738
call fcn.00401e47
mov eax, dword [eax + 0x1c]
mov dword [ebp + 8], eax
jmp 0x40673b
mov dword [ebp + 8], ebx
push str.toolbar
lea eax, [ebp - 0x48]
push dword [ebp - 0x14]
push 0x87ec
push eax
call fcn.00402f3e
mov eax, dword [eax]
add esp, 0x10
push 5
push ebx
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [ebp - 0x48]
mov dword [ebp + 8], eax
call fcn.0053eb4f
mov eax, dword [ebp + 8]
dec eax
dec eax
je 0x40683b
dec eax
mov byte [ebp - 4], 0x21
dec eax
lea ecx, [ebp - 0x14]
jne 0x4067a9
jmp 0x4066e3
push dword [ebp - 0x1c]
lea ecx, [ebp - 0x7c]
call fcn.00540229
lea ecx, [ebp - 0x7c]
call fcn.005403be
lea ecx, [ebp - 0x7c]
call fcn.005403e6
inc dword [ebp - 0x2c]
jmp 0x4067ae
call fcn.0053eb4f
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 7
call fcn.00540073
cmp dword [ebp - 0x30], ebx
jne 0x4064e8
jmp 0x4068b3
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0x21
call fcn.0053eb4f
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 7
call fcn.00540073
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 6
call fcn.0053eb4f
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call fcn.0053eb4f
lea eax, [ebp - 0x3e8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 1
call fcn.00406994
mov dword [ebp - 0xb4], esi
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 0x35
call fcn.00407559
mov dword [ebp - 0x98], esi
mov dword [ebp - 4], 0x36
jmp 0x406978
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x21
call fcn.0053eb4f
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 7
call fcn.00540073
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 6
call fcn.0053eb4f
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call fcn.0053eb4f
lea eax, [ebp - 0x3e8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 1
call fcn.00406994
mov dword [ebp - 0xb4], esi
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 0x38
call fcn.00407559
mov dword [ebp - 0x98], esi
mov dword [ebp - 4], 0x39
jmp 0x406978
cmp dword [ebp - 0x40], ebx
je 0x4068cb
call fcn.0055c7c5
push dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, eax
push 0x5bca14
push edi
call fcn.00444a10
xor eax, eax
cmp dword [ebp - 0x2c], ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 6
setg al
mov edi, eax
call fcn.0053eb4f
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call fcn.0053eb4f
lea eax, [ebp - 0x3e8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 1
call fcn.00406994
mov dword [ebp - 0xb4], esi
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 0x3a
call fcn.00407559
mov dword [ebp - 0x98], esi
lea ecx, [ebp - 0x98]
mov dword [ebp - 4], 0x3b
call fcn.00407559
mov eax, edi
jmp 0x406985
lea eax, [ebp - 0x3e8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 1
call fcn.00406994
mov dword [ebp - 0xb4], esi
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 0x3c
call fcn.00407559
mov dword [ebp - 0x98], esi
mov dword [ebp - 4], 0x3d
lea ecx, [ebp - 0x98]
call fcn.00407559
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret