Function at 0x46e3f0
Capabilities:
Create thread
Get file attributes
Terminate thread

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov esi, ecx
push eax
call dword [sym.imp.SHELL32.dll_ILClone]
mov dword [esi + 0x3258], eax
mov eax, dword [esi + 0x5fc]
add eax, 4
push 0x3eb
mov ecx, dword [eax]
push ecx
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ebx, dword [sym.imp.USER32.dll_SetWindowTextW]
mov edi, eax
push 0x4e3a28
push edi
call ebx
mov eax, dword [esi + 0x3258]
lea edx, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x1c]
call fcn.004acdc0
mov ecx, eax
call fcn.004ad580
lea ecx, [esp + 0x14]
call fcn.004acdf0
mov ecx, dword [esp + 0x24]
push ecx
push edi
call ebx
mov edx, dword [esp + 0x24]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
test al, 0x10
je 0x46e580
mov eax, dword [0x4d9540]
mov ecx, str.Last_Path
test ecx, ecx
mov dword [esp + 0x14], eax
je 0x46e4bd
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
test edi, edi
je 0x46e4bd
push edi
lea ecx, [esp + 0x18]
call fcn.004012f0
test eax, eax
je 0x46e4bd
mov edx, dword [esp + 0x14]
inc edi
push edi
push str.Last_Path
push edx
call fcn.004011c0
add esp, 0xc
lea ecx, [esp + 0x14]
push 0xffffffffffffffff
call fcn.00401970
mov eax, dword [0x4d9540]
mov ecx, 0x4d9dd0
test ecx, ecx
mov dword [esp + 0x10], eax
je 0x46e509
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
test edi, edi
je 0x46e509
push edi
lea ecx, [esp + 0x14]
call fcn.004012f0
test eax, eax
je 0x46e509
mov edx, dword [esp + 0x10]
inc edi
push edi
push 0x4d9dd0
push edx
call fcn.004011c0
add esp, 0xc
lea ecx, [esp + 0x10]
push 0xffffffffffffffff
call fcn.00401970
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push 0
push eax
push ecx
push edx
call fcn.00480f80
mov eax, dword [esp + 0x20]
mov edx, dword [0x4d9544]
add esp, 0x10
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46e551
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x46e551
mov edx, dword [esp + 0x10]
add edx, 0xfffffff4
push edx
call fcn.004c5432
add esp, 4
mov eax, dword [esp + 0x14]
mov edx, dword [0x4d9544]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46e580
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x46e580
mov edx, dword [esp + 0x14]
add edx, 0xfffffff4
push edx
call fcn.004c5432
add esp, 4
push 1
push 1
call fcn.00447900
add esp, 8
mov ecx, esi
call fcn.00477650
push 1
push 0
call fcn.00447900
mov eax, dword [esi + 0xa4]
add esp, 8
cmp eax, 3
jne 0x46e5f6
mov eax, dword [esp + 0x24]
cmp dword [eax - 8], 2
jge 0x46e5f6
mov ecx, esi
call fcn.004773e0
mov eax, dword [esp + 0x24]
mov edx, dword [0x4d9544]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46e5ea
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x46e5ea
mov edx, dword [esp + 0x24]
add edx, 0xfffffff4
push edx
call fcn.004c5432
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
mov ecx, esi
call fcn.00478af0
mov eax, dword [esp + 0x24]
push 0x5c
push eax
call fcn.004c609a
mov ecx, dword [esp + 0x2c]
add esp, 8
test eax, eax
je 0x46e680
sub eax, ecx
sar eax, 1
cmp eax, 0xffffffff
je 0x46e680
mov edi, dword [ecx - 8]
lea edx, [edi - 1]
cmp eax, edx
jne 0x46e680
test eax, eax
mov ebp, 1
mov ebx, eax
jge 0x46e634
xor ebx, ebx
cmp ebx, edi
jge 0x46e680
lea eax, [ebx + 1]
cmp eax, edi
jle 0x46e643
mov ebp, edi
sub ebp, ebx
lea ecx, [esp + 0x24]
call fcn.00401380
lea eax, [ebx + ebp]
mov ecx, eax
neg ecx
shl ecx, 0x1f
sub ecx, eax
add ecx, edi
lea edx, [ecx + ecx + 2]
mov ecx, dword [esp + 0x24]
push edx
lea eax, [ecx + eax*2]
lea ecx, [ecx + ebx*2]
push eax
push ecx
call fcn.004c5570
mov edx, dword [esp + 0x30]
add esp, 0xc
sub edi, ebp
mov dword [edx - 8], edi
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx - 0xc]
mov ebp, dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
push ecx
test eax, eax
mov edi, esp
jl 0x46e69e
mov dword [edi], ecx
mov eax, dword [esp + 0x28]
add eax, 0xfffffff4
push eax
call ebp
jmp 0x46e6c0
mov ecx, dword [0x4d9540]
mov dword [edi], ecx
mov eax, dword [esp + 0x28]
test eax, eax
mov ebx, eax
je 0x46e6b7
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push ebx
push eax
mov ecx, edi
call fcn.00401630
mov ecx, esi
call fcn.00479370
mov ecx, dword [esp + 0x24]
lea edi, [esi + 0x630]
cdq
mov dword [esi + 0xa8], eax
mov dword [esi + 0xac], edx
mov eax, dword [edi]
cmp eax, ecx
je 0x46e724
mov edx, dword [eax - 0xc]
test edx, edx
jge 0x46e6f8
mov edx, dword [0x4d9544]
add eax, 0xfffffff4
cmp eax, edx
jne 0x46e6ff
mov eax, dword [ecx - 0xc]
test eax, eax
jge 0x46e70d
mov edx, dword [ecx - 8]
push ecx
push edx
mov ecx, edi
call fcn.00401630
jmp 0x46e720
mov ecx, edi
call fcn.0040e950
mov eax, dword [esp + 0x24]
mov dword [edi], eax
add eax, 0xfffffff4
push eax
call ebp
mov ecx, dword [esp + 0x24]
mov eax, dword [0x4d9540]
mov edx, 0x4d9c5c
test edx, edx
mov dword [esp + 0x14], eax
jne 0x46e73a
xor eax, eax
jmp 0x46e749
push 0x4d9c5c
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, dword [esp + 0x24]
push 0x4d9c5c
push eax
mov eax, dword [ecx - 8]
push ecx
push eax
lea ecx, [esp + 0x24]
call fcn.004017b0
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x20]
call fcn.00401200
lea ecx, [esp + 0x14]
call fcn.004014c0
mov edx, dword [esi + 0x3258]
mov eax, dword [esi + 0xb4]
push 0
push edx
push eax
call fcn.004624d0
mov ecx, dword [esi + 0x3258]
add esp, 0xc
push 0
push 0
push ecx
mov ecx, dword [esi + 0xb0]
call fcn.004b2fa0
mov eax, dword [esi + 0x63c]
mov dword [esi + 0x670], 1
test eax, eax
je 0x46e7ea
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
xor ebx, ebx
push 0xa
call edi
mov eax, dword [esi + 0x63c]
test eax, eax
je 0x46e7ea
inc ebx
cmp ebx, 0xa
jl 0x46e7be
mov edx, eax
push 0xface
push edx
call dword [sym.imp.KERNEL32.dll_TerminateThread]
mov dword [esi + 0x63c], 0
lea ebx, [esi + 0x640]
push ecx
mov edi, esp
mov ecx, 0x4e3a5c
mov dword [ebx], 0
mov eax, dword [0x4d9540]
test ecx, ecx
mov dword [edi], eax
je 0x46e83d
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebp, eax
test ebp, ebp
je 0x46e83d
push ebp
mov ecx, edi
call fcn.004012f0
test eax, eax
je 0x46e83d
mov edx, dword [edi]
inc ebp
push ebp
push 0x4e3a5c
push edx
call fcn.004011c0
add esp, 0xc
mov ecx, edi
push 0xffffffffffffffff
call fcn.00401970
mov ecx, esi
call fcn.00470350
push ebx
push 0
push esi
push 0x46e8b0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov ebx, dword [ebx]
mov dword [esi + 0x63c], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [0x4d9544]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46e88e
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x46e88e
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff4
push edx
call fcn.004c5432
add esp, 4
lea ecx, [esp + 0x24]
call fcn.004014c0
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0x10
ret 4