Function at 0x10070aca
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
mov esi, ecx
push edi
push dword [esi + 0xf0]
call sym.archiveint.dll__archive_entry_hardlink_w_4
mov dword [ebp - 8], eax
test eax, eax
je 0x10070c90
mov ecx, eax
xor edi, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x10070af4
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
mov dword [ebp - 0xc], eax
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_malloc]
mov ebx, eax
pop ecx
test ebx, ebx
jne 0x10070b33
push 0x10020c54
push 0xc
push esi
call sym.archiveint.dll_archive_set_error
add esp, 0xc
or eax, 0xffffffff
jmp 0x10070f4f
push dword [ebp - 0xc]
push dword [ebp - 8]
push ebx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov edx, ebx
mov ecx, esi
call fcn.100714eb
mov dword [ebp - 0xc], eax
test eax, eax
je 0x10070b62
push ebx
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_free]
mov eax, dword [ebp - 0xc]
pop ecx
jmp 0x10070f4f
mov ecx, ebx
call fcn.10069d6e
push ebx
mov dword [ebp - 4], eax
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_free]
pop ecx
mov ecx, dword [esi + 0xf4]
call fcn.10069d6e
mov ebx, eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x10070c66
test ebx, ebx
je 0x10070c66
test dword [esi + 0x11c], 0x40000
je 0x10070bc1
push ebx
call dword [sym.imp.api_ms_win_core_file_l1_1_0.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x10070bbe
mov ecx, ebx
test al, 0x10
je 0x10070bb9
call fcn.100705df
jmp 0x10070bbe
call fcn.1007059a
mov eax, dword [ebp - 4]
mov edx, eax
mov ecx, ebx
call fcn.1006f504
test eax, eax
jne 0x10070bf0
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
mov ecx, eax
call fcn.1006a813
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
mov eax, dword [eax]
mov dword [ebp - 8], eax
test eax, eax
jne 0x10070c76
jmp 0x10070bf3
mov dword [ebp - 8], edi
cmp dword [esi + 0x144], edi
jg 0x10070c13
jl 0x10070c05
cmp dword [esi + 0x140], edi
ja 0x10070c13
mov dword [esi + 0x114], edi
mov dword [esi + 0x118], edi
jmp 0x10070c76
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], 0x18
push eax
push 5
push edi
xorps xmm0, xmm0
mov dword [ebp - 0x20], 0x80
push 0x40000000
push ebx
movlpd qword [ebp - 0x1c], xmm0
movlpd qword [ebp - 0x14], xmm0
call dword [sym.imp.api_ms_win_core_file_l1_2_0.dll_CreateFile2]
mov dword [esi + 0x120], eax
cmp eax, 0xffffffff
jne 0x10070c76
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
mov ecx, eax
call fcn.1006a813
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
mov eax, dword [eax]
mov dword [ebp - 8], eax
jmp 0x10070c76
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
or dword [ebp - 8], 0xffffffff
mov dword [eax], 0x16
push dword [ebp - 4]
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_free]
pop ecx
push ebx
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_free]
mov eax, dword [ebp - 8]
pop ecx
jmp 0x10070f4f
push dword [esi + 0xf0]
call sym.archiveint.dll__archive_entry_symlink_w_4
mov ebx, eax
test ebx, ebx
je 0x10070d15
push dword [esi + 0xf4]
call dword [sym.imp.api_ms_win_core_file_l1_1_0.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x10070cc8
mov ecx, dword [esi + 0xf4]
test al, 0x10
je 0x10070cc3
call fcn.100705df
jmp 0x10070cc8
call fcn.1007059a
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
xor edi, edi
mov edx, ebx
mov dword [eax], edi
mov eax, dword [esi + 0xf0]
mov ecx, dword [esi + 0xf4]
push dword [eax + 0x320]
call fcn.1006f622
test eax, eax
jne 0x10070d0e
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
cmp dword [eax], edi
jne 0x10070d06
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
mov ecx, eax
call fcn.1006a813
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
mov edi, dword [eax]
mov eax, edi
jmp 0x10070f4f
movzx ecx, word [esi + 0x14c]
mov ax, word [esi + 0x60]
mov edx, ecx
and edx, 0xfff
not ax
and ax, dx
mov dword [ebp - 4], edx
mov edx, 0x1ff
and ecx, 0xf000
and ax, dx
movzx ebx, ax
cmp ecx, 0x1000
je 0x10070f4c
cmp ecx, 0x2000
je 0x10070f4c
cmp ecx, 0x4000
je 0x10070e79
cmp ecx, 0x6000
je 0x10070f4c
mov eax, dword [esi + 0xf4]
lea ecx, [ebp - 0x24]
push ecx
xor ecx, ecx
mov dword [ebp - 8], eax
inc ecx
mov dword [ebp - 0x24], 0x18
push ecx
xor edi, edi
mov dword [ebp - 0x20], 0x80
push edi
xorps xmm0, xmm0
mov dword [esi + 0x104], edi
push 0x40000000
push eax
movlpd qword [ebp - 0x1c], xmm0
movlpd qword [ebp - 0x14], xmm0
mov dword [ebp - 0xc], ecx
call dword [sym.imp.api_ms_win_core_file_l1_2_0.dll_CreateFile2]
mov dword [esi + 0x120], eax
cmp eax, 0xffffffff
jne 0x10070df8
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
cmp eax, 0x7b
jne 0x10070df8
mov ecx, dword [esi + 0xf4]
cmp dword [ebp - 8], ecx
jne 0x10070df8
call fcn.10069d6e
lea ecx, [ebp - 0x24]
mov dword [ebp - 8], eax
push ecx
push 1
push edi
push 0x40000000
push eax
call dword [sym.imp.api_ms_win_core_file_l1_2_0.dll_CreateFile2]
mov dword [esi + 0x120], eax
cmp dword [esi + 0x120], 0xffffffff
jne 0x10070e49
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
cmp eax, 5
jne 0x10070e3a
push dword [ebp - 8]
call dword [sym.imp.api_ms_win_core_file_l1_1_0.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x10070e3a
test al, 0x10
je 0x10070e2c
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
mov dword [eax], 0x15
jmp 0x10070e4c
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
mov dword [eax], 0xd
jmp 0x10070e4c
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
mov ecx, eax
call fcn.1006a813
jmp 0x10070e4c
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0xf4]
je 0x10070e5f
push eax
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_free]
pop ecx
mov edi, dword [ebp - 4]
cmp dword [ebp - 0xc], 0
je 0x10070f39
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__errno]
mov eax, dword [eax]
jmp 0x10070f4f
and ebx, 0x3d
xor edi, edi
or ebx, 0x1c0
push edi
mov dword [ebp - 8], ebx
mov ebx, dword [esi + 0xf4]
push ebx
call dword [sym.imp.api_ms_win_core_file_l1_1_0.dll_CreateDirectoryW]
test eax, eax
jne 0x10070ed7
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
cmp eax, 0x7b
jne 0x10070ec1
mov ecx, dword [esi + 0xf4]
cmp ebx, ecx
jne 0x10070ec1
call fcn.10069d6e
mov ebx, eax
push edi
push ebx
call dword [sym.imp.api_ms_win_core_file_l1_1_0.dll_CreateDirectoryW]
test eax, eax
jne 0x10070ed7
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
mov ecx, eax
call fcn.1006a813
or dword [ebp - 0xc], 0xffffffff
mov edi, dword [ebp - 4]
jmp 0x10070f21
mov ecx, dword [esi + 0x114]
mov edx, ecx
and edx, 4
mov dword [ebp - 0xc], edi
or edx, dword [esi + 0x118]
and ecx, 0xfffffffb
mov edi, dword [ebp - 4]
mov dword [esi + 0x118], edx
cmp word [ebp - 8], di
jne 0x10070f06
test byte [esi + 0x11c], 2
je 0x10070f15
mov eax, ecx
and eax, 0x34000000
or eax, edx
mov dword [esi + 0x118], eax
and ecx, 0xcbffffff
mov dword [esi + 0x114], ecx
cmp ebx, dword [esi + 0xf4]
je 0x10070f31
push ebx
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_free]
pop ecx
mov ebx, dword [ebp - 8]
jmp 0x10070e62
cmp bx, di
jne 0x10070f48
and dword [esi + 0x114], 0xcbffffff
xor eax, eax
jmp 0x10070f4f
push 0x16
pop eax
pop edi
pop esi
pop ebx
leave
ret