Function at 0x468917
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x4ba700]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push edi
mov edi, ecx
push 0x1004
mov dword [ebp - 0x44], edi
call fcn.0047da45
mov ebx, eax
pop ecx
test ebx, ebx
jne 0x468947
push 4
pop eax
jmp 0x469362
and dword [ebp - 0x48], 0
push esi
push 2
lea esi, [ebx + 0x1000]
push 0xfffff000
push edi
mov byte [esi + 1], 0
mov byte [esi + 2], 0
mov byte [esi + 3], 0
call fcn.00480b87
add esp, 0xc
test eax, eax
jne 0x468a45
push edi
call fcn.00483669
mov edi, 0x1000
add eax, edi
pop ecx
mov dword [0x524914], eax
cmp dword [0x524914], edi
jb 0x468a4f
sub dword [0x524914], edi
mov al, byte [esi + 1]
push dword [ebp - 0x44]
mov byte [ebx + 0x1000], al
mov al, byte [esi + 2]
push edi
mov byte [ebx + 0x1001], al
mov al, byte [esi + 3]
push 1
push ebx
mov byte [ebx + 0x1002], al
call fcn.004833f1
push 1
push 0xffffe000
push dword [ebp - 0x44]
call fcn.00480b87
add esp, 0x1c
lea esi, [ebx + 0xfff]
jmp 0x468a0c
movzx ax, byte [esi + 3]
movzx ecx, byte [esi + 2]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [esi + 1]
shl cx, 8
movzx ecx, cx
shl eax, 0x10
or eax, ecx
movzx ecx, byte [esi]
or eax, ecx
cmp eax, 0x6054b50
je 0x468a12
dec esi
cmp esi, ebx
jae 0x4689dc
jmp 0x468a39
mov eax, esi
sub eax, ebx
add dword [0x524914], eax
mov eax, dword [0x524914]
push 0
add eax, 4
push eax
push dword [ebp - 0x44]
mov dword [ebp - 0x48], 1
call fcn.00480b87
add esp, 0xc
cmp dword [ebp - 0x48], 0
je 0x468989
jmp 0x468a4f
mov dword [0x524914], 0x1000
cmp dword [ebp - 0x48], 0
jne 0x468af4
cmp dword [0x524914], 0
jbe 0x468af4
mov edi, dword [ebp - 0x44]
push 0
push 0
push edi
call fcn.00480b87
push edi
call fcn.00484e04
push edi
push dword [0x524914]
push 1
push ebx
call fcn.004833f1
mov cl, byte [esi + 1]
add esp, 0x20
add eax, ebx
mov byte [eax], cl
mov cl, byte [esi + 2]
mov byte [eax + 1], cl
mov cl, byte [esi + 3]
mov byte [eax + 2], cl
jmp 0x468ad0
movzx cx, byte [eax + 3]
movzx edx, byte [eax + 2]
shl cx, 8
movzx ecx, cx
or ecx, edx
movzx dx, byte [eax + 1]
shl dx, 8
movzx edx, dx
shl ecx, 0x10
or ecx, edx
movzx edx, byte [eax]
or ecx, edx
cmp ecx, 0x6054b50
je 0x468ad7
dec eax
cmp eax, ebx
jae 0x468aa0
jmp 0x468af4
sub eax, ebx
mov dword [0x524914], eax
push 0
add eax, 4
push eax
push edi
mov dword [ebp - 0x48], 1
call fcn.00480b87
add esp, 0xc
push ebx
call fcn.0047d643
xor edi, edi
pop ecx
cmp dword [ebp - 0x48], edi
jne 0x468b25
mov esi, 0x4a3fbe
push esi
push str.missing_end_signature__probably_not_a_zip_file__did_you
call fcn.00465443
push esi
push str.remember_to_use_binary_mode_when_you_transferred_it__
call fcn.00465443
add esp, 0x10
jmp 0x4693ef
mov ebx, dword [ebp - 0x44]
push ebx
xor esi, esi
inc esi
push esi
lea eax, [ebp - 0x30]
push 0x12
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, esi
je 0x468b45
push ebx
jmp 0x4693f8
movzx ax, byte [ebp - 0x2f]
movzx cx, byte [ebp - 0x30]
shl ax, 8
or ax, cx
jne 0x468b92
movzx ax, byte [ebp - 0x2d]
movzx cx, byte [ebp - 0x2e]
shl ax, 8
or ax, cx
jne 0x468b92
movzx ax, byte [ebp - 0x29]
movzx cx, byte [ebp - 0x2a]
movzx dx, byte [ebp - 0x2c]
shl ax, 8
or ax, cx
movzx cx, byte [ebp - 0x2b]
shl cx, 8
or cx, dx
cmp cx, ax
je 0x468ba3
push 0x4a3fbe
push str.multiple_disk_information_ignored
call fcn.00465443
pop ecx
pop ecx
movzx ax, byte [ebp - 0x1f]
movzx ecx, byte [ebp - 0x20]
shl ax, 8
movzx eax, ax
or eax, ecx
mov dword [0x524918], eax
je 0x468bfc
push eax
call fcn.0047da45
pop ecx
mov dword [0x4bd6e8], eax
cmp eax, edi
je 0x4693dc
push ebx
push esi
push dword [0x524918]
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, esi
je 0x468bfc
push dword [0x4bd6e8]
call fcn.0047d643
mov dword [0x4bd6e8], edi
push ebx
jmp 0x4693ca
movzx ax, byte [ebp - 0x25]
movzx dx, byte [ebp - 0x21]
movzx esi, byte [ebp - 0x22]
movzx ebx, byte [ebp - 0x24]
shl ax, 8
movzx ecx, ax
movzx eax, byte [ebp - 0x26]
or ecx, eax
movzx ax, byte [ebp - 0x27]
shl dx, 8
shl ax, 8
movzx edx, dx
or edx, esi
movzx si, byte [ebp - 0x23]
shl ecx, 0x10
movzx eax, ax
or ecx, eax
movzx eax, byte [ebp - 0x28]
shl si, 8
or ecx, eax
mov eax, dword [0x524914]
sub eax, ecx
mov ecx, dword [0x4bd6c0]
movzx esi, si
or esi, ebx
shl edx, 0x10
or edx, esi
mov esi, eax
sub esi, edx
neg ecx
push edi
sbb ecx, ecx
push eax
push dword [ebp - 0x44]
and ecx, esi
mov dword [0x5244ac], eax
mov dword [ebp - 0x50], ecx
call fcn.00480b87
add esp, 0xc
test eax, eax
je 0x468c8d
push str.fseek
call fcn.00480c34
jmp 0x4693ee
xor ebx, ebx
mov dword [ebp - 0x4c], 0x4bd6e4
inc ebx
push dword [ebp - 0x44]
lea eax, [ebp - 0x30]
push ebx
push 4
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, ebx
je 0x468ecd
push dword [ebp - 0x44]
jmp 0x4693f8
push dword [ebp - 0x44]
lea eax, [ebp - 0x30]
push ebx
push 0x2a
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, ebx
jne 0x468cb1
push 0x60
call fcn.0047da45
mov esi, eax
pop ecx
cmp esi, edi
je 0x4693dc
movzx ax, byte [ebp - 0x2f]
movzx cx, byte [ebp - 0x30]
shl ax, 8
or ax, cx
mov word [esi], ax
lea eax, [esi + 2]
lea ecx, [ebp - 0x2e]
push 0x16
sub ecx, eax
pop edx
mov bl, byte [ecx + eax]
mov byte [eax], bl
inc eax
dec edx
jne 0x468d00
movzx ax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x18]
shl ax, 8
movzx eax, ax
or eax, ecx
mov dword [esi + 0x18], eax
movzx ax, byte [ebp - 0x15]
movzx ecx, byte [ebp - 0x16]
shl ax, 8
movzx eax, ax
or eax, ecx
mov dword [esi + 0x20], eax
movzx ax, byte [ebp - 0x13]
movzx ecx, byte [ebp - 0x14]
shl ax, 8
movzx eax, ax
or eax, ecx
mov dword [esi + 0x24], eax
movzx ax, byte [ebp - 0x11]
movzx cx, byte [ebp - 0x12]
shl ax, 8
or ax, cx
mov word [esi + 0x28], ax
movzx ax, byte [ebp - 0xf]
movzx cx, byte [ebp - 0x10]
shl ax, 8
or ax, cx
mov word [esi + 0x2a], ax
movzx ax, byte [ebp - 0xb]
movzx ecx, byte [ebp - 0xc]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebp - 0xd]
shl eax, 0x10
shl cx, 8
movzx ecx, cx
or eax, ecx
movzx ecx, byte [ebp - 0xe]
or eax, ecx
mov dword [esi + 0x30], eax
movzx ax, byte [ebp - 7]
movzx ecx, byte [ebp - 8]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebp - 9]
shl eax, 0x10
shl cx, 8
movzx ecx, cx
or eax, ecx
movzx ecx, byte [ebp - 0xa]
or eax, ecx
add eax, dword [ebp - 0x50]
push edx
mov dword [esi + 0x34], eax
mov eax, 0xff00
test word [esi], ax
pop eax
sete al
mov dword [esi + 0x44], edi
mov dword [esi + 0x40], edi
mov dword [esi + 0x3c], edi
mov dword [esi + 0x48], edi
mov dword [esi + 0x38], edi
mov dword [esi + 0x4c], edi
mov dword [esi + 0x58], eax
mov eax, dword [ebp - 0x4c]
mov dword [eax], esi
lea eax, [esi + 0x5c]
mov dword [eax], edi
mov dword [ebp - 0x4c], eax
mov eax, dword [esi + 0x18]
cmp eax, edi
je 0x469370
inc eax
push eax
call fcn.0047da45
pop ecx
mov dword [esi + 0x48], eax
cmp eax, edi
je 0x4693dc
mov eax, dword [esi + 0x20]
cmp eax, edi
je 0x468e33
push eax
call fcn.0047da45
pop ecx
mov dword [esi + 0x40], eax
cmp eax, edi
je 0x4693dc
mov eax, dword [esi + 0x24]
cmp eax, edi
je 0x468e4c
push eax
call fcn.0047da45
pop ecx
mov dword [esi + 0x44], eax
cmp eax, edi
je 0x4693dc
push dword [ebp - 0x44]
xor ebx, ebx
inc ebx
push ebx
push dword [esi + 0x18]
push dword [esi + 0x48]
call fcn.004833f1
add esp, 0x10
cmp eax, ebx
jne 0x468cb1
mov eax, dword [esi + 0x20]
cmp eax, edi
je 0x468e88
push dword [ebp - 0x44]
push ebx
push eax
push dword [esi + 0x40]
call fcn.004833f1
add esp, 0x10
cmp eax, ebx
jne 0x468cb1
mov eax, dword [esi + 0x24]
cmp eax, edi
je 0x468ea7
push dword [ebp - 0x44]
push ebx
push eax
push dword [esi + 0x44]
call fcn.004833f1
add esp, 0x10
cmp eax, ebx
jne 0x468cb1
mov eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x18]
mov byte [eax + ecx], 0
mov esi, dword [esi + 0x34]
cmp esi, dword [0x524914]
jae 0x468ec2
mov dword [0x524914], esi
inc dword [0x524920]
jmp 0x468c97
movzx ax, byte [ebp - 0x2d]
movzx ecx, byte [ebp - 0x2e]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebp - 0x2f]
shl cx, 8
movzx ecx, cx
shl eax, 0x10
or eax, ecx
movzx ecx, byte [ebp - 0x30]
or eax, ecx
cmp eax, 0x2014b50
je 0x468cb9
mov ebx, dword [0x4bd6e4]
cmp ebx, edi
je 0x469321
mov edi, dword [ebp - 0x44]
push 0
push dword [ebx + 0x34]
push edi
call fcn.00480b87
add esp, 0xc
test eax, eax
jne 0x4693f7
push edi
xor esi, esi
inc esi
push esi
lea eax, [ebp - 0x30]
push 4
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, esi
jne 0x4693f7
movzx ax, byte [ebp - 0x2d]
movzx ecx, byte [ebp - 0x2e]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebp - 0x2f]
shl cx, 8
movzx ecx, cx
shl eax, 0x10
or eax, ecx
movzx ecx, byte [ebp - 0x30]
or eax, ecx
cmp eax, 0x4034b50
jne 0x4693e0
push edi
push esi
lea eax, [ebp - 0x30]
push 0x1a
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, esi
jne 0x4693f7
movzx ax, byte [ebp - 0x2d]
movzx cx, byte [ebp - 0x2e]
shl ax, 8
or ax, cx
mov word [ebx + 0x2c], ax
movzx ax, byte [ebp - 0x19]
movzx ecx, byte [ebp - 0x1a]
movzx edx, byte [ebp - 0x18]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebp - 0x17]
shl cx, 8
movzx ecx, cx
or ecx, edx
mov dword [ebx + 0x1c], ecx
mov ecx, dword [ebx + 0x18]
cmp eax, ecx
jne 0x46939d
push ecx
call fcn.0047da45
mov esi, eax
pop ecx
test esi, esi
je 0x4693dc
push edi
push 1
push dword [ebx + 0x18]
push esi
call fcn.004833f1
add esp, 0x10
cmp eax, 1
jne 0x4693a7
push dword [ebx + 0x18]
push dword [ebx + 0x48]
push esi
call fcn.004836d7
add esp, 0xc
push esi
test eax, eax
jne 0x4693aa
call fcn.0047d643
mov eax, dword [ebx + 0x1c]
pop ecx
test eax, eax
je 0x469078
push eax
call fcn.0047da45
pop ecx
mov dword [ebx + 0x3c], eax
test eax, eax
je 0x4693dc
push edi
push 1
push dword [ebx + 0x1c]
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, 1
jne 0x4693c1
mov eax, dword [ebx + 0x1c]
cmp eax, dword [ebx + 0x20]
jne 0x469078
push eax
push dword [ebx + 0x40]
push dword [ebx + 0x3c]
call fcn.004836d7
add esp, 0xc
test eax, eax
jne 0x469078
push dword [ebx + 0x3c]
call fcn.0047d643
mov eax, dword [ebx + 0x40]
pop ecx
mov dword [ebx + 0x3c], eax
test byte [ebx + 0x2c], 8
je 0x46914e
movzx ax, byte [ebp - 0x1f]
movzx ecx, byte [ebp - 0x20]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebp - 0x21]
shl cx, 8
movzx ecx, cx
shl eax, 0x10
or eax, ecx
movzx ecx, byte [ebp - 0x22]
or eax, ecx
jne 0x4690d6
movzx ax, byte [ebx + 0x13]
movzx ecx, byte [ebx + 0x12]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebx + 0x11]
shl cx, 8
movzx ecx, cx
shl eax, 0x10
or eax, ecx
movzx ecx, byte [ebx + 0x10]
or eax, ecx
mov ecx, dword [ebx + 0x1c]
add ecx, dword [ebx + 0x18]
push 0
add ecx, dword [ebx + 0x34]
lea eax, [ecx + eax + 0x1e]
push eax
push edi
call fcn.00480b87
add esp, 0xc
test eax, eax
jne 0x4693f7
push edi
push 1
lea eax, [ebp - 0x40]
push 0x10
push eax
call fcn.004833f1
add esp, 0x10
cmp eax, 1
jne 0x4693f7
movzx ax, byte [ebp - 0x3d]
movzx ecx, byte [ebp - 0x3e]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [ebp - 0x3f]
shl cx, 8
movzx ecx, cx
shl eax, 0x10
or eax, ecx
movzx ecx, byte [ebp - 0x40]
or eax, ecx
cmp eax, 0x8074b50
jne 0x4693d2
lea esi, [ebp - 0x3c]
lea edi, [ebp - 0x26]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
and dword [ebp - 0x4c], 0
and dword [ebp - 0x48], 0
lea esi, [ebx + 2]
mov al, byte [esi + 3]
movzx dx, byte [esi + 2]
movzx cx, al
shl cx, 8
or cx, dx
and al, 0x1f
movzx ecx, cx
mov byte [esi + 3], al
and byte [ebp - 0x2d], 0x1f
mov dword [ebp - 0x50], esi
lea eax, [ebp - 0x30]
sub dword [ebp - 0x50], eax
mov dword [ebp - 0x54], ecx
mov edi, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x50]
lea edi, [ebp + edi - 0x30]
mov al, byte [edi]
cmp al, byte [edi + ecx]
je 0x4691ea
cmp dword [ebp - 0x4c], 0
jne 0x4691b1
push dword [ebx + 0x4c]
push str.local_and_central_headers_differ_for
call fcn.00465443
pop ecx
pop ecx
mov dword [ebp - 0x4c], 1
cmp dword [0x4ba078], 0
je 0x4691ea
mov eax, dword [ebp - 0x50]
movzx eax, byte [edi + eax]
push eax
movzx eax, byte [edi]
push eax
push dword [ebp - 0x48]
push str._offset__u__local___02x__central___02x
push 0x5244c0
call fcn.0047c59e
push 0x4a3fbe
push 0x5244c0
call fcn.00465443
add esp, 0x1c
inc dword [ebp - 0x48]
cmp dword [ebp - 0x48], 0x16
jb 0x469184
cmp dword [ebp - 0x4c], 0
je 0x469206
cmp dword [0x4bd6c0], 0
je 0x4693ef
movzx ax, byte [esi + 0x15]
movzx ecx, byte [esi + 0x14]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [esi + 0x13]
shl eax, 0x10
shl cx, 8
movzx ecx, cx
or eax, ecx
movzx ecx, byte [esi + 0x12]
or eax, ecx
mov dword [ebx + 0x14], eax
movzx ax, byte [esi + 0x11]
movzx ecx, byte [esi + 0x10]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [esi + 0xf]
shl eax, 0x10
shl cx, 8
movzx ecx, cx
or eax, ecx
movzx ecx, byte [esi + 0xe]
or eax, ecx
mov dword [ebx + 0x10], eax
movzx ax, byte [esi + 0xd]
movzx ecx, byte [esi + 0xc]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [esi + 0xb]
shl eax, 0x10
shl cx, 8
movzx ecx, cx
or eax, ecx
movzx ecx, byte [esi + 0xa]
or eax, ecx
mov dword [ebx + 0xc], eax
movzx ax, byte [esi + 9]
movzx ecx, byte [esi + 8]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx cx, byte [esi + 7]
shl eax, 0x10
shl cx, 8
movzx ecx, cx
or eax, ecx
movzx ecx, byte [esi + 6]
push dword [ebx + 0x48]
or eax, ecx
mov dword [ebx + 8], eax
movzx ax, byte [esi + 5]
movzx cx, byte [esi + 4]
shl ax, 8
or ax, cx
mov word [ebx + 6], ax
mov ax, word [ebp - 0x54]
mov word [ebx + 4], ax
movzx ax, byte [esi + 1]
movzx cx, byte [esi]
shl ax, 8
or ax, cx
xor edi, edi
mov word [esi], ax
mov dword [ebx + 0x50], edi
mov dword [ebx + 0x54], edi
call fcn.0046a2df
pop ecx
mov dword [ebx + 0x4c], eax
cmp eax, edi
je 0x4693dc
mov dword [ebx + 0x38], eax
cmp dword [0x4bd6b8], edi
je 0x469314
mov esi, ebx
call fcn.00467f53
mov ebx, dword [ebx + 0x5c]
cmp ebx, edi
jne 0x468f0f
xor edi, edi
mov eax, dword [0x524914]
cmp eax, edi
je 0x46935f
cmp dword [0x4ba078], edi
je 0x46935f
mov ecx, str.adjusting_offsets_for
cmp dword [0x4bd6c0], edi
jne 0x469344
mov ecx, str.found
push eax
push ecx
push dword [0x5244b4]
push str._s:__s_a_preamble_of__lu_bytes_n
push dword [0x5244a4]
call fcn.0047edb3
add esp, 0x14
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop ebx
call fcn.0047c3ff
leave
ret
mov eax, dword [0x524920]
inc eax
push eax
push 0x49d600
mov edi, 0x5244c0
push edi
call fcn.0047c59e
push edi
push str.zero_length_name_for_entry_
call fcn.00465443
push esi
call fcn.0047d643
add esp, 0x18
jmp 0x4693ef
push dword [ebx + 0x48]
push str.name_lengths_in_local_and_central_differ_for
jmp 0x4693e8
push esi
jmp 0x4693c4
call fcn.0047d643
push dword [ebx + 0x48]
push str.names_in_local_and_central_differ_for
call fcn.00465443
add esp, 0xc
jmp 0x4693ef
push dword [ebx + 0x3c]
call fcn.0047d643
push edi
call fcn.00481076
pop ecx
jmp 0x4693fd
push dword [ebx + 0x48]
push str.extended_local_header_not_found_for
jmp 0x4693e8
push 4
jmp 0x4693f1
push dword [ebx + 0x48]
push str.local_header_not_found_for
call fcn.00465443
pop ecx
pop ecx
push 3
pop eax
jmp 0x469361
push edi
call fcn.00481076
neg eax
sbb eax, eax
and eax, 9
inc eax
pop ecx
inc eax
jmp 0x469361