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

Disassembly:
sub esp, 0x1b0
mov eax, dword [0x5eef00]
xor eax, esp
mov dword [esp + 0x1ac], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [esp + 0x1c4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x1d0]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x1d4]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x1dc]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1e0]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x1d8]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1e8]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x1ec]
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x1e4]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x1f4]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x1f8]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x1f0]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x200]
mov ebx, dword [esp + 0x1c8]
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x204]
mov ebp, dword [esp + 0x1cc]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x1fc]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x20c]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x210]
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x208]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x21c]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x214]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x224]
xor esi, esi
push 0x7f
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x224]
mov dword [esp + 0x54], eax
xor eax, eax
lea ecx, [esp + 0x13d]
push esi
push ecx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xb0], edx
mov byte [esp + 0x138], 0
mov dword [esp + 0x139], eax
mov dword [esp + 0x13d], eax
mov word [esp + 0x141], ax
mov byte [esp + 0x143], al
mov byte [esp + 0xf8], al
mov dword [esp + 0xf9], eax
mov word [esp + 0xfd], ax
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
lea edi, [esi + 1]
mov dword [esp + 0x80], esi
mov byte [esp + 0x144], al
call fcn.004b3a80
add esp, 0xc
mov dword [esp + 0xac], esi
mov dword [esp + 0xa8], esi
mov dword [esp + 0xb0], esi
mov dword [esp + 0xb4], esi
cmp ebx, esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0xb8], esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], esi
je 0x43b974
mov dword [ebx], esi
jmp 0x43b976
xor edi, edi
cmp ebp, esi
je 0x43b97f
mov dword [ebp], esi
jmp 0x43b981
xor edi, edi
mov eax, dword [esp + 0x70]
cmp eax, esi
je 0x43b98d
mov dword [eax], esi
jmp 0x43b98f
xor edi, edi
mov eax, dword [esp + 0x64]
cmp eax, esi
je 0x43b99b
mov dword [eax], esi
jmp 0x43b99d
xor edi, edi
mov eax, dword [esp + 0x3c]
cmp eax, esi
je 0x43b9a9
mov dword [eax], esi
jmp 0x43b9ab
xor edi, edi
mov eax, dword [esp + 0x28]
cmp eax, esi
je 0x43b9b7
mov dword [eax], esi
jmp 0x43b9b9
xor edi, edi
mov eax, dword [esp + 0x30]
cmp eax, esi
je 0x43b9c5
mov dword [eax], esi
jmp 0x43b9c7
xor edi, edi
mov eax, dword [esp + 0x8c]
cmp eax, esi
je 0x43b9d6
mov dword [eax], esi
jmp 0x43b9d8
xor edi, edi
mov eax, dword [esp + 0x84]
cmp eax, esi
je 0x43b9e7
mov dword [eax], esi
jmp 0x43b9e9
xor edi, edi
mov eax, dword [esp + 0x60]
cmp eax, esi
je 0x43b9f5
mov dword [eax], esi
jmp 0x43b9f7
xor edi, edi
mov eax, dword [esp + 0x54]
cmp eax, esi
je 0x43ba03
mov dword [eax], esi
jmp 0x43ba05
xor edi, edi
mov eax, dword [esp + 0x40]
cmp eax, esi
je 0x43ba11
mov dword [eax], esi
jmp 0x43ba13
xor edi, edi
mov eax, dword [esp + 0x78]
cmp eax, esi
je 0x43ba1f
mov dword [eax], esi
jmp 0x43ba21
xor edi, edi
mov eax, dword [esp + 0x48]
cmp eax, esi
je 0x43ba30
mov dword [eax], esi
mov dword [eax + 4], esi
jmp 0x43ba32
xor edi, edi
mov eax, dword [esp + 0x6c]
cmp eax, esi
je 0x43ba3e
mov dword [eax], esi
jmp 0x43ba40
xor edi, edi
mov eax, dword [esp + 0x88]
cmp eax, esi
je 0x43ba4f
mov dword [eax], esi
jmp 0x43ba51
xor edi, edi
mov eax, dword [esp + 0x94]
cmp eax, esi
je 0x43ba60
mov dword [eax], esi
jmp 0x43ba62
xor edi, edi
cmp dword [esp + 0x34], esi
je 0x43cf68
mov eax, dword [esp + 0x98]
cmp eax, esi
je 0x43ba7b
mov dword [eax], esi
jmp 0x43ba7d
xor edi, edi
mov eax, dword [esp + 0x58]
cmp eax, esi
je 0x43ba89
mov dword [eax], esi
jmp 0x43ba8b
xor edi, edi
mov eax, dword [esp + 0x80]
cmp eax, esi
je 0x43ba9a
mov dword [eax], esi
jmp 0x43ba9c
xor edi, edi
mov eax, dword [esp + 0x38]
cmp eax, esi
je 0x43baa8
mov dword [eax], esi
jmp 0x43baaa
xor edi, edi
mov eax, dword [esp + 0x50]
cmp eax, esi
je 0x43cf68
cmp edi, esi
mov dword [eax], esi
je 0x43cf68
mov eax, dword [esp + 0x34]
lea edx, [esp + 0xc0]
push edx
push eax
call fcn.00478880
add esp, 8
test eax, eax
jne 0x43cf68
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x48]
mov dword [edx], ecx
mov ecx, dword [esp + 0xd8]
mov edx, dword [esp + 0xdc]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [esp + 0x34]
call fcn.00436840
mov ebp, eax
cmp ebp, esi
je 0x43cf68
xor eax, eax
mov dword [esp + 0xec], eax
mov word [esp + 0xf0], ax
mov byte [esp + 0xf2], al
push 4
lea eax, [esp + 0xf0]
push eax
push ebp
call fcn.004b14d0
add esp, 0xc
push 4
lea ecx, [esp + 0xf0]
push str.OggS
push ecx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c115
push 4
lea edx, [esp + 0xf0]
push str.OggS
push edx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43be38
lea ecx, [ecx]
xor eax, eax
mov dword [esp + 0x10d], eax
mov dword [esp + 0x111], eax
mov dword [esp + 0x115], eax
mov dword [esp + 0x119], eax
mov dword [esp + 0x11d], eax
mov byte [esp + 0x121], al
push 0x16
lea eax, [esp + 0x110]
push eax
push ebp
mov byte [esp + 0x118], 0
call fcn.004b14d0
add esp, 0xc
push ebp
call fcn.004b1570
mov bl, al
xor esi, esi
add esp, 4
test bl, bl
mov dword [esp + 0x2c], esi
jbe 0x43bbf7
lea esp, [esp]
push ebp
call fcn.004b1570
movzx ecx, al
add esp, 4
add esi, ecx
add bl, 0xff
jne 0x43bbe0
mov dword [esp + 0x2c], esi
mov ebx, dword [esp + 0x2c]
push ebp
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], 0
call fcn.004b1570
add esp, 4
push 6
lea edx, [esp + 0xf0]
push edx
push ebp
mov byte [esp + 0x1f], al
call fcn.004b14d0
add esp, 0xc
push 6
lea eax, [esp + 0xf0]
push str.vorbis
push eax
mov esi, 7
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43bf0b
mov al, byte [esp + 0x13]
cmp al, 1
jne 0x43bd35
xor eax, eax
push 0x15
lea ecx, [esp + 0xf8]
push ecx
push ebp
mov byte [esp + 0x100], 0
mov dword [esp + 0x101], eax
mov dword [esp + 0x105], eax
mov dword [esp + 0x109], eax
mov dword [esp + 0x10d], eax
mov dword [esp + 0x111], eax
call fcn.004b14d0
add esp, 0xc
mov esi, 0x1c
xor ecx, ecx
mov eax, 0xd
jmp 0x43bcb0
movzx edx, byte [esp + eax + 0x10c]
shl ecx, 8
sub eax, 1
or ecx, edx
cmp eax, 9
ja 0x43bcb0
mov dword [esp + 0xb8], ecx
xor ecx, ecx
mov eax, 8
jmp 0x43bce0
movzx edx, byte [esp + eax + 0xf4]
shl ecx, 8
sub eax, 1
or ecx, edx
cmp eax, 4
ja 0x43bce0
mov edi, dword [esp + 0x38]
test edi, edi
mov dword [esp + 0x7c], ecx
je 0x43c067
xor eax, eax
mov ecx, 0x10
lea esp, [esp]
movzx edx, byte [esp + ecx + 0xf4]
shl eax, 8
sub ecx, 1
or eax, edx
cmp ecx, 0xc
ja 0x43bd10
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [edi], eax
jmp 0x43c067
cmp al, 3
jne 0x43c067
add dword [esp + 0x18], 0xfffffff9
adc dword [esp + 0x1c], 0xffffffff
push 1
lea eax, [esp + 0x16]
push eax
push ebp
call fcn.004b14d0
movzx esi, byte [esp + 0x1e]
add esp, 0xc
push 1
lea ecx, [esp + 0x16]
push ecx
push ebp
call fcn.004b14d0
movzx edx, byte [esp + 0x1e]
add esp, 0xc
push 1
lea eax, [esp + 0x16]
push eax
shl edx, 8
push ebp
add esi, edx
call fcn.004b14d0
movzx ecx, byte [esp + 0x1e]
add esp, 0xc
push 1
lea edx, [esp + 0x16]
push edx
shl ecx, 0x10
push ebp
add esi, ecx
call fcn.004b14d0
movzx eax, byte [esp + 0x1e]
shl eax, 0x18
add esi, eax
add esp, 0xc
mov eax, esi
cdq
push 1
mov ebx, edx
mov edi, eax
push ebx
push edi
push ebp
call fcn.004b1910
push 1
lea ecx, [esp + 0x26]
push ecx
push ebp
call fcn.004b14d0
movzx esi, byte [esp + 0x2e]
add esp, 0x1c
push 1
lea edx, [esp + 0x16]
push edx
push ebp
call fcn.004b14d0
movzx eax, byte [esp + 0x1e]
add esp, 0xc
push 1
lea ecx, [esp + 0x16]
push ecx
shl eax, 8
push ebp
add esi, eax
call fcn.004b14d0
movzx edx, byte [esp + 0x1e]
add esp, 0xc
push 1
lea eax, [esp + 0x16]
push eax
shl edx, 0x10
push ebp
add esi, edx
call fcn.004b14d0
movzx ecx, byte [esp + 0x1e]
shl ecx, 0x18
add esi, ecx
mov edx, 0xfffffff8
add esp, 0xc
mov dword [esp + 0x74], esi
sub edx, edi
mov eax, 0xffffffff
sbb eax, ebx
add dword [esp + 0x18], edx
adc dword [esp + 0x1c], eax
push ebp
call fcn.004b18d0
add esp, 4
test eax, eax
jne 0x43ca79
lea esp, [esp]
cmp dword [esp + 0x74], 0
je 0x43ca79
sub dword [esp + 0x74], 1
push 1
lea ecx, [esp + 0x16]
push ecx
push ebp
call fcn.004b14d0
movzx edi, byte [esp + 0x1e]
add esp, 0xc
push 1
lea edx, [esp + 0x16]
push edx
push ebp
call fcn.004b14d0
movzx eax, byte [esp + 0x1e]
add esp, 0xc
push 1
lea ecx, [esp + 0x16]
push ecx
shl eax, 8
push ebp
add edi, eax
call fcn.004b14d0
movzx edx, byte [esp + 0x1e]
add esp, 0xc
push 1
lea eax, [esp + 0x16]
push eax
shl edx, 0x10
push ebp
add edi, edx
call fcn.004b14d0
movzx ecx, byte [esp + 0x1e]
shl ecx, 0x18
add edi, ecx
mov eax, edi
cdq
mov esi, eax
add esp, 0xc
mov eax, 0xfffffffc
sub eax, esi
mov ecx, 0xffffffff
sbb ecx, edx
add dword [esp + 0x18], eax
mov dword [esp + 0x9c], edx
adc dword [esp + 0x1c], ecx
test edi, edi
jle 0x43ca79
cmp edi, 0x3200000
jle 0x43c4f5
push 1
push edx
push esi
push ebp
call fcn.004b1910
add esp, 0x10
jmp 0x43ca68
push 6
lea eax, [esp + 0xf0]
push str.theora
push eax
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43c0ab
cmp byte [esp + 0x13], 0x80
mov ecx, dword [esp + 0x98]
mov dword [ecx], 1
jne 0x43c063
push 3
lea edx, [esp + 0x18]
push edx
push ebp
call fcn.004b14d0
movsx edi, byte [esp + 0x20]
movsx eax, byte [esp + 0x21]
movsx ecx, byte [esp + 0x22]
shl edi, 8
add edi, eax
shl edi, 8
add edi, ecx
add esp, 0xc
cmp edi, 0x30100
mov esi, 0xa
jbe 0x43c063
push 2
lea edx, [esp + 0x24]
push edx
push ebp
call fcn.004b14d0
add esp, 0xc
push 2
lea eax, [esp + 0x28]
push eax
push ebp
call fcn.004b14d0
movzx ecx, byte [esp + 0x2c]
movzx edx, byte [esp + 0x2d]
mov ebx, dword [esp + 0x64]
movzx eax, byte [esp + 0x30]
shl ecx, 8
add ecx, edx
mov edx, dword [esp + 0x8c]
shl ecx, 4
mov dword [ebx], ecx
movzx ecx, byte [esp + 0x31]
shl eax, 8
add eax, ecx
shl eax, 4
add esp, 0xc
cmp edi, 0x30200
mov dword [edx], eax
mov esi, 0xe
jb 0x43c063
push 3
lea eax, [esp + 0x24]
push eax
push ebp
call fcn.004b14d0
add esp, 0xc
push 3
lea ecx, [esp + 0x28]
push ecx
push ebp
call fcn.004b14d0
movzx eax, byte [esp + 0x2c]
movzx edx, byte [esp + 0x2d]
movzx ecx, byte [esp + 0x2e]
shl eax, 8
add eax, edx
movzx edx, byte [esp + 0x31]
shl eax, 8
add eax, ecx
movzx ecx, byte [esp + 0x30]
shl ecx, 8
add ecx, edx
movzx edx, byte [esp + 0x32]
shl ecx, 8
add ecx, edx
mov edx, dword [ebx]
add esp, 0xc
cmp eax, edx
mov esi, 0x14
jg 0x43c063
add edx, 0xfffffff0
cmp eax, edx
jle 0x43c063
mov edx, dword [esp + 0x80]
mov edx, dword [edx]
cmp ecx, edx
jg 0x43c063
add edx, 0xfffffff0
cmp ecx, edx
jle 0x43c063
mov dword [ebx], eax
mov eax, dword [esp + 0x80]
mov dword [eax], ecx
mov ebx, dword [esp + 0x2c]
push 1
push 0
sub ebx, esi
push ebx
push ebp
call fcn.004b1910
push 4
lea ecx, [esp + 0x100]
push ecx
push ebp
call fcn.004b14d0
add esp, 0x1c
push 4
lea edx, [esp + 0xf0]
push str.OggS
push edx
call fcn.004c647d
add esp, 0xc
test eax, eax
je 0x43bb80
jmp 0x43be38
push 4
lea ecx, [esp + 0xf0]
push str.FLAC
push ecx
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43c067
push 1
push eax
push 2
push ebp
call fcn.004b1910
push 4
lea edx, [esp + 0x100]
push edx
push ebp
call fcn.004b14d0
add esp, 0x1c
push 4
lea eax, [esp + 0xf0]
push str.fLaC
push eax
mov esi, 0xd
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43c067
mov dword [esp + 0x2c], 1
jmp 0x43c256
push 3
lea eax, [esp + 0xf0]
push 0x5e2b08
push eax
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c237
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x88]
push ecx
mov eax, dword [esp + 0x98]
push edx
push eax
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x74]
push ecx
mov ecx, dword [esp + 0xb0]
lea edx, [esp + 0xa8]
push edx
mov edx, dword [esp + 0x98]
push eax
mov eax, dword [esp + 0xa4]
push ecx
mov ecx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x74]
push edx
mov edx, dword [esp + 0x70]
push eax
mov eax, dword [esp + 0xa8]
push ecx
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0xac]
mov edi, dword [esp + 0x70]
lea ecx, [esp + 0x94]
push ecx
mov ecx, dword [esp + 0xa0]
push edx
mov edx, dword [esp + 0xa8]
push eax
mov eax, dword [esp + 0x84]
push ecx
mov ecx, dword [esp + 0xdc]
push edx
push eax
push ecx
push ebx
push esi
push esi
mov dword [esp + 0xbc], esi
mov dword [esp + 0x110], esi
mov dword [esp + 0xfc], esi
mov dword [esp + 0xcc], esi
call fcn.0043b610
mov eax, dword [esp + 0xbc]
add esp, 0x64
cmp eax, esi
je 0x43c20e
push eax
call fcn.00477540
add esp, 4
mov eax, ebp
call fcn.00436800
mov eax, dword [esp + 0x38]
cmp eax, esi
je 0x43cf68
cmp dword [eax], esi
jne 0x43cf68
mov edx, dword [esp + 0x98]
mov dword [eax], edx
jmp 0x43cf68
push 4
lea eax, [esp + 0xf0]
push str.fLaC
push eax
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43be38
xor eax, eax
push 4
lea ecx, [esp + 0x18]
push ecx
push ebp
mov byte [esp + 0x20], 0
mov word [esp + 0x21], ax
mov byte [esp + 0x23], al
mov byte [esp + 0x100], al
mov dword [esp + 0x101], eax
mov dword [esp + 0x105], eax
mov dword [esp + 0x109], eax
mov dword [esp + 0x10d], eax
mov byte [esp + 0x111], al
call fcn.004b14d0
movzx ebx, byte [esp + 0x23]
mov al, byte [esp + 0x20]
add esp, 0xc
test al, 0x7f
mov dword [esp + 0x58], ebx
mov byte [esp + 0x13], al
jne 0x43c446
cmp ebx, 0x12
jae 0x43c2ca
mov eax, ebp
call fcn.00436800
jmp 0x43cf68
push 0x12
lea edx, [esp + 0xf8]
push edx
push ebp
call fcn.004b14d0
movzx esi, byte [esp + 0x10a]
movzx eax, byte [esp + 0x10b]
mov dl, byte [esp + 0x10d]
movzx ecx, byte [esp + 0x10c]
and dl, 0xf
shl esi, 8
or esi, eax
movzx eax, dl
cdq
shld edx, eax, 8
shr ecx, 4
shl eax, 8
shl esi, 4
or esi, ecx
mov ecx, eax
movzx eax, byte [esp + 0x10e]
mov edi, edx
cdq
or ecx, eax
movzx eax, byte [esp + 0x10f]
or edi, edx
shld edi, ecx, 8
shl ecx, 8
cdq
or ecx, eax
movzx eax, byte [esp + 0x110]
or edi, edx
shld edi, ecx, 8
shl ecx, 8
cdq
or ecx, eax
movzx eax, byte [esp + 0x111]
or edi, edx
shld edi, ecx, 8
cdq
shl ecx, 8
add esp, 0xc
or ecx, eax
or edi, edx
test esi, esi
je 0x43c425
mov edx, ecx
or edx, edi
je 0x43c418
push 0
push 0x3e8
push edi
push ecx
call fcn.004b3e20
push 0
push esi
push edx
push eax
call fcn.004b3e60
mov ebx, eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax]
test eax, eax
mov edi, edx
je 0x43c3af
push eax
call fcn.00477540
mov ecx, dword [esp + 0x44]
add esp, 4
mov dword [ecx], 0
push 0
mov edx, ebx
add edx, 0x1f4
mov eax, edi
push 0x3e8
adc eax, 0
push eax
push edx
call fcn.004b3e60
push 0
push 0x3e8
push edx
push eax
call fcn.004b3e20
push edx
push eax
call fcn.00474ef0
mov ecx, dword [esp + 0x48]
add esp, 8
test edi, edi
mov dword [ecx], eax
jb 0x43c418
ja 0x43c3f2
test ebx, ebx
jbe 0x43c418
mov eax, dword [esp + 0x48]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push 0
push 0x3e8
push edx
push eax
call fcn.004b3e20
push edi
push ebx
push edx
push eax
call fcn.004b3e60
mov ecx, dword [esp + 0x38]
mov dword [ecx], eax
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x58]
mov dword [edx], esi
cmp ebx, 0x12
jbe 0x43c43b
push 1
push 0
add ebx, 0xffffffee
push ebx
push ebp
call fcn.004b1910
add esp, 0x10
cmp dword [esp + 0x2c], 0
je 0x43c446
mov dword [esp + 0x7c], esi
push ebp
call fcn.004b18d0
add esp, 4
test eax, eax
jne 0x43be38
jmp 0x43c460
test byte [esp + 0x13], 0x80
jne 0x43c2be
push 1
lea eax, [esp + 0x17]
push eax
push ebp
call fcn.004b14d0
add esp, 0xc
push 1
lea ecx, [esp + 0x16]
push ecx
push ebp
call fcn.004b14d0
movzx esi, byte [esp + 0x1e]
add esp, 0xc
push 1
lea edx, [esp + 0x16]
push edx
push ebp
shl esi, 0x10
call fcn.004b14d0
movzx eax, byte [esp + 0x1e]
add esp, 0xc
push 1
lea ecx, [esp + 0x16]
push ecx
shl eax, 8
push ebp
add esi, eax
call fcn.004b14d0
mov dl, byte [esp + 0x1f]
and dl, 0x7f
add esp, 0xc
cmp dl, 4
je 0x43bd47
movzx eax, byte [esp + 0x12]
add eax, esi
cdq
push 1
push edx
push eax
push ebp
call fcn.004b1910
push ebp
call fcn.004b18d0
add esp, 0x14
test eax, eax
je 0x43c460
jmp 0x43be38
lea edx, [edi + 1]
push edx
push 1
call fcn.00477460
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x43ca79
push ebp
call fcn.004b1840
add esp, 4
push edi
push ebx
push ebp
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], edx
call fcn.004b14d0
add esp, 0xc
push 6
push 0x5e2d28
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c569
mov esi, dword [esp + 0x68]
mov eax, dword [esi]
test eax, eax
je 0x43c556
push eax
call fcn.00477540
add esp, 4
mov dword [esi], 0
lea eax, [ebx + 6]
push eax
call fcn.004774f0
add esp, 4
mov dword [esi], eax
jmp 0x43ca5f
push 7
push 0x5e2d30
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c5ac
mov esi, dword [esp + 0x90]
mov eax, dword [esi]
test eax, eax
je 0x43c599
push eax
call fcn.00477540
add esp, 4
mov dword [esi], 0
lea ecx, [ebx + 7]
push ecx
call fcn.004774f0
add esp, 4
mov dword [esi], eax
jmp 0x43ca5f
push 9
push 0x5e2d38
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c5ec
mov esi, dword [esp + 0x70]
mov eax, dword [esi]
test eax, eax
je 0x43c5d9
push eax
call fcn.00477540
add esp, 4
mov dword [esi], 0
lea edx, [ebx + 9]
push edx
call fcn.004774f0
add esp, 4
mov dword [esi], eax
jmp 0x43ca5f
push 0xc
push str.ALBUMARTIST
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c62c
mov esi, dword [esp + 0x3c]
mov eax, dword [esi]
test eax, eax
je 0x43c619
push eax
call fcn.00477540
add esp, 4
mov dword [esi], 0
lea eax, [ebx + 0xc]
push eax
call fcn.004774f0
add esp, 4
mov dword [esi], eax
jmp 0x43ca5f
push 0xd
push 0x5e2d54
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c66c
mov esi, dword [esp + 0x3c]
mov eax, dword [esi]
test eax, eax
je 0x43c659
push eax
call fcn.00477540
add esp, 4
mov dword [esi], 0
lea ecx, [ebx + 0xd]
push ecx
call fcn.004774f0
add esp, 4
mov dword [esi], eax
jmp 0x43ca5f
push 6
push 0x5e2d64
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c6ac
mov esi, dword [esp + 0x64]
mov eax, dword [esi]
test eax, eax
je 0x43c699
push eax
call fcn.00477540
add esp, 4
mov dword [esi], 0
lea edx, [ebx + 6]
push edx
call fcn.004774f0
add esp, 4
mov dword [esi], eax
jmp 0x43ca5f
push 0xc
push 0x5e2d6c
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c6da
lea eax, [ebx + 0xc]
push eax
call fcn.004b31a7
mov edx, dword [esp + 0x7c]
movzx ecx, al
add esp, 4
mov dword [edx], ecx
jmp 0x43ca5f
push 5
push str.DISC
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c708
lea eax, [ebx + 5]
push eax
call fcn.004b31a7
mov edx, dword [esp + 0x48]
movzx ecx, al
add esp, 4
mov dword [edx], ecx
jmp 0x43ca5f
push 0xb
push str.DISCNUMBER
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c721
lea eax, [ebx + 0xb]
jmp 0x43c6f1
push 7
push str.DISC_
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c73a
lea eax, [ebx + 7]
jmp 0x43c6f1
push 6
push str.DISCC
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c768
lea eax, [ebx + 6]
push eax
call fcn.004b31a7
mov edx, dword [esp + 0x50]
movzx ecx, al
add esp, 4
mov dword [edx], ecx
jmp 0x43ca5f
push 0xa
push str.DISCTOTAL
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c796
lea eax, [ebx + 0xa]
push eax
call fcn.004b31a7
mov edx, dword [esp + 0x50]
movzx ecx, al
add esp, 4
mov dword [edx], ecx
jmp 0x43ca5f
push 0xb
push str.TOTALDISCS
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c7c4
lea eax, [ebx + 0xb]
push eax
call fcn.004b31a7
mov edx, dword [esp + 0x50]
movzx ecx, al
add esp, 4
mov dword [edx], ecx
jmp 0x43ca5f
push 6
push str.GENRE
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c7e1
mov esi, dword [esp + 0x60]
jmp 0x43c541
push 5
push str.DATE
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c91d
mov edi, dword [esp + 0x54]
mov byte [esp + 0x10c], al
mov dword [esp + 0x10d], eax
mov dword [esp + 0x111], eax
mov dword [esp + 0x115], eax
mov dword [esp + 0x119], eax
mov dword [esp + 0x11d], eax
mov dword [esp + 0x121], eax
mov dword [esp + 0x125], eax
mov word [esp + 0x129], ax
mov byte [esp + 0x12b], al
mov eax, dword [edi]
test eax, eax
je 0x43c859
push eax
call fcn.00477540
add esp, 4
mov dword [edi], 0
lea esi, [ebx + 5]
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x43c861
sub eax, edx
cmp eax, 4
push esi
jbe 0x43c8a0
push 0x5cd6b0
lea ecx, [esp + 0x114]
push 0x20
push ecx
call fcn.004776e0
lea edx, [esp + 0x11c]
add esp, 0x10
push edx
call fcn.004774f0
add esp, 4
mov dword [edi], eax
jmp 0x43ca5f
call fcn.004b31a7
lea edx, [eax - 0x76d]
add esp, 4
cmp edx, 0xc6
ja 0x43c8e5
push eax
push str._d_01_01
lea eax, [esp + 0x114]
push 0x20
push eax
call fcn.004776e0
lea edx, [esp + 0x11c]
add esp, 0x10
push edx
call fcn.004774f0
add esp, 4
mov dword [edi], eax
jmp 0x43ca5f
mov ecx, dword [esp + 0x34]
push ecx
push esi
push str.cant_parse_date__s__in__s_
push 0
push str.ogg_flac_get_metadata
push pe_nt_image_headers32
push 2
call fcn.0048d750
lea edx, [esp + 0x128]
add esp, 0x1c
push edx
call fcn.004774f0
add esp, 4
mov dword [edi], eax
jmp 0x43ca5f
push 7
push str.RATING
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c972
lea eax, [ebx + 7]
push eax
call fcn.004b31a7
mov esi, dword [esp + 0x8c]
add esp, 4
test esi, esi
mov ecx, eax
je 0x43ca5f
lea edx, [ecx - 1]
cmp edx, 0x63
ja 0x43ca5f
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esi], eax
jmp 0x43ca5f
push 0xd
push str.COVERARTMIME
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c9b7
mov edi, str.image_png
lea esi, [ebx + 0xd]
mov ecx, 0xa
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x43ca5f
mov eax, dword [esp + 0x84]
test eax, eax
je 0x43ca5f
mov dword [eax], 1
jmp 0x43ca5f
push 9
push str.COVERART
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43c9f7
cmp dword [esp + 0x28], eax
je 0x43ca5f
mov esi, dword [esp + 0x30]
test esi, esi
je 0x43ca5f
add edi, 0xfffffff7
push ebp
mov dword [esi], edi
call fcn.004b1840
mov ecx, dword [esp + 0x2c]
add esp, 4
sub eax, dword [esi]
jmp 0x43ca5d
push 0x17
push str.METADATA_BLOCK_PICTURE
push ebx
call fcn.004c647d
add esp, 0xc
test eax, eax
jne 0x43ca5f
cmp dword [esp + 0x28], eax
je 0x43ca5f
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x43ca5f
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x58]
add esi, 0xffffffe9
adc eax, 0xffffffff
add dword [esp + 0x18], esi
adc dword [esp + 0x1c], eax
mov eax, dword [esp + 0x28]
add edi, 0xffffffe9
add edx, 0x17
mov dword [ecx], edi
mov dword [eax], edx
mov esi, dword [ecx]
mov eax, esi
cdq
cmp edx, dword [esp + 0x1c]
jb 0x43ca5f
ja 0x43ca53
cmp eax, dword [esp + 0x18]
jbe 0x43ca5f
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x18]
mov dword [edx], esi
mov dword [ecx], eax
push ebx
call fcn.00477540
add esp, 4
push ebp
call fcn.004b18d0
add esp, 4
test eax, eax
je 0x43be50
push 4
lea ecx, [esp + 0xf0]
push str.fLaC
push ecx
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43cbac
test byte [esp + 0x13], 0x80
jne 0x43c2be
push ebp
call fcn.004b18d0
add esp, 4
test eax, eax
jne 0x43cbac
push 1
lea edx, [esp + 0x17]
push edx
push ebp
call fcn.004b14d0
add esp, 0xc
push 1
lea eax, [esp + 0x16]
push eax
push ebp
call fcn.004b14d0
movzx edi, byte [esp + 0x1e]
add esp, 0xc
push 1
lea ecx, [esp + 0x16]
push ecx
push ebp
shl edi, 0x10
call fcn.004b14d0
movzx edx, byte [esp + 0x1e]
add esp, 0xc
push 1
lea eax, [esp + 0x16]
push eax
shl edx, 8
push ebp
add edi, edx
call fcn.004b14d0
mov bl, byte [esp + 0x1e]
mov al, byte [esp + 0x1f]
movzx ecx, bl
mov dl, al
and dl, 0x7f
add esp, 0xc
add edi, ecx
cmp dl, 6
je 0x43cb45
test al, al
js 0x43c2be
mov eax, edi
cdq
push 1
push edx
push eax
push ebp
call fcn.004b1910
push ebp
call fcn.004b18d0
add esp, 0x14
test eax, eax
je 0x43cab4
jmp 0x43cbac
push ebp
call fcn.004b18d0
add esp, 4
test eax, eax
jne 0x43cbac
mov esi, dword [esp + 0x28]
test edi, edi
jle 0x43cbac
cmp dword [esi], 0
jne 0x43cbac
push 1
lea eax, [esp + 0x16]
push eax
push ebp
call fcn.004b14d0
add esp, 0xc
cmp bl, 0xff
mov bl, byte [esp + 0x12]
jne 0x43cb7d
cmp bl, 0xd8
je 0x43cb8f
push ebp
sub edi, 1
call fcn.004b18d0
add esp, 4
test eax, eax
je 0x43cb56
jmp 0x43cbac
push 1
push 0
push 0
push ebp
call fcn.004b1910
mov ecx, dword [esp + 0x40]
sub eax, 2
add esp, 0x10
add edi, 1
mov dword [esi], eax
mov dword [ecx], edi
mov esi, dword [esp + 0x54]
mov eax, dword [esi]
test eax, eax
je 0x43cbfe
push eax
call fcn.004b31a7
add esp, 4
push eax
push str._04d_01_01
lea edx, [esp + 0x134]
push 0xc
push edx
call fcn.004776e0
mov eax, dword [esi]
add esp, 0x10
test eax, eax
je 0x43cbec
push eax
call fcn.00477540
add esp, 4
mov dword [esi], 0
lea eax, [esp + 0x12c]
push eax
call fcn.004774f0
add esp, 4
mov dword [esi], eax
cmp dword [esp + 0x7c], 0
je 0x43ce25
push 2
push 0xffffffffffffffff
xor eax, eax
push 0xffff0000
push ebp
mov byte [esp + 0x24], 0
mov word [esp + 0x25], ax
mov byte [esp + 0x27], al
call fcn.004b1910
push ebp
call fcn.004b18d0
add esp, 0x14
test eax, eax
jne 0x43ce25
lea esp, [esp]
mov cl, byte [esp + 0x15]
mov dl, byte [esp + 0x16]
mov al, byte [esp + 0x17]
mov byte [esp + 0x14], cl
push 1
lea ecx, [esp + 0x1b]
push ecx
push ebp
mov byte [esp + 0x21], dl
mov byte [esp + 0x22], al
call fcn.004b14d0
add esp, 0xc
push 4
lea edx, [esp + 0x18]
push str.OggS
push edx
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43cd43
mov byte [esp + 0xf4], al
mov dword [esp + 0xf5], eax
mov dword [esp + 0xf9], eax
mov dword [esp + 0xfd], eax
mov dword [esp + 0x101], eax
mov dword [esp + 0x105], eax
mov byte [esp + 0x109], al
push 0x16
lea eax, [esp + 0xf8]
push eax
push ebp
call fcn.004b14d0
add esp, 0xc
xor edi, edi
xor esi, esi
mov ecx, 0xd
movzx eax, byte [esp + ecx + 0xf4]
shld esi, edi, 8
cdq
shl edi, 8
or eax, edi
or edx, esi
sub ecx, 1
cmp ecx, 9
mov edi, eax
mov esi, edx
ja 0x43ccd1
cmp edi, dword [esp + 0xb8]
jne 0x43cd43
xor eax, eax
cmp esi, eax
jne 0x43cd43
xor edi, edi
xor ebx, ebx
mov ecx, 9
lea esp, [esp]
movzx eax, byte [esp + ecx + 0xf4]
shld ebx, edi, 8
cdq
shl edi, 8
or eax, edi
or edx, ebx
sub ecx, 1
cmp ecx, 2
mov edi, eax
mov ebx, edx
jae 0x43cd10
cmp edi, 0xffffffff
jne 0x43cd39
cmp ebx, eax
je 0x43cd43
test byte [esp + 0xf5], 4
jne 0x43cd59
push ebp
call fcn.004b18d0
add esp, 4
test eax, eax
je 0x43cc40
jmp 0x43ce25
test ebx, ebx
jb 0x43ce25
ja 0x43cd6b
test edi, edi
jbe 0x43ce25
mov esi, dword [esp + 0x7c]
test esi, esi
jle 0x43ce25
push 0
push 0x3e8
push ebx
push edi
call fcn.004b3e20
mov ecx, eax
mov edi, edx
mov eax, esi
cdq
push edx
push eax
push edi
push ecx
call fcn.004b3e60
mov ebx, dword [esp + 0x40]
mov esi, eax
mov eax, dword [ebx]
test eax, eax
mov edi, edx
je 0x43cdb2
push eax
call fcn.00477540
add esp, 4
mov dword [ebx], 0
push 0
mov edx, esi
add edx, 0x1f4
mov eax, edi
push 0x3e8
adc eax, 0
push eax
push edx
call fcn.004b3e60
push 0
push 0x3e8
push edx
push eax
call fcn.004b3e20
push edx
push eax
call fcn.00474ef0
mov dword [ebx], eax
mov ebx, dword [esp + 0x40]
add esp, 8
test ebx, ebx
je 0x43ce25
cmp dword [ebx], 0
jne 0x43ce25
test edi, edi
jb 0x43ce25
ja 0x43cdfe
test esi, esi
jbe 0x43ce25
mov ecx, dword [esp + 0xdc]
mov edx, dword [esp + 0xd8]
push 0
push 0x3e8
push ecx
push edx
call fcn.004b3e20
push edi
push esi
push edx
push eax
call fcn.004b3e60
mov dword [ebx], eax
push 2
push 0xffffffffffffffff
push 0xffffffffffffff80
push ebp
call fcn.004b1910
push 0x80
lea eax, [esp + 0x14c]
push eax
push ebp
call fcn.004b14d0
add esp, 0x1c
push 3
lea ecx, [esp + 0x13c]
push 0x5e2ca8
push ecx
call fcn.004b2fa4
add esp, 0xc
test eax, eax
jne 0x43cf2e
mov edx, dword [esp + 0xa4]
push edx
mov dword [esp + 0x54], eax
lea eax, [esp + 0xb8]
push eax
mov eax, dword [esp + 0x74]
lea ecx, [esp + 0xb8]
push ecx
mov ecx, dword [esp + 0xac]
lea edx, [esp + 0xb4]
push edx
mov edx, dword [esp + 0x94]
push 0
push eax
mov eax, dword [esp + 0xa4]
push ecx
mov ecx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x74]
push edx
mov edx, dword [esp + 0x70]
push eax
mov eax, dword [esp + 0xa8]
push ecx
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esp + 0xac]
mov edi, dword [esp + 0x70]
lea ecx, [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0xa0]
push edx
mov edx, dword [esp + 0xa8]
push eax
mov eax, dword [esp + 0x84]
push ecx
mov ecx, dword [esp + 0xdc]
push edx
mov edx, dword [esp + 0xb8]
push eax
push ecx
push edx
push 0
push 0
call fcn.0043b610
mov eax, dword [esp + 0xb4]
add esp, 0x64
test eax, eax
je 0x43cf2e
push eax
call fcn.00477540
add esp, 4
push ebp
call fcn.004b1460
add esp, 4
call fcn.00432f70
push 0
push 0x6d5718
call fcn.00479fc0
push 0
push 0x6d5718
mov dword [0x6d53f4], 0
mov byte [0x6d59d0], 0
call fcn.0047a000
add esp, 0x10
mov ecx, dword [esp + 0x1bc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004b2f95
add esp, 0x1b0
ret