Function at 0x41a68f
Capabilities:
Check if file exists
Copy file
Create directory
Delete directory
Delete file
Get common file path
Move file
Set file attributes

Disassembly:
push ebp
lea ebp, [esp - 0x410]
sub esp, 0x490
mov eax, dword [0x4879c0]
xor eax, ebp
mov dword [ebp + 0x40c], eax
mov eax, dword [ebp + 0x41c]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp + 0x420]
push ebx
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp + 0x418]
mov ebx, dword [eax*4 + 0x48b778]
push edi
xor edi, edi
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x40], 0x64
mov dword [0x489b90], 1
cmp ebx, edi
jne 0x41a6ef
mov eax, 0x86180002
jmp 0x41af6e
push esi
mov dword [ebp - 0x54], edi
cmp dword [ebx + 0x405c], edi
jbe 0x41af6a
lea eax, [ebx + 0x40a4]
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x5c], eax
mov eax, dword [ebx + 0x4050]
add eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x64], eax
mov eax, dword [ebx + 0x70a4]
lea eax, [ebx + eax*2 + 0x60a4]
push eax
lea eax, [ebx + 0x4040]
call fcn.0041c4f3
pop ecx
cmp dword [ebx + 0x7ad0], edi
jbe 0x41a76e
lea esi, [ebx + 0x70a8]
mov eax, dword [ebx + 0x70a4]
lea eax, [ebx + eax*2 + 0x60a4]
push eax
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpIW]
test eax, eax
je 0x41ad63
inc edi
add esi, 0x208
cmp edi, dword [ebx + 0x7ad0]
jb 0x41a742
mov eax, dword [ebx + 0x70a4]
lea eax, [ebx + eax*2 + 0x60a4]
push eax
lea ecx, [ebp - 0x3c]
call fcn.004036a3
lea edx, [ebx + 0x7ad4]
mov eax, edx
lea edi, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x41a78f
sub eax, edi
sar eax, 1
je 0x41a7b0
push edx
lea ecx, [ebp - 0x3c]
call fcn.004157d0
test eax, eax
je 0x41ad57
mov eax, dword [ebx + 0x70a4]
lea esi, [ebx + eax*2 + 0x60a4]
cmp word [esi], 0
je 0x41a8d6
mov dword [ebp - 0x48], esi
cmp word [esi], 0x2f
jne 0x41a8c4
xor eax, eax
lea edi, [ebx + 0x60a4]
push edi
mov word [esi], ax
call fcn.0041b18f
pop ecx
test eax, eax
je 0x41a8be
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x41a8be
cmp eax, 0x50
je 0x41a8be
cmp dword [ebp - 0x40], 0x4e20
jge 0x41a84f
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_Sleep]
push edi
call fcn.0041b18f
pop ecx
test eax, eax
je 0x41a846
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x41a846
cmp eax, 0x50
je 0x41a846
mov eax, dword [ebp - 0x40]
add eax, eax
cmp eax, 0x4e20
mov dword [ebp - 0x40], eax
jl 0x41a811
cmp dword [ebp - 0x40], 0x4e20
jl 0x41a8b7
push 0
push edi
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x41a8b7
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
lea ecx, [ebp - 0x20]
call fcn.004036a3
push 0x47b8a0
lea ecx, [ebp - 0x20]
call fcn.004036f5
push 0
push edi
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
jne 0x41ad97
cmp dword [ebp - 8], 8
mov eax, dword [ebp - 0x1c]
jae 0x41a899
lea eax, [ebp - 0x1c]
push 9
push edi
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x41ad84
push 0
push 1
lea ecx, [ebp - 0x20]
call fcn.00403f22
mov dword [ebp - 0x40], 0x64
push 0x5c
pop eax
mov word [esi], ax
mov esi, dword [ebp - 0x48]
inc esi
inc esi
cmp word [esi], 0
mov dword [ebp - 0x48], esi
jne 0x41a7ca
mov eax, dword [ebp - 0x64]
cmp byte [eax + 0x19], 0
lea edi, [ebx + 0x60a4]
je 0x41a9c7
push edi
call fcn.0041b18f
pop ecx
test eax, eax
je 0x41ad57
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x41ad57
cmp eax, 0x50
je 0x41ad57
mov esi, 0x4e20
cmp dword [ebp - 0x40], esi
jge 0x41a957
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_Sleep]
push edi
call fcn.0041b18f
pop ecx
test eax, eax
je 0x41a94e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x41a94e
cmp eax, 0x50
je 0x41a94e
mov eax, dword [ebp - 0x40]
add eax, eax
cmp eax, esi
mov dword [ebp - 0x40], eax
jl 0x41a91c
cmp dword [ebp - 0x40], esi
jl 0x41ad57
push 0
push edi
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x41ad57
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
lea ecx, [ebp - 0x20]
call fcn.004036a3
push 0x47b8a0
lea ecx, [ebp - 0x20]
call fcn.004036f5
xor esi, esi
push esi
push edi
push esi
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
jne 0x41adfb
cmp dword [ebp - 8], 8
mov eax, dword [ebp - 0x1c]
jae 0x41a9a5
lea eax, [ebp - 0x1c]
push 9
push edi
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x41ade8
push esi
push 1
lea ecx, [ebp - 0x20]
call fcn.00403f22
jmp 0x41ad57
push 0x64
pop esi
lea eax, [ebp - 0x44]
push edi
push eax
xor eax, eax
inc eax
mov dword [ebp - 0x40], esi
call fcn.0041b1a8
pop ecx
pop ecx
test eax, eax
je 0x41ac4f
push esi
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0x44]
push edi
push eax
xor eax, eax
inc eax
call fcn.0041b1a8
pop ecx
pop ecx
test eax, eax
je 0x41aa08
add esi, esi
cmp esi, 0x4e20
jl 0x41a9e4
cmp esi, 0x4e20
jl 0x41ac48
xor esi, esi
push edi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x40], esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41aab1
push edi
lea ecx, [ebp - 0x20]
call fcn.004036a3
push str._rename
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.00404868
add esp, 0xc
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp - 0x20]
call fcn.00403c9c
push esi
push 1
lea ecx, [ebp - 0x80]
call fcn.00403f22
cmp dword [ebp - 8], 8
mov eax, dword [ebp - 0x1c]
jae 0x41aa6c
lea eax, [ebp - 0x1c]
push 9
push eax
push edi
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne 0x41aa81
mov dword [ebp - 0x48], 1
lea eax, [ebp - 0x44]
push edi
push eax
xor eax, eax
inc eax
call fcn.0041b1a8
pop ecx
pop ecx
test eax, eax
jne 0x41aa9b
mov dword [ebp - 0x40], 1
push esi
push 1
lea ecx, [ebp - 0x20]
call fcn.00403f22
cmp dword [ebp - 0x40], esi
jne 0x41ac48
xor esi, esi
push edi
lea ecx, [ebp - 0x20]
call fcn.004036a3
push 0x47b8a0
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.00404868
add esp, 0xc
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp - 0x20]
call fcn.00403c9c
push esi
push 1
lea ecx, [ebp - 0x80]
call fcn.00403f22
cmp dword [ebp - 8], 8
mov eax, dword [ebp - 0x1c]
jae 0x41aaf2
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x44]
push eax
xor eax, eax
inc eax
call fcn.0041b1a8
pop ecx
pop ecx
test eax, eax
jne 0x41ab4e
push dword [ebp - 0x44]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 8], 8
mov eax, dword [ebp - 0x1c]
jae 0x41ab1a
lea eax, [ebp - 0x1c]
push 0xb
push edi
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x41ab4e
push esi
push 0x80
push 3
push esi
push 1
push 0x40000000
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x44], eax
cmp eax, 0xffffffff
je 0x41ab4e
mov dword [ebp - 0x40], 1
push esi
push 1
lea ecx, [ebp - 0x20]
call fcn.00403f22
cmp dword [ebp - 0x40], esi
jne 0x41ac48
xor eax, eax
mov esi, 0x206
push esi
push eax
mov word [ebp - 4], ax
lea eax, [ebp - 2]
push eax
call fcn.00431530
xor eax, eax
push esi
mov word [ebp + 0x204], ax
xor esi, esi
lea eax, [ebp + 0x206]
push esi
push eax
call fcn.00431530
add esp, 0x18
lea eax, [ebp - 4]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
push str.thunderErrorFile
lea eax, [ebp - 4]
push eax
lea eax, [ebp + 0x204]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
push esi
push 0x80
push 2
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CreateFileW]
push 1
push 0x40000000
lea eax, [ebp + 0x204]
push eax
call esi
cmp eax, 0xffffffff
je 0x41ae82
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push edi
lea eax, [ebp + 0x204]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x41ac20
push 0
push 0x80
push 3
push 0
push 1
push 0x40000000
push edi
call esi
mov dword [ebp - 0x44], eax
cmp eax, 0xffffffff
je 0x41ac20
mov dword [ebp - 0x40], 1
lea eax, [ebp + 0x204]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41ac3e
lea eax, [ebp + 0x204]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
cmp dword [ebp - 0x40], 0
je 0x41ae82
mov dword [ebp - 0x40], 0x64
mov eax, dword [ebp - 0x5c]
push dword [eax]
lea esi, [eax + 0x1000]
lea eax, [ebp - 0x44]
push eax
call fcn.0041b25d
pop ecx
pop ecx
test eax, eax
je 0x41aca2
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x5c]
push dword [eax]
lea eax, [ebp - 0x44]
push eax
call fcn.0041b25d
pop ecx
pop ecx
test eax, eax
je 0x41ac95
mov eax, dword [ebp - 0x40]
add eax, eax
cmp eax, 0x4e20
mov dword [ebp - 0x40], eax
jl 0x41ac69
cmp dword [ebp - 0x40], 0x4e20
jge 0x41aef1
lea esi, [ebp - 0x44]
call fcn.0041b1ea
test eax, eax
je 0x41ad44
cmp dword [0x489b90], 0
je 0x41accd
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
and dword [0x489b90], 0
lea esi, [ebp - 0x44]
call fcn.0041b1ea
test eax, eax
je 0x41ad44
mov eax, edi
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x41acde
mov esi, dword [ebp - 0x50]
sub eax, edx
sar eax, 1
add eax, eax
push eax
push edi
push esi
call fcn.004315b0
mov eax, edi
add esp, 0xc
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x41ad01
sub eax, ecx
sar eax, 1
xor ecx, ecx
mov word [esi + eax*2], cx
mov eax, esi
dec eax
dec eax
mov cx, word [eax + 2]
inc eax
inc eax
test cx, cx
jne 0x41ad19
mov edi, eax
mov esi, str._CLose
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0x58], 0x86180003
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], eax
jmp 0x41ad57
mov eax, dword [ebp - 0x64]
cmp byte [eax + 0x1d], 0
je 0x41ad57
push dword [eax + 0x14]
push edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push 0
push 1
lea ecx, [ebp - 0x3c]
call fcn.00403f22
inc dword [ebp - 0x54]
mov eax, dword [ebp - 0x54]
add dword [ebp - 0x5c], 4
add dword [ebp - 0x60], 0x20
cmp eax, dword [ebx + 0x405c]
jae 0x41af6a
xor edi, edi
jmp 0x41a70b
cmp dword [ebp - 8], 8
mov eax, dword [ebp - 0x1c]
jae 0x41ad90
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
add ebx, 0x60a4
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x41ada2
mov edi, dword [ebp - 0x50]
sub eax, edx
sar eax, 1
add eax, eax
push eax
push ebx
push edi
call fcn.004315b0
mov eax, ebx
add esp, 0xc
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x41adc5
sub eax, ecx
sar eax, 1
xor ecx, ecx
mov word [edi + eax*2], cx
dec edi
dec edi
mov ax, word [edi + 2]
inc edi
inc edi
test ax, ax
jne 0x41addb
jmp 0x41ae4c
cmp dword [ebp - 8], 8
mov eax, dword [ebp - 0x1c]
jae 0x41adf4
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
add ebx, 0x60a4
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, si
jne 0x41ae06
mov esi, dword [ebp - 0x50]
sub eax, edx
sar eax, 1
add eax, eax
push eax
push ebx
push esi
call fcn.004315b0
mov eax, ebx
add esp, 0xc
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x41ae29
sub eax, ecx
sar eax, 1
xor ecx, ecx
mov word [esi + eax*2], cx
dec esi
dec esi
mov ax, word [esi + 2]
inc esi
inc esi
test ax, ax
jne 0x41ae3f
mov edi, esi
mov esi, str._Dir
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [ebp - 0x4c]
push 0
mov dword [ecx], eax
push 1
lea ecx, [ebp - 0x20]
call fcn.00403f22
push 0
push 1
lea ecx, [ebp - 0x3c]
call fcn.00403f22
mov eax, 0x86180003
jmp 0x41af6d
add ebx, 0x60a4
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x41ae8d
mov esi, dword [ebp - 0x50]
sub eax, edx
sar eax, 1
add eax, eax
push eax
push ebx
push esi
call fcn.004315b0
mov eax, ebx
add esp, 0xc
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x41aeb0
sub eax, ecx
sar eax, 1
xor ecx, ecx
mov word [esi + eax*2], cx
dec esi
dec esi
mov eax, esi
mov cx, word [eax + 2]
inc eax
inc eax
test cx, cx
jne 0x41aec8
mov edi, eax
mov eax, dword [ebp - 0x48]
mov esi, str._Open
movsd dword es:[edi], dword [esi]
neg eax
sbb eax, eax
movsd dword es:[edi], dword [esi]
and eax, 3
add eax, 0x86180003
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x58], eax
jmp 0x41af53
add ebx, 0x60a4
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x41aefc
mov esi, dword [ebp - 0x50]
sub eax, edx
sar eax, 1
add eax, eax
push eax
push ebx
push esi
call fcn.004315b0
mov eax, ebx
add esp, 0xc
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x41af1f
sub eax, ecx
sar eax, 1
xor ecx, ecx
mov word [esi + eax*2], cx
dec esi
dec esi
mov ax, word [esi + 2]
inc esi
inc esi
test ax, ax
jne 0x41af35
mov edi, esi
mov esi, str._Write
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0x58], 0x86180003
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [ebp - 0x4c]
push 0
mov dword [ecx], eax
push 1
lea ecx, [ebp - 0x3c]
call fcn.00403f22
mov eax, dword [ebp - 0x58]
pop esi
mov ecx, dword [ebp + 0x40c]
pop edi
xor ecx, ebp
pop ebx
call fcn.0042ea9f
add ebp, 0x410
leave
ret