Function at 0x4046f0
Capabilities:
Read file on windows

Disassembly:
push ecx
mov eax, dword [esp + 8]
push ebx
push ebp
push esi
test eax, eax
push edi
mov dword [esp + 0x10], 0
jbe 0x4051d6
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
jmp 0x404717
mov eax, dword [esp + 0x1c]
mov ebp, dword [eax]
inc ebp
mov dword [eax], ebp
mov eax, dword [esp + 0x10]
mov edx, dword [0x439b3c]
shl eax, 5
add eax, 0x429300
mov dword [0x429b00], eax
mov esi, dword [eax]
add esi, edx
mov edi, esi
and edi, 0x80001fff
jns 0x404749
dec edi
or edi, 0xffffe000
inc edi
mov ebp, esi
sub ebp, edi
test esi, esi
jge 0x404835
mov eax, dword [0x439b2c]
push 0x401
push str.___please_check_that_you_have_transferred_or_created_the_zipfile_in_the_n__appropriate_BINARY_mode_and_that_you_have_compiled_UnZip_properly__n
push eax
push str.error___s_:__attempt_to_seek_before_beginning_of_zipfile_n_s
push 0x429b04
call fcn.00412920
add esp, 0x10
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
mov ecx, dword [esp + 0x2c]
add esp, 0x10
mov ebx, 2
cmp dword [ecx], 1
jne 0x404a38
mov eax, dword [0x439b3c]
test eax, eax
je 0x404a38
push 0x401
push str.___attempting_to_re_compensate__n
push 0x429b04
call fcn.00412920
add esp, 8
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
mov eax, dword [esp + 0x34]
mov edx, dword [0x439b3c]
add esp, 0x10
mov dword [eax], edx
mov ecx, dword [0x429b00]
mov dword [0x439b3c], 0
mov esi, dword [ecx]
mov edi, esi
and edi, 0x80001fff
jns 0x404805
dec edi
or edi, 0xffffe000
inc edi
mov ebp, esi
sub ebp, edi
test esi, esi
jge 0x404835
mov edx, dword [0x439b2c]
push 0x401
push str.___please_check_that_you_have_transferred_or_created_the_zipfile_in_the_n__appropriate_BINARY_mode_and_that_you_have_compiled_UnZip_properly__n
push edx
push str.error___s_:__attempt_to_seek_before_beginning_of_zipfile_n_s
push 0x429b04
call fcn.00412920
add esp, 0x10
jmp 0x404a24
cmp ebp, dword [0x439b38]
je 0x4048a2
mov eax, dword [0x439b30]
push 0
push ebp
push eax
call fcn.0041908b
mov ecx, dword [0x439b0c]
mov edx, dword [0x439b30]
push 0x2000
push ecx
push edx
mov dword [0x439b38], eax
call fcn.0041b5e5
add esp, 0x18
mov dword [0x439b14], eax
test eax, eax
jg 0x40488b
mov eax, dword [esp + 0x1c]
push 0x401
push ebp
push 0x4250b8
mov ecx, dword [eax]
push ecx
jmp 0x404a12
mov edx, dword [0x439b0c]
add edx, edi
sub eax, edi
mov dword [0x439b10], edx
mov dword [0x439b14], eax
jmp 0x4048c6
mov ecx, dword [0x439b10]
mov eax, dword [0x439b0c]
mov edx, dword [0x439b14]
sub ecx, eax
sub ecx, edi
add edx, ecx
add eax, edi
mov dword [0x439b14], edx
mov dword [0x439b10], eax
push 4
push 0x4292f0
call fcn.004068d0
add esp, 8
test eax, eax
jne 0x4048ef
mov edx, dword [esp + 0x1c]
push 0x401
push esi
push 0x4250b4
mov eax, dword [edx]
jmp 0x404a11
push 4
push 0x42519c
push 0x4292f0
call fcn.00412a00
add esp, 0xc
test eax, eax
je 0x404a57
mov edi, dword [esp + 0x1c]
push 0x401
push esi
push str.local_header_sig
mov ecx, dword [edi]
push ecx
push str.file__lu:__bad_zipfile_offset___s_:___ld_n
push 0x429b04
call fcn.00412920
add esp, 0x14
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
mov eax, dword [edi]
add esp, 0x10
cmp eax, 1
mov eax, dword [0x439b3c]
mov ebx, 2
jne 0x40495a
test eax, eax
jne 0x404973
jmp 0x404962
test eax, eax
jne case.0x404fc0.69
mov edx, dword [esp + 0x24]
cmp dword [edx], 0
je case.0x404fc0.69
mov edi, dword [esp + 0x1c]
push 0x401
push str.___attempting_to_re_compensate__n
push 0x429b04
call fcn.00412920
add esp, 8
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
mov eax, dword [0x439b3c]
add esp, 0x10
test eax, eax
je 0x4049b9
mov ecx, dword [esp + 0x24]
mov dword [ecx], eax
mov dword [0x439b3c], 0
jmp 0x4049c4
mov edx, dword [esp + 0x24]
mov eax, dword [edx]
mov dword [0x439b3c], eax
mov ecx, dword [0x429b00]
mov edx, dword [ecx]
push edx
call fcn.00406ae0
add esp, 4
test eax, eax
jne 0x404a42
push 4
push 0x4292f0
call fcn.004068d0
add esp, 8
test eax, eax
je 0x404a47
push 4
push 0x42519c
push 0x4292f0
call fcn.00412a00
add esp, 0xc
test eax, eax
je 0x404a5b
mov eax, dword [edi]
push 0x401
push esi
push str.local_header_sig
push eax
push str.file__lu:__bad_zipfile_offset___s_:___ld_n
push 0x429b04
call fcn.00412920
add esp, 0x14
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
mov ebx, 3
jmp case.0x404fc0.69
cmp eax, 3
je 0x404a38
mov ecx, dword [edi]
push 0x401
push esi
push 0x4250b4
push ecx
jmp 0x404a12
mov edi, dword [esp + 0x1c]
call fcn.0040b740
mov esi, eax
test esi, esi
je 0x404a9b
mov edx, dword [edi]
push 0x421
push edx
push str.file__lu:__bad_local_header_n
push 0x429b04
call fcn.00412920
add esp, 0xc
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
mov ebx, esi
jmp case.0x404fc0.69
xor eax, eax
push 6
mov ax, word [0x439b5e]
push eax
call fcn.00407860
add esp, 8
test eax, eax
je 0x404ae4
cmp eax, ebx
jle 0x404ab8
mov ebx, eax
cmp eax, 1
jle 0x404ae4
push 0x401
push 0x4250ac
push 0x431b04
push 0x439c08
call fcn.00406640
add esp, 8
push eax
push str._s:__bad_filename_length___s__n
jmp 0x40514b
mov ecx, dword [0x429b00]
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x404bd1
mov esi, 0x439c08
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404b1e
test cl, cl
je 0x404b1a
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404b1e
add eax, 2
add esi, 2
test cl, cl
jne 0x404afa
xor eax, eax
jmp 0x404b23
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404bb3
push 0x401
push 0x431b04
push 0x439c08
call fcn.00406640
add esp, 8
push eax
mov eax, dword [0x429b00]
push 0x435b04
mov ecx, dword [eax + 0x1c]
push ecx
call fcn.00406640
add esp, 8
push eax
push str._s:__mismatching__local__filename___s___n_________continuing_with__central__filename_version_n
push 0x429b04
call fcn.00412920
add esp, 0x10
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
mov edx, dword [0x429b00]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
mov edi, dword [edx + 0x1c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x439c08
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp ebx, 1
rep movsb byte es:[edi], byte [esi]
jge 0x404bb3
mov ebx, 1
mov ecx, dword [0x429b00]
mov edx, dword [ecx + 0x1c]
push edx
call fcn.00413326
mov eax, dword [0x429b00]
add esp, 4
mov dword [eax + 0x1c], 0
cmp word [0x439b5c], 0
jne 0x404c49
mov ecx, dword [0x429b00]
mov esi, dword [0x439b48]
test byte [ecx + 0x18], 1
je 0x404bf0
sub esi, 0xc
mov eax, dword [0x439b4c]
cmp eax, esi
je 0x404c49
push 0x401
push esi
push eax
push 0x431b04
push 0x439c08
call fcn.00406640
add esp, 8
push eax
push str._s:__ucsize__lu____csize__lu_for_STORED_entry_n_________continuing_with__compressed__size_value_n
push 0x429b04
call fcn.00412920
add esp, 0x14
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
cmp ebx, 1
mov dword [0x439b4c], esi
jge 0x404c49
mov ebx, 1
mov eax, dword [0x439b40]
test eax, eax
je 0x404c65
push eax
call fcn.00413326
add esp, 4
mov dword [0x439b40], 0
mov edx, dword [0x439b60]
push 3
and edx, 0xffff
push edx
call fcn.00407860
add esp, 8
test eax, eax
je 0x404cb2
cmp eax, ebx
jle 0x404c86
mov ebx, eax
cmp eax, 1
jle 0x404cb2
push 0x401
push 0x4250ac
push 0x431b04
push 0x439c08
call fcn.00406640
add esp, 8
push eax
push str._s:__bad_extra_field_length___s__n
jmp 0x40514b
mov eax, dword [0x429b00]
test byte [eax + 0x18], 1
je 0x404d81
mov ecx, dword [0x429244]
push ecx
call fcn.00402450
add esp, 4
test eax, eax
je 0x404d81
cmp eax, 1
jne 0x404d3b
mov eax, dword [0x429280]
test eax, eax
mov eax, dword [0x429274]
je 0x404cf1
test eax, eax
jne 0x404d30
jmp 0x404cf5
test eax, eax
jne 0x404d30
push 0x401
push 0x431b04
push 0x439c08
call fcn.00406640
push eax
push str.___skipping:___22s__incorrect_password_n
push 0x429b04
call fcn.00412920
add esp, 0x14
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
mov eax, dword [esp + 0x20]
inc dword [eax]
jmp case.0x404fc0.69
cmp eax, ebx
jle 0x404d41
mov ebx, eax
push 0x401
push 0x431b04
push 0x439c08
call fcn.00406640
push eax
push str.___skipping:___22s__unable_to_get_password_n
push 0x429b04
call fcn.00412920
add esp, 0x14
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
jmp case.0x404fc0.69
mov eax, dword [0x429280]
test eax, eax
jne case.0x404fc0.68
mov eax, dword [0x429250]
test eax, eax
jne case.0x404fc0.68
xor edi, edi
mov ebp, 1
mov edx, dword [0x429b00]
mov al, byte [edx + 0x13]
test al, al
jne 0x404e2b
push 0x2f
push 0x439c08
call fcn.004136e2
add esp, 8
test eax, eax
jne 0x404e2b
mov al, byte [0x439c08]
mov esi, 0x439c08
test al, al
je 0x404e2b
cmp byte [esi], 0x5c
jne 0x404e1b
mov eax, dword [0x439bd4]
test eax, eax
jne 0x404e18
mov eax, dword [0x439b2c]
push 0x21
push eax
push str.warning:___s_appears_to_use_backslashes_as_path_separators_n
push 0x429b04
call fcn.00412920
add esp, 0xc
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
mov dword [0x439bd4], ebp
test ebx, ebx
jne 0x404e18
mov ebx, ebp
mov byte [esi], 0x2f
push esi
call fcn.00412972
mov esi, eax
add esp, 4
cmp byte [esi], 0
jne 0x404dd0
test edi, edi
jne 0x404e91
cmp byte [0x439c08], 0x2f
jne 0x404e91
push 0x401
push 0x431b04
push 0x439c08
call fcn.00406640
push eax
push str.warning:__stripped_absolute_path_spec_from__s_n
push 0x429b04
call fcn.00412920
add esp, 0x14
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
test ebx, ebx
jne 0x404e79
mov ebx, ebp
mov eax, 0x439c09
mov cl, byte [eax]
mov byte [eax - 1], cl
inc eax
test cl, cl
jne 0x404e7e
cmp byte [0x439c08], 0x2f
je 0x404e79
push edi
call fcn.004109d0
mov ecx, eax
add esp, 4
and ecx, 0xffff80ff
je 0x404eaa
cmp ebx, ecx
jge 0x404eaa
mov ebx, ecx
and eax, 0x7f00
cmp eax, 0x100
jg 0x405099
push 0x439c08
call fcn.004077c0
add esp, 4
cmp eax, 0xffffffff
je 0x40507f
test eax, eax
je 0x404f07
cmp eax, ebp
jne case.0x404fc0.68
mov eax, dword [0x4292c8]
cmp eax, 2
je case.0x404fc0.69
mov ecx, dword [0x429288]
test ecx, ecx
je 0x404efc
test edi, edi
je case.0x404fc0.69
cmp eax, 1
je case.0x404fc0.68
jmp 0x404f1e
mov eax, dword [0x4292c8]
cmp eax, 2
je case.0x404fc0.69
cmp eax, 1
je case.0x404fc0.68
push 0x81
push 0x431b04
push 0x439c08
call fcn.00406640
push eax
push str.replace__s___y_es___n_o___A_ll___N_one___r_ename:
push 0x429b04
call fcn.00412920
add esp, 0x14
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
push 0x425c90
push 9
push 0x4292f4
call fcn.004135d2
add esp, 0x1c
test eax, eax
jne 0x404fa6
push 1
push str._NULL_n_assuming__N_one__n
push 0x429b04
call fcn.00412920
add esp, 8
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
mov byte [0x4292f4], 0x4e
test ebx, ebx
jne 0x404fa6
mov ebx, 1
mov eax, dword [0x4292f4]
and eax, 0xff
lea ecx, [eax - 0x41]
cmp ecx, 0x38
ja case.0x404fc0.70
xor edx, edx
mov dl, byte [ecx + 0x4051fc]
jmp dword [edx*4 + 0x4051e4]
push 1
push eax
push str.error:__invalid_response___c__n
push 0x429b04
call fcn.00412920
add esp, 0xc
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
jmp 0x404f1e
push 0x81
push str.new_name:
push 0x429b04
call fcn.00412920
add esp, 8
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
push 0x425c90
push 0x104
push 0x439c08
call fcn.004135d2
mov edi, 0x439c08
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
push esi
push 0x439c08
call fcn.00407d60
mov cl, byte [eax]
add esp, 0x24
cmp cl, 0xa
jne 0x40505f
dec esi
mov byte [esi + 0x439c08], 0
test esi, esi
je case.0x404fc0.67
push 0x439c08
push 0x439c08
call dword [sym.imp.USER32.dll_OemToCharA]
mov ebp, 1
mov edi, ebp
jmp 0x404da2
mov eax, dword [0x429258]
test eax, eax
je case.0x404fc0.68
test edi, edi
jne case.0x404fc0.68
jmp case.0x404fc0.69
cmp eax, 0x1000
jne 0x405113
lea eax, [esp + 0x30]
push eax
call fcn.0040fde0
mov ecx, dword [esp + 0x34]
add esp, 4
test ecx, ecx
jne 0x4050fa
test eax, eax
je case.0x404fc0.69
push 0x401
push str.warning:__cannot_alloc_memory_for_dir_times_permissions_UID_GID_n
push 0x429b04
call fcn.00412920
add esp, 8
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
test ebx, ebx
jne case.0x404fc0.69
mov ebx, 1
jmp case.0x404fc0.69
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov dword [ecx], edx
mov ecx, dword [esp + 0x30]
mov dword [eax], ecx
mov eax, dword [esp + 0x28]
inc dword [eax]
jmp case.0x404fc0.69
cmp eax, 0x1100
jne 0x40516e
mov eax, dword [0x42927c]
test eax, eax
mov eax, 0x4250a0
jne 0x40512d
mov eax, 0x428d60
push 0x401
push eax
push 0x431b04
push 0x439c08
call fcn.00406640
add esp, 8
push eax
push str.___skipping:___22s___svolume_label_n
push 0x429b04
call fcn.00412920
add esp, 0x10
push eax
push 0x429b04
push 0x429240
call dword [int.00439d6c]
add esp, 0x10
jmp case.0x404fc0.69
cmp eax, 0x200
jle case.0x404fc0.69
cmp ebx, 2
jge case.0x404fc0.69
mov ebx, 2
jmp case.0x404fc0.69
mov dword [0x4292c8], 1
mov dword [0x439bd8], 0
call fcn.00405240
test eax, eax
je case.0x404fc0.69
cmp eax, ebx
jle 0x4051a4
mov ebx, eax
cmp dword [0x439bd8], 1
jg 0x4051da
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jb 0x404713
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
pop ecx
ret
mov dword [0x4292c8], 2
jmp case.0x404fc0.69
mov ebx, dword [esp + 0x30]
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
pop ecx
ret