Function at 0x406ef0
Capabilities:
Read file on windows

Disassembly:
mov eax, dword [0x41cd24]
sub esp, 0x30
push ebx
push ebp
push esi
push edi
mov ebx, 0x2a
lea ebp, [esp + 0x10]
test eax, eax
jne 0x406f54
mov eax, dword [0x41cd20]
mov ecx, dword [0x41cdd8]
push 0x2000
push eax
push ecx
call fcn.0041227f
add esp, 0xc
mov dword [0x41cd24], eax
test eax, eax
je 0x4071ae
jl 0x4071ca
mov ecx, dword [0x424f78]
mov edx, dword [0x41cd20]
add ecx, 0x2000
mov dword [0x41cdc4], edx
mov dword [0x424f78], ecx
cmp ebx, eax
mov edx, ebx
jb 0x406f5c
mov edx, eax
mov esi, dword [0x41cdc4]
mov ecx, edx
mov eax, ecx
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
add ebp, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [0x41cdc4]
mov eax, dword [0x41cd24]
add edi, edx
sub eax, edx
sub ebx, edx
mov dword [0x41cdc4], edi
mov dword [0x41cd24], eax
jne 0x406f05
mov dl, byte [esp + 0x11]
mov al, byte [esp + 0x12]
mov cl, byte [esp + 0x10]
mov byte [0x424f41], dl
mov byte [0x424f42], al
xor edx, edx
movzx ax, byte [esp + 0x14]
mov dh, byte [esp + 0x15]
mov byte [0x424f40], cl
mov cl, byte [esp + 0x13]
or edx, eax
mov byte [0x424f43], cl
mov word [0x424f44], dx
movzx dx, byte [esp + 0x16]
xor ecx, ecx
xor eax, eax
mov ch, byte [esp + 0x17]
mov ah, byte [esp + 0x19]
or ecx, edx
xor edx, edx
mov word [str.HO4h_b], cx
mov dh, byte [esp + 0x1b]
movzx cx, byte [esp + 0x18]
or eax, ecx
mov ecx, dword [esp + 0x1f]
mov word [0x424f48], ax
and ecx, 0xff
movzx ax, byte [esp + 0x1a]
or edx, eax
mov eax, dword [esp + 0x1d]
mov word [0x424f4a], dx
mov edx, dword [esp + 0x1e]
shl ecx, 8
and edx, 0xff
and eax, 0xff
add ecx, edx
mov edx, dword [esp + 0x1c]
shl ecx, 8
add ecx, eax
mov eax, dword [esp + 0x23]
shl ecx, 8
and edx, 0xff
and eax, 0xff
add ecx, edx
mov edx, dword [esp + 0x21]
mov dword [0x424f4c], ecx
mov ecx, dword [esp + 0x22]
shl eax, 8
and ecx, 0xff
and edx, 0xff
add eax, ecx
mov ecx, dword [esp + 0x20]
shl eax, 8
add eax, edx
and ecx, 0xff
shl eax, 8
add eax, ecx
mov ecx, dword [esp + 0x26]
mov dword [0x424f50], eax
mov eax, dword [esp + 0x27]
mov edx, eax
and ecx, 0xff
and edx, 0xff
shl edx, 8
add edx, ecx
mov ecx, dword [esp + 0x25]
shl edx, 8
and ecx, 0xff
add edx, ecx
mov ecx, dword [esp + 0x24]
shl edx, 8
and ecx, 0xff
add edx, ecx
mov dword [0x424f54], edx
xor edx, edx
mov dh, byte [esp + 0x29]
movzx ax, ah
or edx, eax
xor ecx, ecx
mov ch, byte [esp + 0x2b]
mov word [0x424f58], dx
movzx dx, byte [esp + 0x2a]
or ecx, edx
xor eax, eax
mov ah, byte [esp + 0x2d]
mov word [0x424f5a], cx
movzx cx, byte [esp + 0x2c]
or eax, ecx
xor edx, edx
mov dh, byte [esp + 0x2f]
mov word [0x424f5c], ax
movzx ax, byte [esp + 0x2e]
or edx, eax
mov eax, dword [esp + 0x35]
mov word [0x424f5e], dx
xor ecx, ecx
movzx dx, byte [esp + 0x30]
mov ch, byte [esp + 0x31]
and eax, 0xff
or ecx, edx
mov edx, dword [esp + 0x33]
mov word [0x424f60], cx
mov ecx, dword [esp + 0x34]
shl eax, 8
and ecx, 0xff
and edx, 0xff
add eax, ecx
mov ecx, dword [esp + 0x32]
shl eax, 8
add eax, edx
mov edx, dword [esp + 0x39]
shl eax, 8
and ecx, 0xff
and edx, 0xff
add eax, ecx
mov ecx, dword [esp + 0x37]
mov dword [0x424f64], eax
mov eax, dword [esp + 0x38]
shl edx, 8
and eax, 0xff
and ecx, 0xff
add edx, eax
mov eax, dword [esp + 0x36]
shl edx, 8
add edx, ecx
and eax, 0xff
shl edx, 8
pop edi
add edx, eax
pop esi
pop ebp
mov dword [0x424f68], edx
xor eax, eax
pop ebx
add esp, 0x30
ret
mov eax, 0x2a
sub eax, ebx
test eax, eax
jne 0x406f98
pop edi
pop esi
pop ebp
mov eax, 0x33
pop ebx
add esp, 0x30
ret
push str.error:__zipfile_read_error_n
push 0x419ea0
call fcn.0040dba4
add esp, 8
mov eax, 0x33
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret