Function at 0x404a95
Capabilities:
Check if file exists
Copy file
Create directory
Delete file
Get common file path
Get file size
Read file on windows
Set file attributes
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x657a4c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
sub esp, 0x5c8
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x574], ecx
mov byte [ebp - 0x30c], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x30b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x30c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push 0x7523b4
lea ecx, [ebp - 0x30c]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [ebp - 0x204]
call fcn.00401d70
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x1f8]
call fcn.00401d70
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x314]
call fcn.00401d70
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x208]
call fcn.00401d70
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1e8]
call fcn.00401d70
mov byte [ebp - 4], 4
lea edx, [ebp - 0x204]
push edx
push 0x451
mov ecx, dword [ebp - 0x574]
call fcn.006217d9
mov ecx, eax
call fcn.0061f06b
lea eax, [ebp - 0x1f8]
push eax
push 0x3f3
mov ecx, dword [ebp - 0x574]
call fcn.006217d9
mov ecx, eax
call fcn.0061f06b
lea ecx, [ebp - 0x208]
push ecx
push 0x455
mov ecx, dword [ebp - 0x574]
call fcn.006217d9
mov ecx, eax
call fcn.0061f06b
lea edx, [ebp - 0x1e8]
push edx
push 0x446
mov ecx, dword [ebp - 0x574]
call fcn.006217d9
mov ecx, eax
call fcn.0061f06b
lea ecx, [ebp - 0x204]
call fcn.00408080
test eax, eax
jne 0x404be1
lea ecx, [ebp - 0x1f8]
call fcn.00408080
test eax, eax
je 0x404c42
push 0
push 0
push 0x7523c0
call fcn.0062be0f
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1e8]
call fcn.00622566
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x208]
call fcn.00622566
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x314]
call fcn.00622566
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1f8]
call fcn.00622566
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x204]
call fcn.00622566
jmp 0x40574b
lea eax, [ebp - 0x314]
push eax
push 0x453
mov ecx, dword [ebp - 0x574]
call fcn.006217d9
mov ecx, eax
call fcn.0061f06b
lea ecx, [ebp - 0x314]
call fcn.00408080
test eax, eax
je 0x404cd0
push 0
push 0
push 0x7523dc
call fcn.0062be0f
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1e8]
call fcn.00622566
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x208]
call fcn.00622566
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x314]
call fcn.00622566
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1f8]
call fcn.00622566
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x204]
call fcn.00622566
jmp 0x40574b
lea ecx, [ebp - 0x1f4]
call fcn.00401d70
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1f4]
push ecx
mov ecx, dword [ebp - 0x574]
add ecx, 0x98
call fcn.00408230
push eax
mov ecx, dword [ebp - 0x574]
add ecx, 0x98
call fcn.00632bce
push 0x29e
push 0
push 0x6f3fa8
call fcn.005fb270
add esp, 0xc
push 0
lea ecx, [ebp - 0x204]
call fcn.00622996
push eax
call fcn.00402afb
add esp, 4
push eax
push 0x6f3fa8
call fcn.005fc1c0
add esp, 8
push 0
lea ecx, [ebp - 0x1f8]
call fcn.00622996
push eax
call fcn.00402afb
add esp, 4
push eax
push 0x6f40d4
call fcn.005fc1c0
add esp, 8
push 0
lea ecx, [ebp - 0x314]
call fcn.00622996
push eax
call fcn.00402afb
add esp, 4
push eax
push 0x6f40f4
call fcn.005fc1c0
add esp, 8
push 0
lea ecx, [ebp - 0x208]
call fcn.00622996
push eax
call fcn.00402afb
add esp, 4
push eax
push 0x6f4126
call fcn.005fc1c0
add esp, 8
push 0
lea ecx, [ebp - 0x1e8]
call fcn.00622996
push eax
push 0x6f4146
call fcn.005fc1c0
add esp, 8
push 0
push 0x7523f0
push 0x10000002
push 0x752400
push 0
push 0
lea ecx, [ebp - 0x520]
call fcn.00617951
mov byte [ebp - 4], 6
mov byte [ebp - 0x1e4], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x1e3]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x104
lea edx, [ebp - 0x1e4]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x5c
lea eax, [ebp - 0x1e4]
push eax
call fcn.005fc2e0
add esp, 8
mov byte [eax], 0
push 0x752404
lea ecx, [ebp - 0x1e4]
push ecx
call fcn.005fc1d0
add esp, 8
lea edx, [ebp - 0x1e4]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x404e61
push 0
lea eax, [ebp - 0x1e4]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea ecx, [ebp - 0x1e4]
mov dword [ebp - 0x498], ecx
lea ecx, [ebp - 0x520]
call fcn.00617ab3
cmp eax, 1
je 0x404f24
lea ecx, [ebp - 0x520]
call fcn.00408130
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x520]
call fcn.00408130
mov dword [ebp - 0x53c], eax
mov edx, dword [ebp - 0x53c]
push edx
call fcn.0061d6ce
add esp, 4
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x520]
call fcn.00408030
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x1f4]
call fcn.00622566
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1e8]
call fcn.00622566
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x208]
call fcn.00622566
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x314]
call fcn.00622566
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1f8]
call fcn.00622566
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x204]
call fcn.00622566
jmp 0x40574b
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x520]
call fcn.00617b8e
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x18]
call fcn.00401d90
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 0
lea ecx, [ebp - 0x18]
call fcn.00401d90
push eax
lea ecx, [ebp - 0x30c]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea edx, [ebp - 0x30c]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov dword [ebp - 0x1fc], 0
push 0
push 0x80
push 3
push 0
push 1
push bind
lea ecx, [ebp - 0x18]
call fcn.00401d90
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x318], eax
push 0
mov eax, dword [ebp - 0x318]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x310], eax
mov ecx, dword [ebp - 0x310]
push ecx
call fcn.0061d6a5
add esp, 4
mov dword [ebp - 0x540], eax
mov edx, dword [ebp - 0x540]
mov dword [ebp - 0x1f0], edx
push 4
push 0
mov eax, dword [ebp - 0x1f0]
push eax
call fcn.005fb270
add esp, 0xc
push 0
lea ecx, [ebp - 0x1fc]
push ecx
mov edx, dword [ebp - 0x310]
add edx, 1
push edx
mov eax, dword [ebp - 0x1f0]
push eax
mov ecx, dword [ebp - 0x318]
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov edx, dword [ebp - 0x318]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
mov eax, dword [ebp - 0x310]
push eax
push str.___________D
mov ecx, dword [ebp - 0x1f0]
push ecx
call fcn.00404978
add esp, 0x10
mov dword [ebp - 0x200], eax
cmp dword [ebp - 0x200], 0xffffffff
jne 0x4050d4
push 0
push 0
push 0x752428
call fcn.0062be0f
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x18]
call fcn.00622566
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x520]
call fcn.00408030
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x1f4]
call fcn.00622566
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1e8]
call fcn.00622566
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x208]
call fcn.00622566
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x314]
call fcn.00622566
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1f8]
call fcn.00622566
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x204]
call fcn.00622566
jmp 0x40574b
lea ecx, [ebp - 0x328]
call fcn.00622c2c
mov byte [ebp - 4], 8
push 0
push 0x9001
lea ecx, [ebp - 0x18]
call fcn.00401d90
push eax
lea ecx, [ebp - 0x328]
call fcn.00622dde
test eax, eax
je 0x4053d1
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0x310]
push edx
mov eax, dword [ebp - 0x1f0]
push eax
lea ecx, [ebp - 0x328]
call fcn.00622f35
push 0
mov ecx, dword [ebp - 0x200]
push ecx
lea ecx, [ebp - 0x328]
call fcn.00622f80
push 0x29e
push 0x6f3fa8
lea ecx, [ebp - 0x328]
call fcn.00622f35
lea ecx, [ebp - 0x328]
call fcn.00622ff9
push 0x460
mov ecx, dword [ebp - 0x574]
call fcn.006217d9
mov dword [ebp - 0x578], eax
mov ecx, dword [ebp - 0x578]
call fcn.004081b0
mov dword [ebp - 0x57c], eax
cmp dword [ebp - 0x57c], 1
jne 0x4051aa
push ecx
mov ecx, esp
mov dword [ebp - 0x544], esp
lea edx, [ebp - 0x18]
push edx
call fcn.006222db
mov dword [ebp - 0x580], eax
mov ecx, dword [ebp - 0x574]
call fcn.0040575c
mov dword [ebp - 0x52c], 0
lea ecx, [ebp - 0x18]
call fcn.00401d90
mov dword [ebp - 0x584], eax
push 0
push 0x80
push 3
push 0
push 0
push bind
mov eax, dword [ebp - 0x584]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x528], eax
push 0
mov ecx, dword [ebp - 0x528]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x524], eax
push 4
push 0x3000
mov edx, dword [ebp - 0x524]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x530], eax
push 0
lea eax, [ebp - 0x52c]
push eax
mov ecx, dword [ebp - 0x524]
push ecx
mov edx, dword [ebp - 0x530]
push edx
mov eax, dword [ebp - 0x528]
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ecx, dword [ebp - 0x528]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0
push 0
mov edx, dword [ebp - 0x530]
push edx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0x752444
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0x752448
mov eax, dword [ebp - 0x530]
push eax
call fcn.005fb2d0
add esp, 0xc
push 0x400
mov ecx, dword [ebp - 0x524]
push ecx
mov edx, dword [ebp - 0x530]
push edx
call fcn.00404a33
add esp, 0xc
mov dword [ebp - 0x538], 0
lea ecx, [ebp - 0x18]
call fcn.00401d90
mov dword [ebp - 0x588], eax
push 0
push 0
push 2
push 0
push 1
push 0x40000000
mov eax, dword [ebp - 0x588]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x534], eax
push 0
lea ecx, [ebp - 0x538]
push ecx
mov edx, dword [ebp - 0x524]
push edx
mov eax, dword [ebp - 0x530]
push eax
mov ecx, dword [ebp - 0x534]
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov edx, dword [ebp - 0x534]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4053ca
mov dword [ebp - 4], 8
lea ecx, [ebp - 0x328]
call fcn.00622ff9
push 2
lea ecx, [ebp - 0x18]
call fcn.00401d90
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push ecx
mov ecx, esp
mov dword [ebp - 0x548], esp
lea eax, [ebp - 0x204]
push eax
call fcn.006222db
mov dword [ebp - 0x58c], eax
mov ecx, dword [ebp - 0x58c]
mov dword [ebp - 0x590], ecx
mov byte [ebp - 4], 0xb
push ecx
mov ecx, esp
mov dword [ebp - 0x54c], esp
push 0x75246c
call fcn.006225d4
mov dword [ebp - 0x594], eax
mov edx, dword [ebp - 0x594]
mov dword [ebp - 0x598], edx
mov byte [ebp - 4], 0xc
push ecx
mov ecx, esp
mov dword [ebp - 0x550], esp
push 0x752470
call fcn.006225d4
mov dword [ebp - 0x59c], eax
mov eax, dword [ebp - 0x59c]
mov dword [ebp - 0x5a0], eax
mov byte [ebp - 4], 8
call fcn.00408120
mov ecx, eax
add ecx, 0xc0
call fcn.0041a96a
push ecx
mov ecx, esp
mov dword [ebp - 0x554], esp
lea edx, [ebp - 0x208]
push edx
call fcn.006222db
mov dword [ebp - 0x5a4], eax
mov eax, dword [ebp - 0x5a4]
mov dword [ebp - 0x5a8], eax
mov byte [ebp - 4], 0xe
push ecx
mov ecx, esp
mov dword [ebp - 0x558], esp
push 0x752478
call fcn.006225d4
mov dword [ebp - 0x5ac], eax
mov ecx, dword [ebp - 0x5ac]
mov dword [ebp - 0x5b0], ecx
mov byte [ebp - 4], 0xf
push ecx
mov ecx, esp
mov dword [ebp - 0x55c], esp
push 0x752480
call fcn.006225d4
mov dword [ebp - 0x5b4], eax
mov edx, dword [ebp - 0x5b4]
mov dword [ebp - 0x5b8], edx
mov byte [ebp - 4], 8
call fcn.00408120
mov ecx, eax
add ecx, 0xc0
call fcn.0041a96a
push ecx
mov ecx, esp
mov dword [ebp - 0x560], esp
lea eax, [ebp - 0x1f8]
push eax
call fcn.006222db
mov dword [ebp - 0x5bc], eax
mov ecx, dword [ebp - 0x5bc]
mov dword [ebp - 0x5c0], ecx
mov byte [ebp - 4], 0x11
push ecx
mov ecx, esp
mov dword [ebp - 0x564], esp
push str.Port
call fcn.006225d4
mov dword [ebp - 0x5c4], eax
mov edx, dword [ebp - 0x5c4]
mov dword [ebp - 0x5c8], edx
mov byte [ebp - 4], 0x12
push ecx
mov ecx, esp
mov dword [ebp - 0x568], esp
push str.Build
call fcn.006225d4
mov dword [ebp - 0x5cc], eax
mov eax, dword [ebp - 0x5cc]
mov dword [ebp - 0x5d0], eax
mov byte [ebp - 4], 8
call fcn.00408120
mov ecx, eax
add ecx, 0xc0
call fcn.0041a96a
lea ecx, [ebp - 0x56c]
push ecx
lea ecx, [ebp - 0x520]
call fcn.00617b8e
mov dword [ebp - 0x5d4], eax
mov edx, dword [ebp - 0x5d4]
mov dword [ebp - 0x5d8], edx
mov byte [ebp - 4], 0x14
push 0
push 0x80
push 3
push 0
push 0
push bind
mov ecx, dword [ebp - 0x5d8]
call fcn.00401d90
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x1ec], eax
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x56c]
call fcn.00622566
push 0
mov eax, dword [ebp - 0x1ec]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x1ec]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x520]
call fcn.00408130
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x520]
call fcn.00408130
mov dword [ebp - 0x570], eax
mov edx, dword [ebp - 0x570]
push edx
call fcn.0061d6ce
add esp, 4
push 0x460
mov ecx, dword [ebp - 0x574]
call fcn.006217d9
mov ecx, eax
call fcn.004081b0
cmp eax, 1
jne 0x40568c
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x18]
push ecx
push 0x752498
push 0x7524ac
lea edx, [ebp - 0xe0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
jmp 0x4056ae
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x18]
push ecx
push 0x7524f0
push 0x752504
lea edx, [ebp - 0xe0]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
push 0x40
push 0x752544
lea eax, [ebp - 0xe0]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x328]
call fcn.00622d21
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x18]
call fcn.00622566
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x520]
call fcn.00408030
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x1f4]
call fcn.00622566
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1e8]
call fcn.00622566
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x208]
call fcn.00622566
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x314]
call fcn.00622566
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1f8]
call fcn.00622566
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x204]
call fcn.00622566
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret