Function at 0x47d1c6
Capabilities:
Check if file exists
Create directory
Delete file
Get common file path
Move file
Resolve function by parsing pe exports
Set file attributes

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x481bbb
mov eax, dword fs:[0]
push eax
sub esp, 0x890
mov eax, dword [0x49a0d0]
xor eax, esp
mov dword [esp + 0x888], eax
push ebx
push esi
push edi
mov eax, dword [0x49a0d0]
xor eax, esp
push eax
lea eax, [esp + 0x8a0]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
xor ebx, ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], eax
cmp eax, ebx
je 0x47d21c
mov dword [eax], ebx
mov eax, dword [esi + 0xc]
mov ecx, dword [eax]
lea edx, [esp + 0x2c]
push edx
push 0xc
push dword [ebp + 0xc]
push eax
call dword [ecx + 0x1c]
mov eax, dword [esp + 0x34]
lea edx, [esp + 0x2c]
push edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x3c]
push 3
push dword [ebp + 0xc]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
cmp word [esp + 0x2c], bx
jne 0x47d261
xor eax, eax
inc eax
jmp 0x47d808
push dword [esp + 0x34]
lea eax, [esp + 0x78]
push 0x104
push eax
call fcn.0044a38e
add esp, 0xc
lea eax, [esp + 0x74]
cmp dword [esi + 0x14], ebx
je 0x47d2e5
push 0x490eac
push eax
call fcn.0044a471
pop ecx
test eax, eax
pop ecx
lea eax, [esp + 0x74]
je 0x47d2a4
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, bx
jne 0x47d298
jmp 0x47d307
push 0x490eb8
push eax
call fcn.0044a471
pop ecx
pop ecx
test eax, eax
jne 0x47d259
push 4
lea eax, [esp + 0x78]
mov edx, str.ubundle.exe
pop edi
mov cx, word [edx]
cmp cx, word [eax]
jne 0x47d331
cmp cx, bx
je 0x47d2e1
mov cx, word [edx + 2]
cmp cx, word [eax + 2]
jne 0x47d331
add edx, edi
add eax, edi
cmp cx, bx
jne 0x47d2c1
xor eax, eax
jmp 0x47d336
push str.x86_
push eax
call fcn.0044a471
pop ecx
test eax, eax
pop ecx
lea eax, [esp + 0x74]
je 0x47d327
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, bx
jne 0x47d2fd
sub eax, edx
sar eax, 1
lea eax, [eax + eax - 6]
push eax
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.0044a6e0
add esp, 0xc
jmp 0x47d2b5
push str.x64_
jmp 0x47d2a9
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x47d386
lea eax, [esp + 0x74]
mov ecx, str.AiBoosterSetup.exe
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x47d367
cmp dx, bx
je 0x47d363
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x47d367
add ecx, edi
add eax, edi
cmp dx, bx
jne 0x47d343
xor eax, eax
jmp 0x47d36c
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x47d386
lea eax, [esp + 0x27c]
push eax
call fcn.0047dbe7
cmp al, bl
jne 0x47d399
jmp 0x47d259
lea eax, [esp + 0x27c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetTempPathW]
mov eax, dword [esi + 0xc]
mov ecx, dword [eax]
lea edx, [esp + 0x2c]
push edx
push 9
push dword [ebp + 0xc]
push eax
call dword [ecx + 0x1c]
cmp word [esp + 0x2c], bx
je 0x47d259
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
test al, 0x10
lea eax, [esp + 0x74]
je 0x47d495
mov ecx, 0x490f1c
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x47d3f4
cmp dx, bx
je 0x47d3f0
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x47d3f4
add eax, edi
add ecx, edi
cmp dx, bx
jne 0x47d3d0
xor eax, eax
jmp 0x47d3f9
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x47d259
mov ecx, 0x490f24
lea eax, [esp + 0x74]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x47d42e
cmp dx, bx
je 0x47d42a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x47d42e
add eax, edi
add ecx, edi
cmp dx, bx
jne 0x47d40a
xor eax, eax
jmp 0x47d433
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x47d259
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x280]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push ebx
lea eax, [esp + 0x280]
push eax
call dword [sym.imp.KERNEL32.DLL_CreateDirectoryW]
test eax, eax
je 0x47d806
lea eax, [esp + 0x74]
push eax
lea esi, [esp + 0x40]
call fcn.00402975
mov eax, esi
push eax
mov eax, 0x49f828
mov dword [esp + 0x8ac], ebx
call fcn.00403b23
push 1
xor ebx, ebx
call fcn.00402d9d
jmp 0x47d806
push eax
lea eax, [esp + 0x280]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [esp + 0x74]
push eax
lea esi, [esp + 0x40]
call fcn.00402975
mov eax, esi
xor edi, edi
push eax
inc edi
mov eax, 0x49f828
mov dword [esp + 0x8ac], edi
call fcn.00403b23
or dword [esp + 0x8a8], 0xffffffff
push edi
xor ebx, ebx
call fcn.00402d9d
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
lea eax, [esp + 0x27c]
push eax
call esi
mov dword [esp + 0x18], eax
cmp eax, ebx
je 0x47d5d2
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0xc]
mov ecx, dword [eax]
lea edx, [esp + 0x2c]
push edx
push 0x13
push dword [ebp + 0xc]
push eax
call dword [ecx + 0x1c]
lea eax, [esp + 0x27c]
push eax
call fcn.0048049e
pop ecx
cmp eax, dword [esp + 0x34]
jne 0x47d527
mov eax, edi
jmp 0x47d808
lea eax, [esp + 0x27c]
push eax
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp eax, ebx
jne 0x47d5d2
push ebx
lea eax, [esp + 0x280]
push eax
lea eax, [esp + 0x48c]
push 0x490f2c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [esp + 0x484]
push eax
call esi
test eax, eax
lea eax, [esp + 0x484]
push eax
je 0x47d5a3
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
test eax, eax
jne 0x47d5d2
push edi
lea eax, [esp + 0x280]
push eax
lea eax, [esp + 0x48c]
push str._ws.del_d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
inc edi
cmp edi, 0x64
jl 0x47d55c
jmp 0x47d5d2
lea eax, [esp + 0x280]
push eax
call fcn.0044aa45
pop ecx
pop ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [esp + 0x18], ecx
cmp ecx, ebx
jne 0x47d5d2
push 4
push ebx
lea eax, [esp + 0x48c]
push eax
call dword [sym.imp.KERNEL32.DLL_MoveFileExW]
mov edi, dword [sym.imp.KERNEL32.DLL_CreateFileW]
push ebx
push 0x80
push 2
push ebx
xor esi, esi
inc esi
push esi
push 0xc0000000
lea eax, [esp + 0x294]
push eax
call edi
mov dword [esp + 0x14], eax
cmp eax, 0xffffffff
jne 0x47d7b5
cmp dword [esp + 0x18], ebx
jne 0x47d60e
mov eax, esi
jmp 0x47d808
lea eax, [esp + 0x484]
push eax
call fcn.0047dbe7
cmp al, bl
je 0x47d607
mov ebx, dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0x490f54
lea eax, [esp + 0x488]
push eax
call ebx
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x488]
push eax
call ebx
lea eax, [esp + 0x484]
push eax
call fcn.0047d155
pop ecx
test eax, eax
je 0x47d607
push 0x490f5c
lea esi, [esp + 0x5c]
call fcn.00402975
mov eax, esi
push eax
mov eax, 0x49f828
mov dword [esp + 0x8ac], 2
call fcn.00403b23
or dword [esp + 0x8a8], 0xffffffff
push 1
xor ebx, ebx
call fcn.00402d9d
push ebx
push 0x80
push 2
push ebx
push 1
push 0x40000000
lea eax, [esp + 0x49c]
push eax
call edi
mov edi, eax
cmp edi, 0xffffffff
je 0x47d259
push dword [esp + 0x1c]
lea eax, [esp + 0x488]
push eax
call dword [sym.imp.KERNEL32.DLL_SetFileAttributesW]
push 0x20
call fcn.0044997f
pop ecx
cmp eax, ebx
je 0x47d6e6
mov dword [eax + 4], ebx
or dword [eax + 8], 0xffffffff
mov dword [eax], vtable.CExtractOutFile.0
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebx
mov esi, eax
jmp 0x47d6e8
xor esi, esi
mov dword [esp + 0x14], esi
cmp esi, ebx
je 0x47d6f6
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov dword [esp + 0x8a8], 3
cmp esi, ebx
jne 0x47d711
push edi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
jmp 0x47d259
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x24]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x18], eax
lea eax, [esp + 0x27c]
push eax
lea eax, [esp + 0x690]
push eax
call dword [sym.imp.KERNEL32.DLL_lstrcpyW]
lea eax, [esp + 0x68c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
xor ecx, ecx
mov word [eax], cx
lea eax, [esp + 0x68c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x47d772
push 1
push ebx
lea eax, [esp + 0x694]
push eax
call dword [sym.imp.KERNEL32.DLL_MoveFileExW]
push 1
lea eax, [esp + 0x690]
push eax
lea eax, [esp + 0x284]
push eax
call dword [sym.imp.KERNEL32.DLL_MoveFileExW]
push 4
push ebx
lea eax, [esp + 0x694]
push eax
call dword [sym.imp.KERNEL32.DLL_MoveFileExW]
lea eax, [esp + 0x27c]
push eax
lea eax, [esp + 0x488]
push eax
mov dword [esi + 8], edi
call fcn.0047d008
jmp 0x47d800
push 0x20
call fcn.0044997f
pop ecx
cmp eax, ebx
je 0x47d7d8
mov dword [eax + 4], ebx
or dword [eax + 8], 0xffffffff
mov dword [eax], vtable.CExtractOutFile.0
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebx
mov esi, eax
jmp 0x47d7da
xor esi, esi
cmp esi, ebx
je 0x47d82e
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x24]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x20]
mov dword [eax], esi
xor eax, eax
mov ecx, dword [esp + 0x8a0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x888]
xor ecx, esp
call fcn.004498d8
mov esp, ebp
pop ebp
ret 0x10
push dword [esp + 0x14]
jmp 0x47d706