Function at 0x5119d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x7053f4
mov eax, dword fs:[0]
push eax
sub esp, 0xa0
push ebx
push esi
push edi
mov eax, dword [0x7e6410]
xor eax, esp
push eax
lea eax, [esp + 0xb0]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x18], esi
mov eax, dword [esi + 8]
cmp dword [eax], 0
mov eax, dword [esi + 4]
sete byte [esp + 0x2c]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov ecx, dword [esi + 8]
push 0
lea ebx, [eax + 4]
mov dword [ecx + 8], ebx
mov ecx, dword [esi + 4]
push ebx
mov ecx, dword [ecx]
mov edx, dword [ecx]
call dword [edx + 0x20]
push 4
lea eax, [esp + 0x78]
mov ecx, esi
push eax
call fcn.004c8d10
push dword [esp + 0x2c]
xor edx, edx
mov dword [esp + 0xbc], 0
mov ecx, eax
call fcn.004c4550
mov ecx, dword [esi + 8]
add esp, 4
mov dword [esp + 0xb8], 0xffffffff
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x74], vtable.TagLib::ByteVector.0
test ecx, ecx
je 0x511a83
push ecx
call fcn.004c2ee0
mov eax, dword [esi + 4]
add ebx, 8
push 0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x20]
mov eax, dword [esi + 4]
lea edi, [ebx + 8]
mov dword [esp + 0x20], edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x2c]
cmp edi, eax
jg 0x51214f
cmp byte [esp + 0x2c], 0
setne byte [esp + 0x1f]
mov eax, dword [esi + 4]
push 0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x20]
push 4
lea eax, [esp + 0x28]
mov ecx, esi
push eax
call fcn.004c8d10
push 4
lea eax, [esp + 0x60]
mov dword [esp + 0xbc], 1
push eax
mov ecx, esi
call fcn.004c8d10
mov byte [esp + 0xb8], 2
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0xc]
cmp edx, 4
jae 0x511b12
push dword [esp + 0x2c]
mov ecx, eax
push edx
xor edx, edx
call fcn.004c45d0
add esp, 8
mov edi, eax
jmp 0x511b4f
test edx, edx
je 0x511b20
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
add ecx, dword [eax]
jmp 0x511b22
xor ecx, ecx
cmp byte [esp + 0x1f], 0
mov ecx, dword [ecx]
mov edi, ecx
je 0x511b4f
mov eax, ecx
and edi, 0xff0000
shr eax, 0x10
or edi, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr edi, 8
shl eax, 8
or edi, eax
mov byte [esp + 0xb8], 1
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x5c], vtable.TagLib::ByteVector.0
test ebx, ebx
je 0x511bc2
mov edx, dword [ebx]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x511bb9
mov ecx, dword [ebx]
test ecx, ecx
je 0x511b82
mov eax, dword [ecx]
push 1
call dword [eax]
mov esi, dword [ebx + 4]
test esi, esi
je 0x511bb5
mov eax, dword [esi]
test eax, eax
je 0x511bac
push eax
call fcn.006b31f8
add esp, 4
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
push esi
call fcn.006b31f8
add esp, 4
mov esi, dword [esp + 0x18]
push ebx
call fcn.006b31f8
add esp, 4
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0xc]
cmp edx, 4
jne 0x512045
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
mov eax, dword [ebx]
add ecx, eax
add eax, dword [esp + 0x14]
add eax, edx
cmp ecx, eax
je 0x511c0a
mov eax, dword [ebx]
add eax, dword [esp + 0x14]
add eax, edx
movzx edx, byte [ecx]
add edx, 0xffffffe0
cmp edx, 0x5f
ja 0x512045
inc ecx
cmp ecx, eax
jne 0x511bf6
mov eax, dword [esi + 4]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov ebx, dword [esp + 0x18]
mov esi, eax
mov ecx, dword [ebx + 4]
mov ecx, dword [ecx]
mov edx, dword [ecx]
call dword [edx + 0x2c]
cdq
mov dword [esp + 0x14], eax
mov ecx, edx
mov eax, esi
cdq
add eax, edi
adc edx, 0
cmp edx, ecx
jg 0x511f5e
jl 0x511c47
cmp eax, dword [esp + 0x14]
ja 0x511f5e
mov ebx, dword [esp + 0x20]
push 0x10
mov dword [esp + 0x34], vtable.TagLib::ByteVector.0
call fcn.006b6815
add esp, 4
test eax, eax
je 0x511f4a
mov dword [esp + 0x14], eax
push 0
push 0
mov ecx, eax
mov byte [esp + 0xc0], 7
call fcn.004c2870
mov esi, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x34], esi
mov byte [esp + 0xb8], 8
push 0x10
mov dword [esp + 0x68], vtable.TagLib::ByteVector.0
call fcn.006b6815
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
je 0x511f36
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov edx, dword [eax + 0xc]
mov ecx, dword [eax]
mov dword [esi], ecx
mov ecx, dword [eax + 4]
mov dword [esi + 4], ecx
mov ecx, esi
mov eax, dword [eax + 8]
mov esi, dword [esp + 0x14]
mov dword [ecx + 0xc], edx
mov edx, dword [ecx]
mov dword [ecx + 8], eax
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
inc ecx
mov dword [esp + 0x68], esi
mov dword [esp + 0x64], vtable.TagLib::ByteVector.0
mov dword [eax], ecx
mov eax, dword [esp + 0x20]
mov dword [esp + 0x34], eax
test esi, esi
je 0x511d50
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x511d47
mov ecx, dword [esi]
test ecx, ecx
je 0x511d10
mov eax, dword [ecx]
push 1
call dword [eax]
mov esi, dword [esi + 4]
test esi, esi
je 0x511d43
mov eax, dword [esi]
test eax, eax
je 0x511d3a
push eax
call fcn.006b31f8
add esp, 4
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
push esi
call fcn.006b31f8
add esp, 4
mov esi, dword [esp + 0x14]
push esi
call fcn.006b31f8
add esp, 4
mov dword [esp + 0x38], ebx
add ebx, edi
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x18]
push 0
push ebx
mov eax, dword [edi + 4]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x20]
mov dword [esp + 0x40], 0
test bl, 1
je 0x511e0e
push 1
lea eax, [esp + 0x70]
mov ecx, edi
push eax
call fcn.004c8d10
mov esi, dword [esp + 0x70]
cmp dword [esi + 0xc], 1
jne 0x511dab
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
mov eax, dword [eax]
cmp byte [ecx + eax], 0
jne 0x511dab
mov dword [esp + 0x40], 1
inc ebx
mov dword [esp + 0x6c], vtable.TagLib::ByteVector.0
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x511e05
mov ecx, dword [esi]
test ecx, ecx
je 0x511dce
mov eax, dword [ecx]
push 1
call dword [eax]
mov edi, dword [esi + 4]
test edi, edi
je 0x511e01
mov eax, dword [edi]
test eax, eax
je 0x511df8
push eax
call fcn.006b31f8
add esp, 4
mov dword [edi], 0
mov dword [edi + 4], 0
mov dword [edi + 8], 0
push edi
call fcn.006b31f8
add esp, 4
mov edi, dword [esp + 0x18]
push esi
call fcn.006b31f8
add esp, 4
mov ecx, dword [edi + 8]
lea eax, [esp + 0x30]
push eax
add ecx, 0xc
call fcn.005123e0
mov byte [esp + 0xb8], 1
mov edx, dword [esp + 0x34]
mov dword [esp + 0x30], vtable.TagLib::ByteVector.0
test edx, edx
je 0x511e91
mov edx, dword [edx]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov edi, dword [esp + 0x34]
mov dword [eax], ecx
jne 0x511e88
mov ecx, dword [edi]
test ecx, ecx
je 0x511e55
mov eax, dword [ecx]
push 1
call dword [eax]
mov esi, dword [edi + 4]
test esi, esi
je 0x511e88
mov eax, dword [esi]
test eax, eax
je 0x511e7f
push eax
call fcn.006b31f8
add esp, 4
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
push esi
call fcn.006b31f8
add esp, 4
push edi
call fcn.006b31f8
add esp, 4
mov dword [esp + 0xb8], 0xffffffff
mov edi, dword [esp + 0x28]
mov dword [esp + 0x24], vtable.TagLib::ByteVector.0
test edi, edi
je 0x511f03
mov edx, dword [edi]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x511efa
mov ecx, dword [edi]
test ecx, ecx
je 0x511ec7
mov eax, dword [ecx]
push 1
call dword [eax]
mov esi, dword [edi + 4]
test esi, esi
je 0x511efa
mov eax, dword [esi]
test eax, eax
je 0x511ef1
push eax
call fcn.006b31f8
add esp, 4
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
push esi
call fcn.006b31f8
add esp, 4
push edi
call fcn.006b31f8
add esp, 4
mov esi, dword [esp + 0x18]
lea edi, [ebx + 8]
mov dword [esp + 0x20], edi
mov eax, dword [esi + 4]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x2c]
cmp edi, eax
jle 0x511ab6
mov ecx, dword [esp + 0xb0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x7da8d8
lea eax, [esp + 0x22]
mov byte [esp + 0x22], 0
push eax
call fcn.006b4394
push 0x7da8d8
lea eax, [esp + 0x21]
mov byte [esp + 0x21], 0
push eax
call fcn.006b4394
push 0
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x4c]
call fcn.004c5710
lea eax, [esp + 0x44]
mov byte [esp + 0xb8], 5
push eax
mov edx, str.RIFF::File::read______Chunk_
lea ecx, [esp + 0x80]
call fcn.004c6850
add esp, 4
push str._has_invalid_size__larger_than_the_file_size_
mov edx, eax
mov byte [esp + 0xbc], 6
lea ecx, [esp + 0xa4]
call fcn.004c68e0
mov edx, dword [esp + 0xa8]
add esp, 4
mov dword [esp + 0xa0], vtable.TagLib::String.0
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x511fdd
mov ecx, dword [esp + 0xa4]
test ecx, ecx
je 0x511fdd
mov eax, dword [ecx]
push 1
call dword [eax]
mov byte [esp + 0xb8], 5
mov edx, dword [esp + 0x80]
mov dword [esp + 0x7c], vtable.TagLib::String.0
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x512012
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x512012
mov eax, dword [ecx]
push 1
call dword [eax]
mov byte [esp + 0xb8], 1
mov edx, dword [esp + 0x48]
mov dword [esp + 0x44], vtable.TagLib::String.0
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x51203d
mov ecx, dword [esp + 0x48]
push 1
mov eax, dword [ecx]
call dword [eax]
mov eax, dword [ebx + 4]
jmp 0x51212a
push 0
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x58]
call fcn.004c5710
lea eax, [esp + 0x50]
mov byte [esp + 0xb8], 3
push eax
mov edx, str.RIFF::File::read______Chunk_
lea ecx, [esp + 0x8c]
call fcn.004c6850
add esp, 4
push str._has_invalid_ID
mov edx, eax
mov byte [esp + 0xbc], 4
lea ecx, [esp + 0x98]
call fcn.004c68e0
mov edx, dword [esp + 0x9c]
add esp, 4
mov dword [esp + 0x94], vtable.TagLib::String.0
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x5120c4
mov ecx, dword [esp + 0x98]
test ecx, ecx
je 0x5120c4
mov eax, dword [ecx]
push 1
call dword [eax]
mov byte [esp + 0xb8], 3
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x88], vtable.TagLib::String.0
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x5120fc
mov ecx, dword [esp + 0x8c]
test ecx, ecx
je 0x5120fc
mov eax, dword [ecx]
push 1
call dword [eax]
mov byte [esp + 0xb8], 1
mov edx, dword [esp + 0x54]
mov dword [esp + 0x50], vtable.TagLib::String.0
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov eax, dword [edx + 4]
dec ecx
mov dword [eax], ecx
jne 0x512127
mov ecx, dword [esp + 0x54]
push 1
mov eax, dword [ecx]
call dword [eax]
mov eax, dword [esi + 4]
mov byte [eax + 5], 0
mov dword [esp + 0xb8], 0xffffffff
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x24], vtable.TagLib::ByteVector.0
test ecx, ecx
je 0x51214f
push ecx
call fcn.004c2ee0
mov ecx, dword [esp + 0xb0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret