Function at 0x502a80
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x60c54c
mov eax, dword fs:[0]
push eax
sub esp, 0x54
push ebx
push esi
push edi
mov eax, dword [0x7f206c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], 0
mov ebx, 1
mov eax, dword [eax]
mov ecx, dword [ebp + 0xc]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x2c], eax
mov eax, dword [eax]
mov dword [ebp - 0x1c], eax
lea esi, [eax - 8]
mov dword [ebp - 0x14], esi
cmp esi, 0x7a1354
je 0x502add
mov ecx, ebx
lock xadd dword [esi], ecx
mov dword [ebp - 4], 0
cmp byte [eax], 0
jne 0x502b0c
mov edi, dword [ebp + 8]
mov dword [edi], 0x7a135c
cmp esi, 0x7a1354
je 0x503159
or ecx, 0xffffffff
lock xadd dword [esi], ecx
test ecx, ecx
jmp 0x50314e
mov edi, dword [ebp + 0x10]
push ecx
mov ecx, esp
mov dword [ecx], eax
lea eax, [ebp - 0x10]
push eax
mov ecx, edi
call fcn.00527e80
push edi
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 1
call fcn.00523d90
test al, al
jne 0x502b8b
push ecx
lea eax, [ebp - 0x1c]
mov ecx, esp
push eax
mov edx, str.Entry
call fcn.005189d0
mov edx, str._is_outside_the_target_directory
lea ecx, [ebp + 0xc]
call fcn.005268e0
mov edx, eax
mov edi, dword [ebp + 8]
mov ecx, edi
call fcn.0051ea10
mov ecx, dword [ebp + 0xc]
or ebx, 0xffffffff
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x50311f
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x50311f
push ecx
call fcn.004a8172
add esp, 4
jmp 0x50311f
push 0x2f
lea ecx, [ebp - 0x1c]
call fcn.00517a00
test al, al
jne 0x503110
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.00517a00
test al, al
jne 0x503110
push dword [ebp + 0xc]
mov ecx, dword [ebp - 0x18]
call fcn.005033a0
mov edi, eax
mov dword [ebp - 0x18], edi
mov byte [ebp - 4], 2
test edi, edi
jne 0x502bdf
push str.Failed_to_open_the_zip_file_for_reading
lea ecx, [ebp + 0xc]
call fcn.0041d340
add esp, 4
lea edx, [ebp + 0xc]
jmp 0x502b50
lea ecx, [ebp - 0x10]
call fcn.00501f40
test al, al
je 0x502cb2
cmp dword [ebp + 0x14], 0
jne 0x502c5a
mov eax, dword [ebp + 8]
mov ecx, edi
push 1
mov dword [eax], 0x7a135c
mov eax, dword [edi]
call dword [eax]
or ebx, 0xffffffff
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502c2a
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502c2a
push ecx
call fcn.004a8172
add esp, 4
cmp esi, 0x7a1354
je 0x502c43
lock xadd dword [esi], ebx
test ebx, ebx
jne 0x502c43
push esi
call fcn.004a8172
add esp, 4
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
lea ecx, [ebp - 0x10]
call fcn.00501cf0
test al, al
jne 0x502cb2
lea eax, [ebp - 0x10]
mov edx, 0x79cea4
push eax
lea ecx, [ebp + 0xc]
call fcn.005189d0
mov ecx, dword [ebp + 8]
mov edx, eax
call fcn.0051ea10
mov ecx, dword [ebp + 0xc]
or ebx, 0xffffffff
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502ca5
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502ca5
push ecx
call fcn.004a8172
add esp, 4
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
jmp 0x502c09
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x10]
call fcn.00523ef0
mov esi, dword [eax]
mov dword [ebp - 0x20], 2
mov dword [ebp + 0xc], esi
lea eax, [esi - 8]
cmp eax, 0x7a1354
je 0x502cd8
lock xadd dword [eax], ebx
mov dword [ebp - 4], 4
or ebx, 0xffffffff
mov ecx, esi
mov dword [ebp + 0x14], ecx
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
cmp ecx, eax
je 0x502d9b
push eax
push esi
call fcn.0041c700
add esp, 8
test eax, eax
je 0x502d98
lea edx, [ebp + 0xc]
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x30]
call fcn.00418480
push dword [eax]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov byte [ebp - 4], 4
cmp eax, 0xffffffff
je 0x502d2d
test eax, 0x400
jne 0x502d71
lea eax, [ebp - 0x24]
push eax
lea ecx, [ebp + 0xc]
call fcn.00523ef0
mov ecx, dword [ebp + 0xc]
mov esi, dword [eax]
mov dword [eax], ecx
mov ecx, esi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff8
mov dword [ebp + 0xc], esi
mov dword [ebp + 0x14], ecx
cmp edx, 0x7a1354
je 0x502ce7
mov eax, ebx
lock xadd dword [edx], eax
mov dword [ebp + 0x14], ecx
test eax, eax
jne 0x502ce7
push edx
call fcn.004a8172
add esp, 4
jmp 0x502ce2
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502d92
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502d92
push ecx
call fcn.004a8172
add esp, 4
mov byte [ebp + 0xf], 1
jmp 0x502dbd
mov ecx, dword [ebp + 0x14]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502db9
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502db9
push ecx
call fcn.004a8172
add esp, 4
mov byte [ebp + 0xf], 0
mov dword [ebp - 4], 2
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502de5
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502de5
push ecx
call fcn.004a8172
add esp, 4
cmp byte [ebp + 0xf], 0
je 0x502e88
lea eax, [ebp - 0x10]
mov edx, str.Parent_directory_leads_through_symlink_for_target_file:
push eax
lea ecx, [ebp + 0xc]
call fcn.005189d0
mov esi, dword [ebp + 8]
mov edx, eax
mov ecx, esi
call fcn.0051ea10
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502e2d
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502e2d
push ecx
call fcn.004a8172
add esp, 4
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502e56
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502e56
push ecx
call fcn.004a8172
add esp, 4
mov ecx, dword [ebp - 0x14]
cmp ecx, 0x7a1354
je 0x502e72
lock xadd dword [ecx], ebx
test ebx, ebx
jne 0x502e72
push ecx
call fcn.004a8172
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
lea eax, [ebp + 0x14]
push eax
lea ecx, [ebp - 0x10]
call fcn.00523ef0
lea ecx, [ebp + 0x10]
mov byte [ebp - 4], 6
push ecx
mov ecx, eax
call fcn.00527c40
mov ecx, dword [ebp + 0x10]
add ecx, 0xfffffff8
mov eax, dword [eax]
mov al, byte [eax]
mov byte [ebp + 0xf], al
cmp ecx, 0x7a1354
je 0x502ecb
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502ecb
push ecx
call fcn.004a8172
add esp, 4
mov byte [ebp - 4], 2
mov ecx, dword [ebp + 0x14]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502ef0
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502ef0
push ecx
call fcn.004a8172
add esp, 4
cmp byte [ebp + 0xf], 0
je 0x502f6f
lea eax, [ebp + 0x10]
push eax
lea ecx, [ebp - 0x10]
call fcn.00523ef0
push eax
mov edx, str.Failed_to_create_target_folder:
mov byte [ebp - 4], 7
lea ecx, [ebp + 0xc]
call fcn.005189d0
mov esi, dword [ebp + 8]
mov edx, eax
mov ecx, esi
call fcn.0051ea10
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502f41
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502f41
push ecx
call fcn.004a8172
add esp, 4
mov ecx, dword [ebp + 0x10]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502f62
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502f62
push ecx
call fcn.004a8172
add esp, 4
lea ecx, [ebp - 0x18]
call fcn.00403890
jmp 0x502e35
mov esi, dword [ebp - 0x2c]
cmp byte [esi + 0x18], 0
je 0x50304a
mov eax, dword [edi]
lea ecx, [ebp + 0x10]
push ecx
mov ecx, edi
call dword [eax + 0x4c]
push 0x5c
push 0x2f
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 8
push ecx
mov ecx, eax
call fcn.00517c70
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp + 0x10]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x502fbf
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x502fbf
push ecx
call fcn.004a8172
add esp, 4
push ecx
lea edx, [ebp + 0xc]
lea ecx, [ebp - 0x10]
call fcn.00522220
add esp, 4
test al, al
jne 0x503018
lea eax, [ebp + 0xc]
mov edx, str.Failed_to_create_symbolic_link:
push eax
lea ecx, [ebp + 0x14]
call fcn.005189d0
mov esi, dword [ebp + 8]
mov edx, eax
mov ecx, esi
call fcn.0051ea10
mov ecx, dword [ebp + 0x14]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x503010
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x503010
push ecx
call fcn.004a8172
add esp, 4
mov ecx, dword [ebp + 0xc]
jmp 0x502f44
mov byte [ebp - 4], 2
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x5030d0
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x5030d0
push ecx
call fcn.004a8172
add esp, 4
jmp 0x5030d0
push 0x4000
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x60]
call fcn.00521f60
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x50]
cmp byte [eax], 0
je 0x5030ba
lea eax, [ebp - 0x10]
mov edx, str.Failed_to_write_to_target_file:
push eax
lea ecx, [ebp + 0xc]
call fcn.005189d0
mov esi, dword [ebp + 8]
mov edx, eax
mov ecx, esi
call fcn.0051ea10
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x5030a5
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x5030a5
push ecx
call fcn.004a8172
add esp, 4
lea ecx, [ebp - 0x60]
call fcn.00521e80
lea ecx, [ebp - 0x18]
call fcn.00403890
jmp 0x502e35
mov edx, edi
lea ecx, [ebp - 0x60]
call fcn.00514c90
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 2
call fcn.00521e80
push dword [esi + 0x14]
lea ecx, [ebp - 0x10]
push dword [esi + 0x10]
call fcn.005238e0
push dword [esi + 0x14]
lea ecx, [ebp - 0x10]
push dword [esi + 0x10]
call fcn.00523920
push dword [esi + 0x14]
lea ecx, [ebp - 0x10]
push dword [esi + 0x10]
call fcn.00523900
mov esi, dword [ebp + 8]
lea ecx, [ebp - 0x18]
mov dword [esi], 0x7a135c
call fcn.00403890
jmp 0x502e35
mov edi, dword [ebp + 8]
lea ecx, [ebp - 0x10]
push edi
call fcn.00527c40
or ebx, 0xffffffff
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff8
cmp ecx, 0x7a1354
je 0x503140
mov eax, ebx
lock xadd dword [ecx], eax
test eax, eax
jne 0x503140
push ecx
call fcn.004a8172
add esp, 4
cmp esi, 0x7a1354
je 0x503159
lock xadd dword [esi], ebx
test ebx, ebx
jne 0x503159
push esi
call fcn.004a8172
add esp, 4
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14