Function at 0x46d688
Capabilities:
Check if file exists
Create directory
Delete file
Get common file path
Get file attributes

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff004
push eax
add esp, 0xffffffec
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov esi, eax
push 0x400
lea eax, [ebp - 0x414]
push eax
push 0
call sub.KERNEL32.DLL_GetModuleFileNameA
push 0x4a7757
lea eax, [ebp - 0x414]
call fcn.0040ba30
push eax
call fcn.004949c8
add esp, 8
lea edx, [ebp - 8]
push edx
call sub.SHELL32.DLL_SHGetMalloc
lea eax, [ebp - 0x814]
call fcn.0046de7c
lea eax, [ebp - 0x814]
call fcn.0040bf34
push str.WinRAR.lnk
lea edx, [ebp - 0x814]
push edx
call fcn.004948ec
add esp, 8
cmp byte [esi + 0x14], 0
je 0x46d73c
lea eax, [ebp - 0x814]
xor edx, edx
call fcn.0040a4d8
test al, al
je 0x46d71a
cmp byte [ebp + 8], 0
je 0x46d748
push edi
push 0
mov eax, 0x537
call fcn.00411fe8
mov ecx, eax
lea edx, [ebp - 0x814]
lea eax, [ebp - 0x414]
call fcn.0046dda4
jmp 0x46d748
lea edx, [ebp - 0x814]
push edx
call sub.KERNEL32.DLL_DeleteFileA
lea ecx, [ebp - 4]
push ecx
push 0xb
push 0
call sub.SHELL32.DLL_SHGetSpecialFolderLocation
lea eax, [ebp - 0x814]
push eax
push dword [ebp - 4]
call sub.SHELL32.DLL_SHGetPathFromIDListA
push dword [ebp - 4]
mov edx, dword [ebp - 8]
push edx
mov ecx, dword [edx]
call dword [ecx + 0x14]
lea eax, [ebp - 0x814]
call fcn.0040bf34
push str.WinRAR.lnk
lea edx, [ebp - 0x814]
push edx
call fcn.004948ec
add esp, 8
cmp byte [esi + 0x15], 0
je 0x46d7b7
push edi
push 0
mov eax, 0x537
call fcn.00411fe8
mov ecx, eax
lea edx, [ebp - 0x814]
lea eax, [ebp - 0x414]
call fcn.0046dda4
jmp 0x46d7c3
lea edx, [ebp - 0x814]
push edx
call sub.KERNEL32.DLL_DeleteFileA
mov ecx, dword [0x4a7560]
mov eax, 0x38e
mov dword [ebp - 0x14], ecx
mov ecx, dword [0x4a7564]
mov dword [ebp - 0x10], ecx
mov ecx, dword [0x4a7568]
mov dword [ebp - 0xc], ecx
call fcn.00411fe8
mov dword [ebp - 0x10], eax
mov eax, 0x38f
call fcn.00411fe8
mov dword [ebp - 0xc], eax
lea edx, [ebp - 4]
push edx
push 2
push 0
call sub.SHELL32.DLL_SHGetSpecialFolderLocation
lea ecx, [ebp - 0x814]
push ecx
push dword [ebp - 4]
call sub.SHELL32.DLL_SHGetPathFromIDListA
push dword [ebp - 4]
mov eax, dword [ebp - 8]
push eax
mov edx, dword [eax]
call dword [edx + 0x14]
lea eax, [ebp - 0x814]
call fcn.0040bf34
push 0x4a77e1
lea edx, [ebp - 0x814]
push edx
call fcn.004948ec
add esp, 8
cmp byte [esi + 0x16], 0
je 0x46d931
test ebx, ebx
je 0x46d85d
lea ecx, [ebp - 0x814]
push ecx
push ebx
call fcn.004949c8
add esp, 8
push 0
lea eax, [ebp - 0x814]
push eax
call sub.KERNEL32.DLL_CreateDirectoryA
xor ebx, ebx
mov eax, dword [ebx*4 + 0x4a7554]
cmp byte [eax], 0
je 0x46d925
lea edx, [ebp - 0x814]
push edx
lea ecx, [ebp - 0xc14]
push ecx
call fcn.004949c8
add esp, 8
lea eax, [ebp - 0xc14]
call fcn.0040bf34
push dword [ebp + ebx*4 - 0x14]
lea edx, [ebp - 0xc14]
push edx
call fcn.004948ec
add esp, 8
push 0x4a7ab1
lea ecx, [ebp - 0xc14]
push ecx
call fcn.004948ec
add esp, 8
test ebx, ebx
jne 0x46d8e0
lea eax, [ebp - 0xc14]
push eax
call sub.KERNEL32.DLL_GetFileAttributesA
cmp eax, 0xffffffff
je 0x46d8e0
cmp byte [ebp + 8], 0
je 0x46d93c
push dword [ebx*4 + 0x4a7554]
lea eax, [ebp - 0x414]
call fcn.0040ba30
push eax
call fcn.004949c8
add esp, 8
test ebx, ebx
jne 0x46d903
mov edx, edi
jmp 0x46d905
xor edx, edx
push edx
push 0
mov eax, 0x537
call fcn.00411fe8
mov ecx, eax
lea edx, [ebp - 0xc14]
lea eax, [ebp - 0x414]
call fcn.0046dda4
inc ebx
cmp ebx, 3
jl 0x46d86d
jmp 0x46d93c
lea eax, [ebp - 0x814]
call fcn.0046deb4
call fcn.0040ff8c
test eax, eax
je 0x46da81
lea edx, [ebp - 4]
push edx
push 0x17
push 0
call sub.SHELL32.DLL_SHGetSpecialFolderLocation
test eax, eax
jne 0x46da81
lea ecx, [ebp - 0x814]
push ecx
push dword [ebp - 4]
call sub.SHELL32.DLL_SHGetPathFromIDListA
push dword [ebp - 4]
mov eax, dword [ebp - 8]
push eax
mov edx, dword [eax]
call dword [edx + 0x14]
lea eax, [ebp - 0x814]
call fcn.0040bf34
push 0x4a77e1
lea edx, [ebp - 0x814]
push edx
call fcn.004948ec
add esp, 8
cmp byte [esi + 0x16], 0
je 0x46da76
push 0
lea ecx, [ebp - 0x814]
push ecx
call sub.KERNEL32.DLL_CreateDirectoryA
xor ebx, ebx
mov eax, dword [ebx*4 + 0x4a7554]
cmp byte [eax], 0
je 0x46da6a
lea edx, [ebp - 0x814]
push edx
lea ecx, [ebp - 0x1014]
push ecx
call fcn.004949c8
add esp, 8
lea eax, [ebp - 0x1014]
call fcn.0040bf34
push dword [ebp + ebx*4 - 0x14]
lea edx, [ebp - 0x1014]
push edx
call fcn.004948ec
add esp, 8
push 0x4a7ab1
lea ecx, [ebp - 0x1014]
push ecx
call fcn.004948ec
add esp, 8
test ebx, ebx
jne 0x46da25
lea eax, [ebp - 0x1014]
push eax
call sub.KERNEL32.DLL_GetFileAttributesA
cmp eax, 0xffffffff
je 0x46da25
cmp byte [ebp + 8], 0
je 0x46da81
push dword [ebx*4 + 0x4a7554]
lea eax, [ebp - 0x414]
call fcn.0040ba30
push eax
call fcn.004949c8
add esp, 8
test ebx, ebx
jne 0x46da48
mov edx, edi
jmp 0x46da4a
xor edx, edx
push edx
push 0
mov eax, 0x537
call fcn.00411fe8
mov ecx, eax
lea edx, [ebp - 0x1014]
lea eax, [ebp - 0x414]
call fcn.0046dda4
inc ebx
cmp ebx, 3
jl 0x46d9b2
jmp 0x46da81
lea eax, [ebp - 0x814]
call fcn.0046deb4
mov edx, dword [ebp - 8]
push edx
mov ecx, dword [edx]
call dword [ecx + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4