Function at 0x404a30
Capabilities:
Get common file path
Set current directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x431193
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x27c
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x30], esi
mov eax, dword [esi + 0x3c]
test eax, eax
jne 0x404a7f
mov esi, dword [esi + 0xdc]
test esi, esi
je 0x404cce
mov eax, dword [esi]
push str.Zip_entry_is_no_longer_memory_mapped.__6_
mov ecx, esi
call dword [eax + 0x10]
jmp 0x404cce
mov edi, dword [esi + 0xdc]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x38], edi
call fcn.00403010
mov ecx, dword [esi + 0x94]
mov ebx, eax
mov dword [ebp + 0xc], 1
call fcn.00403f50
test al, 0x10
je 0x404be5
mov al, byte [ebp + 8]
test al, al
je 0x404acb
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esi + 0x94]
test eax, eax
je 0x404be5
lea ecx, [ebp - 0x288]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push ebx
lea ecx, [ebp - 0x50]
call fcn.0040f610
lea ecx, [ebp - 0x50]
mov dword [ebp - 4], 0
call fcn.0040f940
test al, al
push edi
je 0x404ba0
push ebx
call fcn.00411860
add esp, 8
test eax, eax
jne 0x404b1c
mov dword [ebp + 0xc], eax
lea edx, [ebp - 0x184]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0
push 0x2000000
push 3
push 0
push 5
lea eax, [ebp - 0x184]
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x404bb3
lea ecx, [ebp - 0x60]
push ecx
mov ecx, dword [esi + 0x94]
call fcn.00404010
mov ecx, dword [esi + 0x94]
push eax
call fcn.00404000
push eax
call dword [sym.imp.KERNEL32.dll_DosDateTimeToFileTime]
lea edx, [ebp - 0x34]
lea eax, [ebp - 0x60]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_LocalFileTimeToFileTime]
lea ecx, [ebp - 0x34]
lea edx, [ebp - 0x34]
push ecx
lea eax, [ebp - 0x34]
push edx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x404bb3
mov ecx, dword [ebp - 0x48]
push ecx
call fcn.0041a340
add esp, 8
test eax, eax
jne 0x404bb3
mov dword [ebp + 0xc], eax
lea edx, [ebp - 0x288]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [ebp - 0x50]
mov dword [ebp - 4], 0xffffffff
call fcn.0040f750
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea ecx, [ebp - 0x2c]
call fcn.0040f6e0
push ebx
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 1
call fcn.0040f430
mov al, byte [ebp + 8]
test al, al
je 0x404c0c
lea ecx, [ebp - 0x2c]
call fcn.0040fb30
lea ecx, [ebp - 0x2c]
call fcn.0040f940
test al, al
jne 0x404c37
mov eax, dword [esi + 0xdc]
mov ecx, dword [ebp - 0x24]
push eax
push 0x439218
push ecx
call fcn.0041abd0
mov ebx, eax
add esp, 0xc
mov dword [ebp - 0x14], ebx
jmp 0x404c54
mov edx, dword [esi + 0xdc]
mov eax, dword [ebp - 0x24]
push edx
push 0x439218
push eax
call fcn.00411b90
add esp, 0xc
mov dword [ebp - 0x14], eax
mov ebx, eax
test ebx, ebx
jne 0x404ce3
mov ecx, dword [esi + 0xdc]
test ecx, ecx
je 0x404c84
mov edx, dword [ecx]
push str.Failed_to_create_output_file
call dword [edx + 0x10]
mov ecx, dword [esi + 0xdc]
mov edx, dword [ebp - 0x24]
push edx
push str.sbFilename
mov eax, dword [ecx]
call dword [eax + 0x2c]
test edi, edi
je 0x404ca4
mov edx, dword [edi]
push str.Failed_to_open_file
mov ecx, edi
call dword [edx + 0x10]
mov ecx, dword [ebp - 0x24]
mov eax, dword [edi]
push ecx
push str.filename
mov ecx, edi
call dword [eax + 0x2c]
mov edi, dword [ebp + 0x10]
test edi, edi
je 0x404cbf
push 0x44c0b4
mov ecx, esi
call fcn.004050f0
push eax
mov ecx, edi
call fcn.004103b0
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040f750
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esi + 0xac]
test eax, eax
je 0x404eab
lea ecx, [ebp - 0x154]
call fcn.00406280
mov eax, dword [ebp + 0x10]
mov byte [ebp - 4], 2
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp + 0x14]
test eax, eax
mov dword [ebp - 0xa0], edi
je 0x404d22
push eax
lea ecx, [ebp - 0x98]
call fcn.0040f9b0
mov eax, dword [esi + 0xbc]
test eax, eax
je 0x404d5b
mov ecx, dword [esi + 0xc0]
mov byte [ebp - 0x10a], 1
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x148], ecx
call fcn.00402db0
mov eax, dword [eax + 8]
lea ecx, [ebp - 0x13c]
push eax
call fcn.0040f9b0
jmp 0x404d62
mov byte [ebp - 0x10a], 0
mov ecx, esi
call fcn.00404280
test al, al
je 0x404daa
call fcn.00402db0
mov eax, dword [eax + 8]
lea ecx, [ebp - 0x13c]
push eax
call fcn.0040f9b0
mov ecx, esi
call fcn.00404230
mov edx, dword [esi + 0x56]
xor ecx, ecx
mov cx, word [esi + 0x52]
mov byte [ebp - 0x14e], 1
mov dword [ebp - 0xb4], edx
mov dword [ebp - 0xb0], ecx
mov byte [ebp - 0xac], al
mov ecx, dword [esi + 0xac]
mov edx, dword [esi + 0x44]
push ecx
mov ecx, dword [esi + 0x40]
push edx
mov dword [ebp - 0xec], ebx
mov byte [ebp - 0x14f], 1
call fcn.0041b650
test eax, eax
jne 0x404ded
mov esi, dword [esi + 0xdc]
test esi, esi
je 0x404e86
mov eax, dword [esi]
push str.Failed_to_access_compressed_data
mov ecx, esi
call dword [eax + 0x10]
jmp 0x404e86
mov ecx, dword [esi + 0xac]
push ecx
push eax
lea ecx, [ebp - 0x154]
call fcn.00406230
cmp word [esi + 0x50], 0
je 0x404e0e
mov byte [ebp - 0x10c], 1
lea edx, [ebp + 0xb]
lea eax, [ebp - 0x5c]
push edx
push eax
lea ecx, [ebp - 0x154]
mov byte [ebp - 0x10b], 0
mov dword [ebp - 0x5c], 0
mov byte [ebp + 0xb], 0
mov byte [ebp + 0x13], 0
mov byte [ebp - 4], 3
call fcn.00407bb0
mov bl, al
jmp 0x404e5f
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], 2
push eax
call fcn.00427a3b
add esp, 4
test bl, bl
jne 0x404e9a
test edi, edi
je 0x404e86
mov edx, dword [edi]
push str.Unzip_failed
mov ecx, edi
call dword [edx + 0x10]
lea ecx, [ebp - 0x154]
mov byte [ebp - 4], 1
call fcn.00406390
jmp 0x404cbf
lea ecx, [ebp - 0x154]
mov byte [ebp - 4], 1
call fcn.00406390
jmp 0x404eb4
push ebx
call fcn.00427a3b
add esp, 4
mov eax, dword [ebp - 0x24]
push 0
push 0
push 3
push 0
push 0
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x404f6e
lea ecx, [ebp - 0x4c]
call fcn.00410430
mov edx, dword [ebp - 0x24]
lea ecx, [ebp - 0x4c]
push ecx
push edx
mov byte [ebp - 4], 5
call fcn.0041a6d0
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x44]
add esp, 8
shr eax, 1
push eax
push ecx
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
push 0
push 0x80
push 3
push 0
push 0
push 0xc0000000
push eax
mov dword [ebp + 8], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edx, dword [ebp + 8]
mov ebx, eax
push edx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp ebx, 0xffffffff
jne 0x404f62
test edi, edi
je 0x404f51
mov eax, dword [edi]
push str.Failed_to_open_file_to_set_attributes
mov ecx, edi
call dword [eax + 0x10]
mov eax, dword [ebp - 0x24]
mov edx, dword [edi]
push eax
push str.filename
mov ecx, edi
call dword [edx + 0x2c]
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 1
call fcn.00410720
jmp 0x404cbf
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 1
call fcn.00410720
mov dx, word [esi + 0x52]
mov ax, word [esi + 0x54]
lea ecx, [ebp - 0x68]
push ecx
push edx
push eax
call dword [sym.imp.KERNEL32.dll_DosDateTimeToFileTime]
lea ecx, [ebp - 0x58]
lea edx, [ebp - 0x68]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_LocalFileTimeToFileTime]
lea eax, [ebp - 0x58]
lea ecx, [ebp - 0x58]
push eax
lea edx, [ebp - 0x58]
push ecx
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
test eax, eax
jne 0x405006
test edi, edi
je 0x404fff
lea ecx, [ebp - 0x50]
call fcn.0040f6e0
push str.SetFileTime:
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 6
call fcn.0040f430
lea ecx, [ebp - 0x50]
call fcn.0040fab0
mov eax, dword [edi]
push str.Failed_to_set_file_time
mov ecx, edi
call dword [eax + 0x10]
mov eax, dword [ebp - 0x48]
mov edx, dword [edi]
push eax
mov ecx, edi
call dword [edx + 0x10]
mov eax, dword [ebp - 0x24]
mov edx, dword [edi]
push eax
push str.filename
mov ecx, edi
call dword [edx + 0x2c]
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 1
call fcn.0040f750
mov dword [ebp + 0xc], 0
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp + 0xc]
xor ebx, ebx
cmp eax, ebx
je 0x404cbf
mov esi, dword [esi + 0x94]
cmp esi, ebx
je 0x405097
mov ecx, esi
call fcn.00403f50
cmp eax, 0x20
je 0x40509a
mov ecx, dword [ebp - 0x24]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
test eax, eax
jne 0x40509a
cmp edi, ebx
je 0x405097
lea ecx, [ebp - 0x80]
call fcn.0040f6e0
push str.SetFileAttributes:
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], 7
call fcn.0040f430
lea ecx, [ebp - 0x80]
call fcn.0040fab0
mov edx, dword [edi]
push str.Failed_to_set_file_attributes
mov ecx, edi
call dword [edx + 0x10]
mov ecx, dword [ebp - 0x78]
mov eax, dword [edi]
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov eax, dword [ebp - 0x24]
mov edx, dword [edi]
push eax
push str.filename
mov ecx, edi
call dword [edx + 0x2c]
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], 1
call fcn.0040f750
mov dword [ebp + 0xc], ebx
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040f750
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x10