Function at 0x47586c
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
and dword [ebp - 8], 0
cmp dword [ebp + 8], 0
push ebx
push edi
jbe 0x4760df
mov eax, dword [ebp + 0xc]
inc dword [eax]
mov eax, dword [ebp - 8]
shl eax, 5
lea eax, [eax + esi + 0xd8]
mov dword [esi + 0x8d8], eax
mov eax, dword [eax]
add eax, dword [esi + 0x10914]
mov edi, eax
and edi, 0x80001fff
mov dword [ebp - 4], eax
jns 0x4758b7
dec edi
or edi, 0xffffe000
inc edi
mov ebx, eax
sub ebx, edi
test eax, eax
jge 0x4759a1
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 dword [esi + 0x10904]
lea edi, [esi + 0x8dc]
push str.error___s_:__attempt_to_seek_before_beginning_of_zipfile_n_s
push edi
call fcn.0047c59e
add esp, 0x10
push eax
push edi
push esi
call dword [esi + 0x10b54]
mov eax, dword [ebp + 0xc]
cmp dword [eax], 1
mov dword [ebp + 0x20], 2
jne 0x475995
cmp dword [esi + 0x10914], 0
je 0x475995
push 0x401
push str.___attempting_to_re_compensate__n
lea edi, [esi + 0x8dc]
push edi
call fcn.0047c59e
pop ecx
pop ecx
push eax
push edi
push esi
call dword [esi + 0x10b54]
mov eax, dword [esi + 0x10914]
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
and dword [esi + 0x10914], 0
mov eax, dword [esi + 0x8d8]
mov eax, dword [eax]
mov edi, eax
and edi, 0x80001fff
mov dword [ebp - 4], eax
jns 0x475960
dec edi
or edi, 0xffffe000
inc edi
mov ebx, eax
sub ebx, edi
test eax, eax
jge 0x4759a1
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 dword [esi + 0x10904]
lea edi, [esi + 0x8dc]
push str.error___s_:__attempt_to_seek_before_beginning_of_zipfile_n_s
push edi
call fcn.0047c59e
add esp, 0x10
push eax
push edi
push esi
call dword [esi + 0x10b54]
mov dword [ebp + 0x20], 3
jmp 0x4760d0
cmp ebx, dword [esi + 0x10910]
je 0x475a27
push 0
push ebx
push dword [esi + 0x10908]
call fcn.00487192
push 0x2000
push dword [esi + 0x108e4]
mov dword [esi + 0x10910], eax
push dword [esi + 0x10908]
call fcn.00487020
add esp, 0x18
mov dword [esi + 0x108ec], eax
test eax, eax
jg 0x475a0f
push 0x401
push ebx
push str.lseek
mov eax, dword [ebp + 0xc]
push dword [eax]
lea edi, [esi + 0x8dc]
push str.file__lu:__bad_zipfile_offset___s_:___ld_n
push edi
call fcn.0047c59e
add esp, 0x14
push eax
push edi
push esi
call dword [esi + 0x10b54]
jmp 0x475995
mov ecx, dword [esi + 0x108e4]
add ecx, edi
sub eax, edi
mov dword [esi + 0x108e8], ecx
mov dword [esi + 0x108ec], eax
jmp 0x475a43
mov ecx, dword [esi + 0x108e4]
lea eax, [esi + 0x108e8]
mov edx, dword [eax]
sub edx, ecx
sub edx, edi
add dword [esi + 0x108ec], edx
add ecx, edi
mov dword [eax], ecx
push 4
lea edi, [esi + 0xc8]
push edi
push esi
call fcn.00470043
add esp, 0xc
test eax, eax
jne 0x475a68
push 0x401
push dword [ebp - 4]
push 0x49f828
jmp 0x4759eb
push 4
push 0x4ba29c
push edi
call fcn.0047e22e
mov edi, dword [ebp + 0xc]
add esp, 0xc
test eax, eax
je 0x475b9b
push 0x401
push dword [ebp - 4]
lea ebx, [esi + 0x8dc]
push str.local_header_sig
push dword [edi]
push str.file__lu:__bad_zipfile_offset___s_:___ld_n
push ebx
call fcn.0047c59e
add esp, 0x14
push eax
push ebx
push esi
call dword [esi + 0x10b54]
cmp dword [edi], 1
mov dword [ebp + 0x20], 2
jne 0x475ac4
cmp dword [esi + 0x10914], 0
jne 0x475add
cmp dword [esi + 0x10914], 0
jne 0x4760d0
mov eax, dword [ebp + 0x14]
cmp dword [eax], 0
je 0x4760d0
push 0x401
push str.___attempting_to_re_compensate__n
push ebx
call fcn.0047c59e
pop ecx
pop ecx
push eax
push ebx
push esi
call dword [esi + 0x10b54]
mov eax, dword [esi + 0x10914]
test eax, eax
je 0x475b10
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
and dword [esi + 0x10914], 0
jmp 0x475b1b
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
mov dword [esi + 0x10914], eax
mov eax, dword [esi + 0x8d8]
push dword [eax]
push esi
call fcn.004701e2
pop ecx
pop ecx
test eax, eax
jne 0x475b6e
push 4
lea eax, [esi + 0xc8]
push eax
push esi
call fcn.00470043
add esp, 0xc
test eax, eax
je 0x475b77
push 4
lea eax, [esi + 0xc8]
push 0x4ba29c
push eax
call fcn.0047e22e
add esp, 0xc
test eax, eax
je 0x475b9b
push 0x401
push dword [ebp - 4]
push str.local_header_sig
jmp 0x475b84
cmp eax, 3
je 0x475995
push 0x401
push dword [ebp - 4]
push 0x49f828
push dword [edi]
push str.file__lu:__bad_zipfile_offset___s_:___ld_n
push ebx
call fcn.0047c59e
add esp, 0x14
push eax
push ebx
jmp 0x47598e
push esi
call fcn.0046ed43
pop ecx
mov dword [ebp - 4], eax
test eax, eax
je 0x475bd8
push 0x421
push dword [edi]
lea ebx, [esi + 0x8dc]
push str.file__lu:__bad_local_header_n
push ebx
call fcn.0047c59e
add esp, 0xc
push eax
push ebx
push esi
call dword [esi + 0x10b54]
mov eax, dword [ebp - 4]
mov dword [ebp + 0x20], eax
jmp 0x4760d0
movzx eax, word [esi + 0x10936]
push 6
push eax
push esi
call fcn.0047060b
add esp, 0xc
test eax, eax
je 0x475c3e
cmp eax, dword [ebp + 0x20]
jle 0x475bf7
mov dword [ebp + 0x20], eax
cmp eax, 1
jle 0x475c3e
push 0x401
push 0x49f820
lea eax, [esi + 0x88dc]
push eax
lea eax, [esi + 0x109f0]
push eax
lea edi, [esi + 0x8dc]
call fcn.00474630
pop ecx
pop ecx
push eax
push str._s:__bad_filename_length___s__n
push edi
call fcn.0047c59e
add esp, 0x10
push eax
push edi
push esi
call dword [esi + 0x10b54]
jmp 0x4760d0
mov eax, dword [esi + 0x8d8]
mov eax, dword [eax + 0x1c]
test eax, eax
je 0x475d01
lea ebx, [esi + 0x109f0]
mov ecx, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x475c75
test dl, dl
je 0x475c71
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x475c75
inc eax
inc eax
inc ecx
inc ecx
test dl, dl
jne 0x475c57
xor eax, eax
jmp 0x475c7a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x475ce8
push 0x401
lea eax, [esi + 0x88dc]
push eax
push ebx
lea edi, [esi + 0x8dc]
call fcn.00474630
pop ecx
pop ecx
push eax
lea eax, [esi + 0xc8dc]
push eax
mov eax, dword [esi + 0x8d8]
push dword [eax + 0x1c]
call fcn.00474630
pop ecx
pop ecx
push eax
push str._s:__mismatching__local__filename___s___n_________continuing_with__central__filename_version_n
push edi
call fcn.0047c59e
add esp, 0x10
push eax
push edi
push esi
call dword [esi + 0x10b54]
mov eax, dword [esi + 0x8d8]
mov eax, dword [eax + 0x1c]
mov edx, ebx
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x475cd3
xor eax, eax
inc eax
cmp dword [ebp + 0x20], eax
jge 0x475ce8
mov dword [ebp + 0x20], eax
mov eax, dword [esi + 0x8d8]
push dword [eax + 0x1c]
call fcn.0047d643
mov eax, dword [esi + 0x8d8]
and dword [eax + 0x1c], 0
pop ecx
cmp word [esi + 0x10934], 0
jne 0x475d77
mov eax, dword [esi + 0x8d8]
test byte [eax + 0x18], 1
mov edi, dword [esi + 0x10920]
je 0x475d20
sub edi, 0xc
mov eax, dword [esi + 0x10924]
cmp eax, edi
je 0x475d77
push 0x401
push edi
push eax
lea eax, [esi + 0x88dc]
push eax
lea eax, [esi + 0x109f0]
push eax
lea ebx, [esi + 0x8dc]
call fcn.00474630
pop ecx
pop ecx
push eax
push str._s:__ucsize__lu____csize__lu_for_STORED_entry_n_________continuing_with__compressed__size_value_n
push ebx
call fcn.0047c59e
add esp, 0x14
push eax
push ebx
push esi
call dword [esi + 0x10b54]
cmp dword [ebp + 0x20], 1
mov dword [esi + 0x10924], edi
jge 0x475d77
mov dword [ebp + 0x20], 1
lea edi, [esi + 0x10918]
mov eax, dword [edi]
xor ebx, ebx
cmp eax, ebx
je 0x475d8e
push eax
call fcn.0047d643
pop ecx
mov dword [edi], ebx
movzx eax, word [esi + 0x10938]
push 3
push eax
push esi
call fcn.0047060b
add esp, 0xc
cmp eax, ebx
je 0x475de2
cmp eax, dword [ebp + 0x20]
jle 0x475dad
mov dword [ebp + 0x20], eax
cmp eax, 1
jle 0x475de2
push 0x401
push 0x49f820
lea eax, [esi + 0x88dc]
push eax
lea eax, [esi + 0x109f0]
push eax
lea edi, [esi + 0x8dc]
call fcn.00474630
pop ecx
pop ecx
push eax
push str._s:__bad_extra_field_length___s__n
jmp 0x475c27
mov eax, dword [esi + 0x8d8]
test byte [eax + 0x18], 1
je 0x475e99
push dword [esi + 8]
push esi
call fcn.0047a01f
pop ecx
pop ecx
cmp eax, ebx
je 0x475e99
cmp eax, 1
jne 0x475e5f
mov eax, dword [esi + 0x44]
cmp eax, ebx
je 0x475e1a
cmp dword [esi + 0x38], ebx
jne 0x475e55
cmp eax, ebx
jne 0x475e1f
cmp dword [esi + 0x38], ebx
jne 0x475e55
push 0x401
lea eax, [esi + 0x88dc]
push eax
lea eax, [esi + 0x109f0]
push eax
lea edi, [esi + 0x8dc]
call fcn.00474630
push eax
push str.___skipping:___22s__incorrect_password_n
push edi
call fcn.0047c59e
add esp, 0x14
push eax
push edi
push esi
call dword [esi + 0x10b54]
mov eax, dword [ebp + 0x10]
inc dword [eax]
jmp 0x4760d0
cmp eax, dword [ebp + 0x20]
jle 0x475e67
mov dword [ebp + 0x20], eax
push 0x401
lea eax, [esi + 0x88dc]
push eax
lea eax, [esi + 0x109f0]
push eax
lea edi, [esi + 0x8dc]
call fcn.00474630
push eax
push str.___skipping:___22s__unable_to_get_password_n
push edi
call fcn.0047c59e
add esp, 0x14
jmp 0x475c30
cmp dword [esi + 0x44], ebx
jne 0x476058
cmp dword [esi + 0x14], ebx
jne 0x476058
cmp dword [esi + 0xa0], ebx
jne 0x476058
mov dword [ebp - 4], ebx
mov eax, dword [esi + 0x8d8]
cmp byte [eax + 0x13], 0
jne 0x475f37
lea ebx, [esi + 0x109f0]
push 0x2f
push ebx
call fcn.0047e3aa
pop ecx
pop ecx
test eax, eax
jne 0x475f37
jmp 0x475f32
cmp byte [ebx], 0x5c
jne 0x475f29
cmp dword [esi + 0x109bc], 0
jne 0x475f26
push 0x21
push dword [esi + 0x10904]
lea edi, [esi + 0x8dc]
push str.warning:___s_appears_to_use_backslashes_as_path_separators_n
push edi
call fcn.0047c59e
add esp, 0xc
push eax
push edi
push esi
call dword [esi + 0x10b54]
cmp dword [ebp + 0x20], 0
mov dword [esi + 0x109bc], 1
jne 0x475f26
mov dword [ebp + 0x20], 1
mov byte [ebx], 0x2f
push ebx
call fcn.00488254
pop ecx
mov ebx, eax
cmp byte [ebx], 0
jne 0x475edc
cmp dword [ebp - 4], 0
jne 0x475f9c
lea ebx, [esi + 0x109f0]
cmp byte [ebx], 0x2f
jne 0x475f9c
push 0x401
lea eax, [esi + 0x88dc]
push eax
push ebx
lea edi, [esi + 0x8dc]
call fcn.00474630
push eax
push str.warning:__stripped_absolute_path_spec_from__s_n
push edi
call fcn.0047c59e
add esp, 0x14
push eax
push edi
push esi
call dword [esi + 0x10b54]
cmp dword [ebp + 0x20], 0
jne 0x475f85
mov dword [ebp + 0x20], 1
lea edx, [esi + 0x109f1]
mov eax, edx
mov cl, byte [eax]
mov byte [eax - 1], cl
inc eax
test cl, cl
jne 0x475f8d
cmp byte [ebx], 0x2f
je 0x475f8b
push dword [ebp - 4]
push esi
call fcn.00472b04
pop ecx
pop ecx
mov ecx, eax
and ecx, 0xffff80ff
je 0x475fb9
cmp dword [ebp + 0x20], ecx
jge 0x475fb9
mov dword [ebp + 0x20], ecx
and eax, 0x7f00
cmp eax, 0x100
jg 0x4760e6
lea edi, [esi + 0x109f0]
push edi
push esi
call fcn.00470548
pop ecx
pop ecx
cmp eax, 0xffffffff
je 0x47604c
test eax, eax
je 0x475ffe
cmp eax, 1
jne 0x476058
mov eax, dword [esi + 0x78]
cmp eax, 2
je 0x4761b3
cmp dword [esi + 0x4c], 0
je 0x47600a
cmp dword [ebp - 4], 0
jmp 0x476004
mov eax, dword [esi + 0x78]
cmp eax, 2
je 0x4761b3
cmp eax, 1
je 0x476058
mov eax, dword [esi + 0x10b68]
mov eax, dword [eax + 8]
test eax, eax
je 0x476021
push edi
call eax
jmp 0x476024
push 0x68
pop eax
sub eax, 0x64
je 0x4761b3
sub eax, 3
je 0x4761f1
dec eax
je 0x4761ac
dec eax
jne 0x476058
mov dword [ebp - 4], 1
jmp 0x475eba
cmp dword [esi + 0x1c], 0
je 0x476058
cmp dword [ebp - 4], 0
je 0x4760d0
mov eax, dword [esi + 0x10b64]
test eax, eax
je 0x47607e
push 0
lea ecx, [esi + 0x109f0]
push ecx
push dword [esi + 0x10904]
push 1
push esi
call eax
test eax, eax
jne 0x4761fd
lea edi, [esi + 0x109c0]
and dword [edi], 0
mov eax, esi
call fcn.00474fa9
test eax, eax
je 0x4760a5
cmp eax, dword [ebp + 0x20]
jle 0x47609a
mov dword [ebp + 0x20], eax
cmp dword [edi], 1
jg 0x4760df
cmp dword [ebp + 0x20], 0x50
je 0x4760df
mov eax, dword [esi + 0x10b64]
test eax, eax
je 0x4760d0
lea ecx, [esi + 0x10924]
push ecx
lea ecx, [esi + 0x109f0]
push ecx
push dword [esi + 0x10904]
push 3
push esi
call eax
test eax, eax
jne 0x4761fd
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp + 8]
jb 0x475882
mov eax, dword [ebp + 0x20]
pop edi
pop ebx
leave
ret
cmp eax, 0x1000
jne 0x476148
lea eax, [ebp - 0xc]
push eax
push esi
call fcn.004720e5
pop ecx
pop ecx
mov ecx, dword [ebp - 0xc]
test ecx, ecx
jne 0x476134
test eax, eax
je 0x4760d0
push 0x401
lea edi, [esi + 0x8dc]
push str.warning:__cannot_alloc_memory_for_dir_times_permissions_UID_GID_n
push edi
call fcn.0047c59e
pop ecx
pop ecx
push eax
push edi
push esi
call dword [esi + 0x10b54]
cmp dword [ebp + 0x20], 0
jne 0x4760d0
mov dword [ebp + 0x20], 1
jmp 0x4760d0
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax]
mov dword [ecx], edx
mov ecx, dword [ebp - 0xc]
mov dword [eax], ecx
mov eax, dword [ebp + 0x18]
jmp 0x475e58
cmp eax, 0x1100
jne 0x47618b
cmp dword [esi + 0x40], 0
mov eax, str.hard_disk
jne 0x47615f
mov eax, 0x4a3fbe
push 0x401
push eax
lea eax, [esi + 0x88dc]
push eax
lea eax, [esi + 0x109f0]
push eax
lea edi, [esi + 0x8dc]
call fcn.00474630
pop ecx
pop ecx
push eax
push str.___skipping:___22s___svolume_label_n
jmp 0x475c27
cmp eax, 0x200
jle 0x4760d0
cmp dword [ebp + 0x20], 2
jge 0x4760d0
mov dword [ebp + 0x20], 2
jmp 0x4760d0
mov dword [esi + 0x78], 2
cmp dword [esi + 0x78], 2
je 0x4761ca
cmp dword [esi + 0x4c], 0
je 0x4761ca
cmp dword [ebp - 4], 0
mov ebx, str.Target_file_newer._nSkipping__s_n
je 0x4761cf
mov ebx, str.Target_file_exists._nSkipping__s_n
push 0
lea eax, [esi + 0x88dc]
push eax
lea eax, [esi + 0x109f0]
push eax
lea edi, [esi + 0x8dc]
call fcn.00474630
push eax
push ebx
jmp 0x475e8b
mov dword [esi + 0x78], 1
jmp 0x476058
push 0x50
pop eax
jmp 0x4760e2