Function at 0x401c00
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov ebx, dword [esp + 0x40]
cmp dword [ebx + 0x506c], 1
jne 0x401e5e
mov eax, dword [esp + 0x44]
cmp byte [eax + 0x11], 0x6e
je 0x401d70
mov eax, dword [esp + 0x44]
add eax, 0x12
mov dword [esp + 0x1c], eax
mov dword [esp + 4], eax
lea eax, [ebx + 0x3068]
mov dword [esp], eax
call fcn.00408a50
mov dword [esp + 0x18], eax
test eax, eax
je 0x401e74
lea eax, [ebx + 0x68]
mov dword [esp + 4], 0x41a161
mov dword [esp], eax
call fcn.004049d0
mov ebp, eax
test eax, eax
je 0x401de8
mov eax, dword [esp + 0x44]
mov dword [esp + 8], 0
mov eax, dword [eax + 4]
add eax, dword [ebx]
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.0040fc50
test eax, eax
js 0x401e38
mov eax, dword [esp + 0x44]
cmp byte [eax + 0x10], 1
je 0x401d90
mov dword [esp], 0x2000
call sub.msvcrt.dll_malloc
mov ebx, eax
test eax, eax
je 0x401e92
mov eax, dword [esp + 0x44]
xor edi, edi
mov esi, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x401d0a
jmp 0x401e08
mov eax, dword [esp + 0x18]
mov dword [esp + 8], 1
mov dword [esp], ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 4], eax
call sub.msvcrt.dll_fwrite
test eax, eax
je 0x401e10
sub esi, dword [esp + 0x10]
sbb edi, dword [esp + 0x14]
mov eax, edi
or eax, esi
je 0x401e08
xor eax, eax
mov edx, 0x2000
mov dword [esp + 0xc], ebp
cmp edx, esi
mov ecx, eax
mov dword [esp + 8], 1
sbb ecx, edi
mov dword [esp], ebx
cmovae edx, esi
cmovae eax, edi
mov dword [esp + 4], edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
call sub.msvcrt.dll_fread
test eax, eax
jne 0x401cd0
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.Failed_to_extract__s:_failed_to_read_data_chunk__n
mov dword [esp], str.fread
mov dword [esp + 8], eax
call fcn.00403100
mov esi, 0xffffffff
mov dword [esp], ebx
call sub.msvcrt.dll_free
jmp 0x401da6
mov edx, eax
mov eax, ebx
call fcn.00401b50
mov esi, eax
test eax, eax
js 0x401dc8
add esp, 0x2c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], 0
mov ecx, dword [esp + 0x18]
mov edx, eax
mov eax, ebp
call fcn.00401600
mov esi, eax
mov dword [esp], ebp
call sub.msvcrt.dll_fclose
mov eax, dword [esp + 0x18]
mov dword [esp], eax
call sub.msvcrt.dll_fclose
add esp, 0x2c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x44]
mov dword [esp], str.Failed_to_create_symbolic_link__s__n
lea ebp, [eax + 0x12]
mov dword [esp + 4], ebp
call fcn.00402fa0
jmp 0x401d7f
mov eax, dword [esp + 0x1c]
mov dword [esp], str.Failed_to_extract__s:_failed_to_open_archive_file__n
mov esi, 0xffffffff
mov dword [esp + 4], eax
call fcn.00402fa0
jmp 0x401dae
xor esi, esi
jmp 0x401d62
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.Failed_to_extract__s:_failed_to_write_data_chunk__n
mov dword [esp], str.fwrite
mov dword [esp + 8], eax
call fcn.00403100
jmp 0x401d5d
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.Failed_to_extract__s:_failed_to_seek_to_the_entrys_data__n
mov dword [esp], str.fseek
mov dword [esp + 8], eax
call fcn.00403100
mov esi, 0xffffffff
jmp 0x401da6
mov dword [esp], str.pyi_arch_extract2fs_was_called_before_temporary_directory_was_initialized__n
call fcn.00402fa0
mov esi, 0xffffffff
jmp 0x401d7f
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.Failed_to_extract__s:_failed_to_open_target_file__n
mov dword [esp], str.fopen
mov dword [esp + 8], eax
call fcn.00403100
jmp 0x401e6a
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.Failed_to_extract__s:_failed_to_allocate_temporary_buffer__n
mov dword [esp], str.malloc
mov dword [esp + 8], eax
call fcn.00403100
jmp 0x401e54