Function at 0x401e50
Capabilities:
Read file on windows

Disassembly:
mov eax, 0xfd5c
call fcn.00403fc0
push ebx
push ebp
push esi
mov esi, dword [esp + 0xfd6c]
push edi
push 0
push 0
push 0x402
push 0x3f4
push esi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov edi, dword [esp + 0xfd78]
push edi
call fcn.00403340
mov ebx, eax
lea eax, [esp + 0x20]
push 8
push eax
push edi
mov dword [esp + 0x34], ebx
call fcn.00403351
add esp, 0x10
cmp eax, 8
je 0x401ebb
mov ecx, dword [esp + 0xfd74]
push ecx
push str.Error_reading_RIFF_ID_for__s
jmp 0x402559
lea edx, [esp + 0x1c]
mov ecx, str.RIFF
mov eax, dword [edx]
mov edx, dword [ecx]
cmp eax, edx
je 0x401ede
mov ecx, dword [esp + 0xfd74]
push ecx
push str.Missing_RIFF_ID_for__s
jmp 0x402559
lea ecx, [esp + 0x14]
push 4
push ecx
push edi
call fcn.00403351
add esp, 0xc
cmp eax, 4
je 0x401f02
mov edx, dword [esp + 0xfd74]
push edx
push str.Error_reading_WAVE_tag_for__s
jmp 0x401f20
lea eax, [esp + 0x14]
mov edx, str.WAVE
mov ecx, dword [eax]
mov eax, dword [edx]
cmp ecx, eax
je 0x401f4d
mov edx, dword [esp + 0xfd74]
push edx
push str.Missing_WAVE_tag_for__s
lea eax, [esp + 0x38]
push eax
call fcn.004032ee
add esp, 0xc
lea ecx, [esp + 0x30]
push 0x10
push str.Error
push ecx
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd5c
ret
xor ebp, ebp
push edi
mov dword [esp + 0x14], ebp
call fcn.00403340
mov ecx, dword [esp + 0xfd80]
sub eax, ebx
add esp, 4
cmp eax, ecx
jge 0x40254c
lea edx, [esp + 0x1c]
push 8
push edx
push edi
call fcn.00403351
add esp, 0xc
cmp eax, 8
jne 0x40208d
push edi
call fcn.00403340
mov esi, eax
lea ecx, [esp + 0x20]
mov eax, str.fmt
add esp, 4
mov edx, dword [ecx]
cmp edx, dword [eax]
jne 0x40201b
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4020f9
lea eax, [esp + 0x258]
push 0x12
push eax
push edi
mov dword [esp + 0x1c], 1
call fcn.00403351
add esp, 0xc
cmp eax, 0x12
jne 0x402118
cmp word [esp + 0x258], 1
je 0x402051
mov eax, dword [esp + 0x268]
test ax, ax
jbe 0x402051
cmp ax, 0x100
jae 0x402051
and eax, 0xffff
lea ecx, [esp + 0x26a]
push eax
push ecx
push edi
call fcn.00403351
mov edx, dword [esp + 0x274]
add esp, 0xc
and edx, 0xffff
cmp eax, edx
jne 0x402137
jmp 0x402051
lea ecx, [esp + 0x1c]
mov eax, 0x40a824
mov edx, dword [ecx]
mov ecx, dword [eax]
cmp edx, ecx
jne 0x402051
test ebp, ebp
jne 0x402156
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x28], eax
mov eax, esi
sub eax, ebx
mov ebp, 1
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x20]
push 0
add edx, esi
push edx
push edi
call fcn.004035fa
add esp, 0xc
cmp eax, 0xffffffff
je 0x402165
push edi
call fcn.00403340
mov ecx, dword [esp + 0xfd80]
mov esi, dword [esp + 0xfd74]
sub eax, ebx
add esp, 4
cmp eax, ecx
jl 0x401f6d
mov eax, dword [esp + 0x10]
test eax, eax
je 0x40254c
test ebp, ebp
je 0x40254c
mov ebx, dword [esp + 0xfd74]
push 0x5c
push ebx
call fcn.00403bf0
mov esi, eax
add esp, 8
test esi, esi
je 0x4021b1
mov ebp, 0x11
push ebx
mov byte [esi], 0
call fcn.00403f85
add esp, 4
cmp eax, 0xffffffff
jne 0x4020df
cmp dword [0x40b854], ebp
jne 0x402174
mov byte [esi], 0x5c
inc esi
push 0x5c
push esi
call fcn.00403bf0
mov esi, eax
add esp, 8
test esi, esi
jne 0x4020c2
jmp 0x4021b1
mov eax, dword [esp + 0xfd74]
push eax
push str.Entry__s_got_more_than_one_FMT_chunk
lea ecx, [esp + 0x38]
push ecx
call fcn.004032ee
add esp, 0xc
jmp 0x40250d
mov ecx, dword [esp + 0xfd74]
push ecx
push str.Error_reading_FMT_header_for__s
lea edx, [esp + 0x38]
push edx
call fcn.004032ee
add esp, 0xc
jmp 0x4023e8
mov edx, dword [esp + 0xfd74]
lea eax, [esp + 0x30]
push edx
push str.Error_reading_extended_FMT_header_for__s
push eax
call fcn.004032ee
add esp, 0xc
jmp 0x402446
mov eax, dword [esp + 0xfd74]
push eax
push str.Entry__s_got_more_than_one_DATA_chunk
jmp 0x402106
mov ecx, dword [esp + 0xfd74]
push ecx
push str.Unable_to_seek_to_next_chunk_for__s
jmp 0x402125
push ebx
lea edx, [esp + 0x34]
push str.Unable_to_create_subdirectory__s
push edx
call fcn.004032ee
mov ecx, dword [esp + 0xfd7c]
add esp, 0xc
lea eax, [esp + 0x30]
push 0x10
push str.Error
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov byte [esi], 0x5c
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd5c
ret
push 0x180
push 0x8301
push ebx
call fcn.0040390c
mov ebp, eax
add esp, 0xc
cmp ebp, 0xffffffff
jne 0x4021d6
push ebx
push str.Unable_to_open__s_for_writing
jmp 0x402125
mov edx, dword [esp + 0x24]
push 0
push edx
push edi
call fcn.004035fa
add esp, 0xc
cmp eax, 0xffffffff
jne 0x402202
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
push str.Unable_to_seek_to_start_of_entry__s
jmp 0x402439
xor eax, eax
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x18]
lea edx, [eax + 0xfa00]
cmp edx, ecx
mov esi, 0xfa00
jle 0x40221f
mov esi, ecx
sub esi, eax
lea eax, [esp + 0x36c]
push esi
push eax
push edi
call fcn.00403351
add esp, 0xc
cmp eax, esi
jne 0x402263
lea ecx, [esp + 0x36c]
push esi
push ecx
push ebp
call fcn.00403cd6
add esp, 0xc
cmp eax, esi
jne 0x4023c9
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
add eax, esi
cmp eax, ecx
mov dword [esp + 0x10], eax
jge 0x40227a
jmp 0x402208
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
push str.Unable_to_read_data_of_entry__s
jmp 0x4023db
mov edx, dword [esp + 0xfd7c]
mov esi, dword [esp + 0xfd70]
sar edx, 0xa
and edx, 0xffff
shl edx, 0x10
push edx
push 0
push 0x401
push 0x3f4
push esi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
lea eax, [esp + 0x238]
push 0x1e
push eax
push edi
call fcn.00403351
add esp, 0xc
cmp eax, 0x1e
je 0x402306
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
lea ecx, [esp + 0x3c]
push str.Unable_to_read_mp3_format_header_of_entry__s
push ecx
call fcn.004032ee
add esp, 0x14
lea edx, [esp + 0x30]
push 0x10
push str.Error
push edx
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd5c
ret
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0xfd80]
add ecx, 0xffffffe2
push eax
lea edx, [esp + 0x25c]
push ecx
lea eax, [esp + 0x240]
push edx
push eax
push ebp
push edi
push ebx
push esi
call fcn.004026f0
add esp, 0x20
mov dword [esp + 0x24], eax
test eax, eax
jne 0x402356
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xfd5c
ret
mov edi, dword [esp + 0xfd7c]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
sub edi, ecx
sub edi, eax
xor eax, eax
mov dword [esp + 0x10], eax
lea ecx, [eax + 0xfa00]
mov esi, 0xfa00
cmp ecx, edi
jle 0x402382
mov esi, edi
sub esi, eax
mov eax, dword [esp + 0xfd78]
lea edx, [esp + 0x36c]
push esi
push edx
push eax
call fcn.00403351
add esp, 0xc
cmp eax, esi
jne 0x402263
lea ecx, [esp + 0x36c]
push esi
push ecx
push ebp
call fcn.00403cd6
add esp, 0xc
cmp eax, esi
jne 0x4023c9
mov eax, dword [esp + 0x10]
add eax, esi
cmp eax, edi
mov dword [esp + 0x10], eax
jge 0x40240f
jmp 0x40236f
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
push str.Unable_to_write_to__s
lea edx, [esp + 0x40]
push edx
call fcn.004032ee
add esp, 0x14
mov ecx, dword [esp + 0xfd70]
push 0x10
lea eax, [esp + 0x34]
push str.Error
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd5c
ret
mov edx, dword [esp + 0x18]
push 0
add edx, 0xfffffffc
push edx
push ebp
call fcn.004035fa
add esp, 0xc
cmp eax, 0xffffffff
jne 0x40246d
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
push str.Unable_to_seek_to_start_in__s_to_fixup_DATA_header
lea eax, [esp + 0x40]
push eax
call fcn.004032ee
add esp, 0x14
mov edx, dword [esp + 0xfd70]
push 0x10
lea ecx, [esp + 0x34]
push str.Error
push ecx
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd5c
ret
mov esi, dword [esp + 0x24]
lea eax, [esp + 0x14]
push 4
push eax
push ebp
mov dword [esp + 0x20], esi
call fcn.00403cd6
add esp, 0xc
cmp eax, 4
je 0x40249e
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
push str.Unable_to_fixup_DATA_header_of__s
jmp 0x402500
push 0
push 4
push ebp
call fcn.004035fa
add esp, 0xc
cmp eax, 0xffffffff
jne 0x4024c4
push ebp
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
push str.Unable_to_seek_to_start_in__s_to_fixup_RIFF_header
jmp 0x402500
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x14]
sub esi, ecx
mov ecx, dword [esp + 0xfd7c]
push 4
push eax
lea edx, [esi + ecx - 8]
push ebp
mov dword [esp + 0x20], edx
call fcn.00403cd6
add esp, 0xc
cmp eax, 4
push ebp
je 0x402534
call fcn.00403547
push ebx
call fcn.00403cac
push ebx
push str.Unable_to_fixup_RIFF_header_of__s
lea ecx, [esp + 0x40]
push ecx
call fcn.004032ee
add esp, 0x14
mov eax, dword [esp + 0xfd70]
push 0x10
lea edx, [esp + 0x34]
push str.Error
push edx
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd5c
ret
call fcn.00403547
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xfd5c
ret
mov ecx, dword [esp + 0xfd74]
push ecx
push str.FMT_and_or_DATA_chunk_missing_for__s
lea edx, [esp + 0x38]
push edx
call fcn.004032ee
add esp, 0xc
lea eax, [esp + 0x30]
push 0x10
push str.Error
push eax
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd5c
ret