Function at 0x447de0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x54
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x20]
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00447a70
mov edx, eax
add esp, 0x10
xor eax, eax
test edx, edx
js 0x447fcd
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x24]
mov ebx, dword [eax + edx*8]
mov eax, dword [ecx + 0x18]
mov edx, dword [ecx + 0x1c]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edx
xor eax, eax
xor ecx, ecx
mov al, byte [ebx - 0x23]
shl eax, 8
mov cl, byte [ebx - 0x24]
mov word [ebp - 0x46], cx
or word [ebp - 0x46], ax
test esi, esi
je 0x447e44
mov ax, word [ebp - 0x46]
and eax, 0xffff
mov dword [esi], eax
test edi, edi
je 0x447e70
lea ecx, [ebx - 0x22]
xor edx, edx
xor eax, eax
mov dl, byte [ecx + 1]
mov al, byte [ecx + 2]
shl eax, 0x10
shl edx, 8
or edx, eax
xor eax, eax
mov al, byte [ebx - 0x22]
or edx, eax
xor eax, eax
mov al, byte [ecx + 3]
shl eax, 0x18
or edx, eax
mov dword [edi], edx
mov edi, dword [ebp + 0x24]
test edi, edi
je 0x447ea2
lea ecx, [ebx - 0x1e]
xor edx, edx
xor eax, eax
mov dl, byte [ecx + 1]
mov al, byte [ecx + 2]
shl eax, 0x10
shl edx, 8
or edx, eax
xor eax, eax
mov al, byte [ebx - 0x1e]
or edx, eax
xor eax, eax
mov al, byte [ecx + 3]
shl eax, 0x18
or edx, eax
mov eax, dword [ebp + 0x24]
mov dword [eax], edx
lea edx, [ebx - 0x1a]
xor ecx, ecx
xor eax, eax
mov esi, dword [ebp + 0x18]
mov cl, byte [edx + 1]
shl ecx, 8
mov dword [ebp - 0x44], ecx
mov al, byte [edx + 2]
shl eax, 0x10
or ecx, eax
xor eax, eax
mov dword [ebp - 0x44], ecx
mov al, byte [ebx - 0x1a]
or ecx, eax
xor eax, eax
mov dword [ebp - 0x44], ecx
mov al, byte [edx + 3]
shl eax, 0x18
or ecx, eax
test esi, esi
mov dword [ebp - 0x44], ecx
je 0x447ee0
mov eax, dword [ebp + 0x18]
mov dword [eax], ecx
lea edx, [ebx - 0x16]
xor eax, eax
mov cl, byte [edx + 1]
mov al, byte [edx + 2]
shl eax, 0x10
and ecx, 0xff
mov esi, ecx
mov ecx, dword [ebp + 0x14]
shl esi, 8
or esi, eax
xor eax, eax
mov al, byte [ebx - 0x16]
or esi, eax
xor eax, eax
mov al, byte [edx + 3]
shl eax, 0x18
or esi, eax
test ecx, ecx
je 0x447f18
mov eax, dword [ebp + 0x14]
mov dword [eax], esi
mov edx, dword [ebp + 0x1c]
mov eax, 1
test edx, edx
je 0x447fcd
lea edx, [ebx - 4]
xor eax, eax
mov cl, byte [edx + 1]
mov al, byte [edx + 2]
shl eax, 0x10
and ecx, 0xff
mov edi, ecx
shl edi, 8
or edi, eax
xor eax, eax
mov al, byte [ebx - 4]
or edi, eax
xor eax, eax
mov al, byte [edx + 3]
shl eax, 0x18
or edi, eax
lea eax, [edi + 0x1e]
mov edx, eax
mov dword [ebp - 0x54], eax
sar edx, 0x1f
cmp dword [ebp - 0x4c], edx
jle 0x447fd5
mov edx, dword [ebp + 8]
sub esp, 0xc
add edx, 4
mov dword [ebp - 0x34], edx
push edx
call fcn.00446e00
mov ecx, edi
sar ecx, 0x1f
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x3c], ecx
push 0
mov eax, dword [ebp - 0x3c]
push eax
mov ebx, dword [ebp - 0x40]
push ebx
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
push ecx
call sub.msvcrt.dll__lseeki64
mov ecx, dword [ebp - 0x3c]
add esp, 0x20
xor ecx, edx
mov edx, dword [ebp - 0x40]
xor eax, edx
or ecx, eax
je 0x448001
push edi
push str.failed_seeking_to_lfh_at_offset__ld_n
push str.zipro
push 5
call fcn.0044c320
add esp, 0x10
sub esp, 0xc
mov eax, dword [ebp - 0x34]
push eax
call fcn.00446f00
xor eax, eax
add esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
jge 0x447ff6
push eax
push str.ERROR:_bad_local_hdr_offset_in_zip_n
push str.zipro
push 6
call fcn.0044c320
xor eax, eax
add esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [ebp - 0x50], eax
ja 0x447f64
jmp 0x447fd7
lea ebx, [ebp - 0x2e]
push eax
push 0x1e
push ebx
mov edx, dword [ebp + 8]
mov eax, dword [edx]
push eax
call sub.msvcrt.dll__read
add esp, 0x10
cmp eax, 0xffffffff
jne 0x44803c
call sub.msvcrt.dll__errno
cmp dword [eax], 4
je 0x448004
push edi
push str.failed_reading_lfh_from_offset__ld_n
push str.zipro
push 5
call fcn.0044c320
add esp, 0x10
jmp 0x447fbc
cmp eax, 0x1e
jne 0x448025
xor edx, edx
xor eax, eax
mov dl, byte [ebp - 0x2d]
mov al, byte [ebp - 0x2c]
shl eax, 0x10
shl edx, 8
or edx, eax
xor eax, eax
mov al, byte [ebp - 0x2e]
or edx, eax
xor eax, eax
mov al, byte [ebp - 0x2b]
shl eax, 0x18
or edx, eax
cmp edx, 0x4034b50
je 0x4480c4
push 1
push 0
push 0
xor ebx, ebx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
push eax
call sub.msvcrt.dll__lseeki64
xor ecx, ecx
mov bl, byte [ebp - 0x2d]
mov cl, byte [ebp - 0x2c]
add esp, 0xc
shl ecx, 0x10
shl ebx, 8
or ebx, ecx
xor ecx, ecx
mov cl, byte [ebp - 0x2e]
or ebx, ecx
xor ecx, ecx
mov cl, byte [ebp - 0x2b]
shl ecx, 0x18
or ebx, ecx
push ebx
push eax
push 0x4034b50
push edi
push str.didnt_find_signature_at_start_of_lfh__wanted:_offset_ld_data0x_08x__got:_offset_ld_data0x_08lx_n
push str.zipro
push 5
call fcn.0044c320
add esp, 0x20
jmp 0x447fbc
sub esp, 0xc
mov eax, dword [ebp - 0x34]
push eax
call fcn.00446f00
xor eax, eax
xor edx, edx
mov al, byte [ebp - 0x11]
xor ecx, ecx
shl eax, 8
mov dl, byte [ebp - 0x12]
or edx, eax
mov cl, byte [ebp - 0x13]
xor eax, eax
and edx, 0xffff
shl ecx, 8
mov al, byte [ebp - 0x14]
or eax, ecx
add esp, 0x10
and eax, 0xffff
add edx, eax
mov eax, dword [ebp - 0x54]
lea edi, [edx + eax]
mov edx, edi
mov eax, edi
sar edx, 0x1f
cmp dword [ebp - 0x4c], edx
jge 0x44812c
push edi
push str.bad_data_offset__ld_in_zip_n
push str.zipro
push 5
call fcn.0044c320
xor eax, eax
add esp, 0x10
jmp 0x447fcd
jg 0x448133
cmp dword [ebp - 0x50], edi
jbe 0x448110
mov ecx, dword [ebp - 0x44]
xor ebx, ebx
add ecx, eax
adc ebx, edx
cmp dword [ebp - 0x4c], ebx
jg 0x44816e
jl 0x448148
cmp dword [ebp - 0x50], ecx
jae 0x44816e
push eax
push eax
mov esi, dword [ebp - 0x50]
push esi
mov ebx, dword [ebp - 0x44]
push ebx
push edi
push str.bad_compressed_length_in_zip___ld___ld____ld__n
push str.zipro
push 5
call fcn.0044c320
xor eax, eax
add esp, 0x20
jmp 0x447fcd
cmp word [ebp - 0x46], 0
jne 0x4481ac
mov ecx, esi
xor ebx, ebx
add ecx, eax
adc ebx, edx
cmp dword [ebp - 0x4c], ebx
jg 0x4481ac
jl 0x448189
cmp dword [ebp - 0x50], ecx
jae 0x4481ac
push ecx
push ecx
mov edx, dword [ebp - 0x50]
push edx
push esi
push edi
push str.ERROR:_bad_uncompressed_length_in_zip___ld___ld____ld__n
push str.zipro
push 6
call fcn.0044c320
xor eax, eax
add esp, 0x20
jmp 0x447fcd
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], eax
mov eax, 1
mov dword [ecx + 4], edx
jmp 0x447fcd