Function at 0x4015a0
Capabilities:
Read file on windows
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x1b8
mov eax, dword [0x4951c0]
xor eax, esp
mov dword [esp + 0x1b4], eax
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov ecx, 0x74
mov eax, 0x61
xor edi, edi
mov dword [esp + 0x24], esi
mov ebx, edx
mov dword [esp + 0x4c], 0x66
mov dword [esp + 0x50], 0x6d
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], 0x20
mov dword [esp + 0x5c], 0x64
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], eax
cmp dword [esi], edi
jne 0x401617
mov eax, dword [0x49ab6c]
mov edx, dword [eax + 0x10]
mov ecx, esi
call fcn.00401460
test eax, eax
je 0x40190f
mov ebp, dword [esp + 0x1cc]
mov dword [esi + ebp*4 + 0x12cc], edi
cmp dword [esi + ebp*4 + 0xc8c], edi
je 0x401662
mov eax, dword [esi + ebp*4 + 0x64c]
mov dword [esi + ebp*4 + 0xc8c], edi
mov ecx, dword [eax]
mov edx, dword [ecx + 0x48]
push eax
call edx
mov eax, dword [esi + ebp*4 + 0x64c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esi + ebp*4 + 0x96c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
push edi
push 0x8000
push ebx
call fcn.00408230
mov esi, eax
add esp, 0xc
cmp esi, 0xffffffff
je 0x40190f
push esi
call fcn.004080b4
push esi
call fcn.00409464
push 0x92
lea eax, [esp + 0x9c]
push edi
push eax
mov dword [esp + 0x2c], edi
call fcn.004112a0
mov eax, ebx
add esp, 0x14
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4016a7
sub eax, edx
mov ecx, 0x48b1fc
lea eax, [ebx + eax - 3]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4016e0
test dl, dl
je 0x4016dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4016e0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4016c0
xor eax, eax
jmp 0x4016e5
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x40179a
cmp dword [0x58f9d4], edi
jne 0x401707
push str.oggdec.dll
push 0x48b1d8
call fcn.00458fe0
add esp, 8
mov ecx, 0x12
mov word [esp + 0xa0], cx
mov edx, 0x10
mov esi, 1
lea ecx, [esp + 0x18]
push ecx
mov word [esp + 0xa2], dx
mov eax, esi
lea edx, [esp + 0x98]
mov word [esp + 0x94], ax
push edx
lea eax, [esp + 0x9a]
push eax
push ebx
call dword [0x58f9d4]
movzx ecx, word [esp + 0xae]
movzx eax, word [esp + 0xa2]
imul eax, ecx
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
cdq
and edx, 7
add eax, edx
sar eax, 3
movzx ecx, ax
add esp, 0x10
imul ecx, dword [esp + 0x94]
mov dword [esp + 0x20], ebx
mov word [esp + 0x9c], ax
mov dword [esp + 0x98], ecx
mov dword [esp + 0x18], esi
jmp 0x401874
push 0x48b1d4
push ebx
call fcn.00408bd7
mov ebp, eax
push ebp
xor esi, esi
call fcn.004086d9
add esp, 0xc
cmp eax, 0xffffffff
je 0x40190f
jmp 0x4017c0
cmp eax, dword [esp + esi*4 + 0x4c]
jne 0x4018fb
inc esi
cmp esi, 4
jne 0x4018fd
push ebp
call fcn.004086d9
push ebp
mov esi, eax
call fcn.004086d9
shl eax, 8
push ebp
add esi, eax
call fcn.004086d9
shl eax, 0x10
push ebp
add esi, eax
call fcn.004086d9
shl eax, 0x18
push ebp
add esi, eax
push esi
lea edx, [esp + 0xa8]
push 1
push edx
call fcn.00408e8e
push ebp
xor esi, esi
call fcn.004086d9
add esp, 0x24
cmp eax, 0xffffffff
je 0x40192a
cmp eax, dword [esp + esi*4 + 0x5c]
jne 0x401916
inc esi
cmp esi, 4
jne 0x401918
push ebp
call fcn.004086d9
push ebp
mov esi, eax
call fcn.004086d9
shl eax, 8
push ebp
add esi, eax
call fcn.004086d9
shl eax, 0x10
push ebp
add esi, eax
call fcn.004086d9
mov ecx, dword [esp + 0xa8]
shl eax, 0x18
add esp, 0x10
add esi, eax
mov dword [esp + 0x20], esi
mov ebx, esi
mov esi, 1
cmp word [esp + 0x90], si
je 0x401931
push 0
push 0
push ebx
lea ebx, [esp + 0x38]
lea eax, [esp + 0x44]
lea edi, [esp + 0x9c]
mov dword [esp + 0x28], esi
call fcn.0046e990
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x2c]
mov esi, edi
mov ecx, 0x24
lea edi, [esp + 0x134]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x48]
movsw word es:[edi], word [esi]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0xa8], eax
mov ax, word [esp + 0x54]
add esp, 0xc
mov dword [esp + 0x98], ecx
mov word [esp + 0xa0], ax
jmp 0x401933
xor esi, esi
push ebp
call fcn.004086d9
add esp, 4
cmp eax, 0xffffffff
jne 0x4017c0
xor eax, eax
jmp 0x401b42
xor esi, esi
push ebp
call fcn.004086d9
add esp, 4
cmp eax, 0xffffffff
jne 0x401822
xor eax, eax
jmp 0x401b42
mov edx, ebx
xor eax, eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x6c], 0x24
mov dword [esp + 0x70], 0x81e0
mov dword [esp + 0x74], edx
cmp dword [esp + 0x18], eax
je 0x40198b
cmp ecx, edx
jbe 0x40198b
mov dword [esp + 0x74], ecx
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x644]
mov edx, dword [esp + 0x1cc]
push 0
lea esi, [esi + edx*4 + 0x64c]
push esi
lea ecx, [esp + 0x98]
lea edx, [esp + 0x74]
mov dword [esp + 0x84], ecx
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
mov eax, dword [esi]
mov ecx, dword [eax]
push 0
push 0
push 0
lea edx, [esp + 0x1c]
push edx
lea edx, [esp + 0x24]
push edx
mov edx, dword [esp + 0x24]
push edx
push 0
push eax
mov eax, dword [ecx + 0x2c]
call eax
cmp dword [esp + 0x18], 0
je 0x401a07
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push ecx
push edx
call dword [0x58f9dc]
add esp, 8
call dword [0x58f9e4]
jmp 0x401a91
test edi, edi
jne 0x401a36
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
push eax
push edi
push ecx
call fcn.004112a0
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
push ebp
push edx
push 1
push eax
call fcn.00408e8e
add esp, 0x1c
mov dword [esp + 0x28], eax
jmp 0x401a88
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push ecx
push 0
push edx
call fcn.004112a0
push ebx
call fcn.004082ac
push ebp
push ebx
mov edi, eax
push 1
push edi
mov dword [esp + 0x3c], edi
call fcn.00408e8e
mov ecx, dword [esp + 0x34]
push ecx
push edi
push eax
lea ebx, [esp + 0x54]
lea eax, [esp + 0xbc]
lea edi, [esp + 0x154]
call fcn.0046e990
mov edx, dword [esp + 0x48]
push edx
call fcn.00407f4f
add esp, 0x30
push ebp
call fcn.00409014
add esp, 4
mov edx, dword [esp + 0x28]
mov eax, dword [esi]
mov ecx, dword [eax]
push 0
push 0
push edx
mov edx, dword [esp + 0x20]
push edx
push eax
mov eax, dword [ecx + 0x4c]
call eax
mov eax, dword [esi]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x34]
push 0
push eax
call edx
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1cc]
mov esi, dword [esi]
mov edx, dword [esi]
lea edi, [eax + ecx*4 + 0x96c]
mov eax, dword [edx]
push edi
push 0x47d080
push esi
call eax
cmp dword [edi], 0
jne 0x401aed
push 0x48b200
push 0x48b200
call fcn.00458fe0
add esp, 8
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x1cc]
mov ecx, dword [ebx + esi*4 + 0x324]
mov edi, dword [edi]
lea eax, [esp + 0x30]
push eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], 0xffffffff
mov edx, dword [edi]
mov ecx, dword [edx + 0xc]
push 1
push edi
call ecx
test eax, eax
je 0x401b32
push str._not3
push str._not3
call fcn.00458fe0
add esp, 8
mov dword [ebx + esi*4 + 0xc8c], 1
mov eax, 1
mov ecx, dword [esp + 0x1c4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00407f40
add esp, 0x1b8
ret 4