Function at 0x405b20
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [0x552064]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov esi, ecx
mov ecx, esi
call fcn.004024d0
mov ebx, eax
mov dword [ebp - 0x30], ebx
test ebx, ebx
jle 0x405e00
mov edx, dword [esi + 0x20]
mov dword [ebp - 0x28], edx
test edx, edx
je 0x405b57
mov eax, edx
jmp 0x405b6e
push dword [esi + 0x14]
call fcn.00502c51
mov edx, eax
add esp, 4
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x28], edx
test eax, eax
je 0x405b87
cmp eax, dword [esi + 0x28]
jb 0x405b7f
mov dword [esi + 0x5d], 1
jmp 0x405d9e
mov cl, byte [eax]
inc eax
mov dword [esi + 0x20], eax
jmp 0x405bab
push dword [esi + 0x14]
call fcn.00501d00
mov edx, dword [ebp - 0x28]
mov ecx, eax
add esp, 4
cmp ecx, 0xffffffff
jne 0x405ba8
mov dword [esi + 0x5d], 1
jmp 0x405d9e
mov dword [ebp - 0x28], edx
cmp cl, 3
jne 0x405d9e
mov ecx, dword [esi + 0x20]
test ecx, ecx
je 0x405bd9
lea edx, [ecx + 6]
cmp edx, dword [esi + 0x28]
ja 0x405d94
mov eax, dword [ecx]
mov dword [ebp - 0xc], eax
mov ax, word [ecx + 4]
mov word [ebp - 8], ax
mov dword [esi + 0x20], edx
jmp 0x405bf5
push dword [esi + 0x14]
lea eax, [ebp - 0xc]
push 1
push 6
push eax
call fcn.0050248a
add esp, 0x10
cmp eax, 1
jne 0x405d94
mov edx, str.vorbis
lea ecx, [ebp - 0xc]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x405d9b
movzx eax, word [ecx + 4]
cmp ax, word [edx + 4]
jne 0x405d9b
mov ecx, esi
call fcn.00401f00
mov ecx, dword [esi + 0x20]
mov edi, eax
test ecx, ecx
je 0x405c39
lea eax, [ecx + edi]
mov dword [esi + 0x20], eax
cmp eax, dword [esi + 0x28]
jb 0x405c51
mov dword [esi + 0x5d], 1
jmp 0x405c51
push dword [esi + 0x14]
call fcn.00502c51
push 0
add eax, edi
push eax
push dword [esi + 0x14]
call fcn.00502f33
add esp, 0x10
mov ecx, esi
call fcn.00401f00
mov edi, eax
mov dword [ebp - 0x2c], eax
test edi, edi
jle 0x405d9b
mov ecx, esi
call fcn.00401f00
mov ebx, eax
cmp ebx, 0x15
jg 0x405c8c
mov eax, dword [esi + 0x20]
test eax, eax
je 0x405cc4
lea edi, [eax + ebx]
cmp edi, dword [esi + 0x28]
jbe 0x405cb1
mov edi, dword [ebp - 0x2c]
mov dword [esi + 0x5d], 1
mov eax, dword [esi + 0x20]
test eax, eax
je 0x405d7a
add eax, ebx
mov dword [esi + 0x20], eax
cmp eax, dword [esi + 0x28]
jb 0x405d69
mov dword [esi + 0x5d], 1
jmp 0x405d69
push ebx
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.004fd9e0
add esp, 0xc
mov dword [esi + 0x20], edi
jmp 0x405cdb
push dword [esi + 0x14]
lea eax, [ebp - 0x24]
push 1
push ebx
push eax
call fcn.0050248a
add esp, 0x10
cmp eax, 1
jne 0x405c85
cmp ebx, 0x16
jae 0x405e20
mov edx, str.LOOPSTART
mov byte [ebp + ebx - 0x24], 0
lea ecx, [ebp - 0x24]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x405d1e
mov eax, dword [ecx + 4]
cmp eax, dword [edx + 4]
jne 0x405d1e
movzx eax, word [ecx + 8]
cmp ax, word [edx + 8]
jne 0x405d1e
lea eax, [esi + 0x5e3]
push eax
lea edx, [ebx - 0xa]
lea ecx, [ebp - 0x1a]
call fcn.00405ac0
add esp, 4
lea ecx, [ebp - 0x24]
mov edx, str.LOOPLENGTH
mov edi, 7
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x405d66
add ecx, 4
add edx, 4
sub edi, 4
jae 0x405d30
mov ax, word [ecx]
cmp ax, word [edx]
jne 0x405d66
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x405d66
lea eax, [esi + 0x5e7]
push eax
lea edx, [ebx - 0xb]
lea ecx, [ebp - 0x19]
call fcn.00405ac0
add esp, 4
mov edi, dword [ebp - 0x2c]
dec edi
mov dword [ebp - 0x2c], edi
test edi, edi
jg 0x405c65
mov ebx, dword [ebp - 0x30]
jmp 0x405d9b
push dword [esi + 0x14]
call fcn.00502c51
push 0
add eax, ebx
push eax
push dword [esi + 0x14]
call fcn.00502f33
add esp, 0x10
jmp 0x405d69
mov dword [esi + 0x5d], 1
mov edx, dword [ebp - 0x28]
cmp dword [esi + 0x20], 0
je 0x405da9
mov dword [esi + 0x20], edx
jmp 0x405dba
push 0
push edx
push dword [esi + 0x14]
call fcn.00502f33
mov edx, dword [esi + 0x20]
add esp, 0xc
test edx, edx
je 0x405ddc
lea eax, [edx + ebx]
mov dword [esi + 0x20], eax
cmp eax, dword [esi + 0x28]
jb 0x405dd0
mov dword [esi + 0x5d], 1
mov byte [esi + 0x55d], 0
jmp 0x405b35
push dword [esi + 0x14]
call fcn.00502c51
push 0
add eax, ebx
push eax
push dword [esi + 0x14]
call fcn.00502f33
add esp, 0x10
mov byte [esi + 0x55d], 0
jmp 0x405b35
mov byte [esi + 0x55d], 0
test ebx, ebx
jne 0x405b35
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
call fcn.004e6824
int3