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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa0
push esi
mov esi, dword [ebp + 8]
xor ecx, ecx
push edi
mov edi, dword [ebp + 0xc]
mov eax, dword [esi + 8]
lea edx, [esi + 0xc]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x34], eax
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
jne 0x4a6055
mov ecx, dword [esi + 4]
cmp dword [edi + 0x58], eax
je 0x4a603f
mov eax, dword [esi]
cmp eax, ecx
jne 0x4a601b
push eax
push 5
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
call fcn.00481380
add esp, 0x18
movss xmm0, dword [0x536890]
xor eax, eax
movss dword [esi + 0x74], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0
push 0
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push eax
push dword [esp + 0x3c]
push dword [ebp + 0x14]
push ecx
push dword [esp + 0x54]
push dword [ebp + 0x10]
call fcn.00477fb0
add esp, 0x28
jmp 0x4a6006
push ecx
push 5
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x10]
call fcn.004a45f0
add esp, 0x14
jmp 0x4a6006
mov eax, dword [esi + 4]
lea ecx, [esi + 0x20]
mov dword [esp + 0x30], eax
xor edx, edx
mov eax, dword [esi]
mov dword [esp + 0x2c], eax
xor eax, eax
lock cmpxchg dword [ecx], edx
mov dword [esp + 0x10], eax
lea ecx, [esi + 0x24]
xor edx, edx
xor eax, eax
lock cmpxchg dword [ecx], edx
mov dword [esp + 0x38], eax
lea ecx, [esi + 0x28]
xor edx, edx
xor eax, eax
lock cmpxchg dword [ecx], edx
mov dword [esp + 0x3c], eax
lea ecx, [esi + 0x38]
xor edx, edx
xor eax, eax
lock cmpxchg dword [ecx], edx
mov dword [esp + 0x6c], eax
lea eax, [edi + 0x54]
push eax
call fcn.004a6ac0
movq xmm0, qword [edi + 0x48]
lea ecx, [edi + 0x54]
mov eax, dword [edi + 0x50]
add esp, 4
movq qword [esp + 0x88], xmm0
mov dword [esp + 0x90], eax
test ecx, ecx
je 0x4a60cd
xor eax, eax
xchg dword [ecx], eax
movss xmm0, dword [edi + 0x18]
lea ecx, [esi + 0x10]
movss dword [esp + 0x7c], xmm0
xor edx, edx
xor eax, eax
lock cmpxchg dword [ecx], edx
cmp eax, 1
je 0x4a6129
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x44]
push eax
push edi
push esi
call fcn.004a54b0
movq xmm0, qword [esp + 0x50]
add esp, 0x10
mov eax, dword [esp + 0x48]
movq qword [esp + 0x80], xmm0
movq xmm0, qword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], eax
movq qword [esp + 0x58], xmm0
jmp 0x4a6185
lea edi, [esi + 0x50]
push edi
call fcn.004a6ac0
movq xmm0, qword [esi + 0x44]
add esp, 4
mov ecx, dword [esi + 0x4c]
movq qword [esp + 0x80], xmm0
mov dword [esp + 0x54], ecx
test edi, edi
je 0x4a6152
xor eax, eax
xchg dword [edi], eax
lea edi, [esi + 0x60]
movq qword [esp + 0x40], xmm0
push edi
mov dword [esp + 0x4c], ecx
call fcn.004a6ac0
movq xmm0, qword [esi + 0x54]
add esp, 4
mov eax, dword [esi + 0x5c]
movq qword [esp + 0x58], xmm0
mov dword [esp + 0xc], eax
test edi, edi
je 0x4a6182
xor eax, eax
xchg dword [edi], eax
mov edi, dword [ebp + 0xc]
movss xmm1, dword [esp + 0x44]
movss xmm0, dword [esp + 0x40]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [esp + 0x48]
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x4a61bd
sqrtsd xmm0, xmm0
jmp 0x4a61c2
call fcn.00507490
xorps xmm4, xmm4
lea edx, [esi + 0xc]
cvtsd2ss xmm4, xmm0
xor ecx, ecx
xor eax, eax
movss dword [esp + 0x50], xmm4
lock cmpxchg dword [edx], ecx
movss xmm6, dword [0x536880]
movss xmm0, dword [0x536890]
cmp eax, 3
ja case.0x4a61f3.0
jmp dword [eax*4 + 0x4a6a70]
movss xmm1, dword [esp + 0x10]
movss xmm3, dword [esp + 0x38]
comiss xmm1, xmm3
jae case.0x4a61f3.0
movaps xmm2, xmm4
minss xmm2, xmm3
comiss xmm1, xmm2
jbe 0x4a621e
movaps xmm2, xmm1
subss xmm2, xmm1
mulss xmm2, dword [esp + 0x3c]
addss xmm2, xmm1
divss xmm1, xmm2
jmp 0x4a62cf
movss xmm1, dword [esp + 0x10]
movss xmm3, dword [esp + 0x38]
comiss xmm1, xmm3
jae case.0x4a61f3.0
movaps xmm2, xmm4
minss xmm2, xmm3
comiss xmm1, xmm2
jbe 0x4a6259
movaps xmm2, xmm1
subss xmm2, xmm1
subss xmm3, xmm1
movaps xmm1, xmm0
mulss xmm2, dword [esp + 0x3c]
divss xmm2, xmm3
subss xmm1, xmm2
jmp 0x4a62cf
movss xmm1, dword [esp + 0x10]
movss xmm2, dword [esp + 0x38]
comiss xmm1, xmm2
jae case.0x4a61f3.0
movaps xmm0, xmm4
minss xmm0, xmm2
comiss xmm1, xmm0
jbe 0x4a6294
movaps xmm0, xmm1
divss xmm0, xmm1
movss xmm1, dword [esp + 0x3c]
xorps xmm1, xmm6
cvtps2pd xmm0, xmm0
cvtss2sd xmm1, xmm1
call fcn.005064e0
movss xmm4, dword [esp + 0x50]
xorps xmm1, xmm1
movss xmm6, dword [0x536880]
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0x536890]
jmp 0x4a62cf
movaps xmm1, xmm0
comiss xmm4, dword [0x53b8f0]
movss dword [esp + 0x10], xmm1
jbe 0x4a6495
divss xmm0, xmm4
mov eax, dword [esp + 0x54]
mov dword [esp + 0x20], eax
movq xmm2, qword [esp + 0x80]
movss xmm5, dword [esp + 0x20]
movq qword [esp + 0x18], xmm2
movss xmm3, dword [esp + 0x1c]
movss xmm2, dword [esp + 0x40]
mulss xmm2, xmm0
mulss xmm3, xmm0
mulss xmm5, xmm0
xorps xmm0, xmm0
comiss xmm4, xmm0
movss dword [esp + 0x18], xmm2
movss dword [esp + 0x1c], xmm3
movss dword [esp + 0x20], xmm5
jbe 0x4a649e
xor edx, edx
lea ecx, [esi + 0x2c]
xor eax, eax
lock cmpxchg dword [ecx], edx
mov dword [esp + 0x78], eax
lea ecx, [esi + 0x30]
xor edx, edx
xor eax, eax
lock cmpxchg dword [ecx], edx
mov dword [esp + 0x74], eax
lea ecx, [esi + 0x34]
xor edx, edx
xor eax, eax
lock cmpxchg dword [ecx], edx
sub esp, 0x18
mov dword [esp + 0x88], eax
movss xmm0, dword [esp + 0x88]
mov ecx, esp
xorps xmm2, xmm6
xorps xmm3, xmm6
xorps xmm5, xmm6
unpcklps xmm2, xmm3
movss dword [esp + 0x14], xmm0
movss xmm0, dword [esp + 0x8c]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 0x90]
movss dword [esp + 0xc], xmm0
sub esp, 0xc
movq xmm0, qword [esp + 0x7c]
movq qword [ecx], xmm2
movss dword [esp + 0xc4], xmm5
mov eax, dword [esp + 0xc4]
mov dword [ecx + 8], eax
mov eax, esp
mov ecx, dword [esp + 0x30]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
call fcn.00475790
fmul dword [esp + 0x34]
add esp, 0x24
movss xmm2, dword [edi + 0xc]
movss xmm0, dword [0x53b938]
comiss xmm0, xmm2
fstp dword [esp + 0xc]
movss xmm1, dword [esp + 0xc]
movss dword [esp + 0xc], xmm1
movss dword [esp + 0x10], xmm1
jbe 0x4a649e
cmp dword [edi + 8], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0xbf800000
je 0x4a6432
mov dword [esp + 0x60], 0x3f800000
movss xmm0, dword [edi + 0x14]
sub esp, 0x18
mov eax, dword [esp + 0x38]
mov ecx, esp
movss dword [esp + 0x14], xmm0
movss xmm0, dword [edi + 0x10]
movss dword [esp + 0x10], xmm0
movq xmm0, qword [esp + 0x30]
movss dword [esp + 0xc], xmm2
sub esp, 0xc
movq qword [ecx], xmm0
movq xmm0, qword [esp + 0x7c]
mov dword [ecx + 8], eax
mov ecx, esp
mov eax, dword [esp + 0x84]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
call fcn.00475790
fmul dword [esp + 0x30]
add esp, 0x24
fstp dword [esp + 0x10]
movss xmm1, dword [esp + 0x10]
jmp 0x4a649e
xorps xmm0, xmm0
movss dword [esp + 0x50], xmm0
lea edx, [esi + 0x1c]
xor ecx, ecx
xor eax, eax
lock cmpxchg dword [edx], ecx
mov dword [esp + 0xc], eax
movss xmm0, dword [esp + 0xc]
comiss xmm0, xmm1
jbe 0x4a64bd
movaps xmm2, xmm1
jmp 0x4a64cf
xor ecx, ecx
xor eax, eax
lock cmpxchg dword [edx], ecx
mov dword [esp + 0xc], eax
movss xmm2, dword [esp + 0xc]
lea edi, [esi + 0x18]
xor ecx, ecx
xor eax, eax
lock cmpxchg dword [edi], ecx
mov dword [esp + 0xc], eax
xor ecx, ecx
movss xmm0, dword [esp + 0xc]
xor eax, eax
comiss xmm0, xmm2
jbe 0x4a64ff
lock cmpxchg dword [edi], ecx
mov edi, eax
mov dword [esp + 0x10], edi
movss xmm1, dword [esp + 0x10]
jmp 0x4a652c
lock cmpxchg dword [edx], ecx
mov dword [esp + 0xc], eax
movss xmm0, dword [esp + 0xc]
comiss xmm0, xmm1
ja 0x4a6528
xor ecx, ecx
xor eax, eax
lock cmpxchg dword [edx], ecx
mov edi, eax
mov dword [esp + 0x10], edi
movss xmm1, dword [esp + 0x10]
jmp 0x4a652c
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
xor ecx, ecx
test edx, edx
je 0x4a65f0
cmp edx, 4
jb 0x4a6596
lea eax, [esi + 0x9c]
mov esi, dword [eax]
mov dword [esp + 0xc], eax
lea eax, [edx - 1]
mov dword [esp + 0x38], esi
lea eax, [esi + eax*4]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xc]
cmp esi, eax
mov esi, dword [ebp + 8]
ja 0x4a656a
cmp dword [esp + 0x3c], eax
jae 0x4a6596
mov eax, edx
and eax, 0xfffffffc
nop
add ecx, 4
cmp ecx, eax
jb 0x4a6570
shr eax, 2
shl eax, 4
shr eax, 2
mov dword [esp + 0xc], ecx
mov ecx, eax
mov eax, edi
mov edi, dword [esp + 0x38]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0xc]
cmp ecx, edx
jae 0x4a65f0
mov eax, edx
sub eax, ecx
cmp eax, 4
jb 0x4a65d8
lea edi, [edx - 3]
mov eax, dword [esi + 0x9c]
movss dword [eax + ecx*4], xmm1
mov eax, dword [esi + 0x9c]
movss dword [eax + ecx*4 + 4], xmm1
mov eax, dword [esi + 0x9c]
movss dword [eax + ecx*4 + 8], xmm1
mov eax, dword [esi + 0x9c]
movss dword [eax + ecx*4 + 0xc], xmm1
add ecx, 4
cmp ecx, edi
jb 0x4a65a2
cmp ecx, edx
jae 0x4a65f0
nop dword [eax]
mov eax, dword [esi + 0x9c]
movss dword [eax + ecx*4], xmm1
inc ecx
cmp ecx, edx
jb 0x4a65e0
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x58], 0
je 0x4a6620
push 0
push 0
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push dword [ebp + 0x14]
push edx
push dword [esp + 0x54]
push dword [ebp + 0x10]
call fcn.00477fb0
add esp, 0x28
jmp 0x4a6636
push dword [esi + 4]
push 5
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x10]
call fcn.004a45f0
add esp, 0x14
mov ecx, dword [esp + 0x34]
test ecx, ecx
jne 0x4a6659
push 0xc55a
push str.C:PureBasicSvn_v6.10LibrariesSoundMiniAudiominiaudiominiaudio.h
push str.pChannelMapOut_____void__0_
call fcn.005063ca
mov ecx, dword [esp + 0x40]
add esp, 0xc
movss xmm3, dword [esp + 0x50]
xorps xmm2, xmm2
comiss xmm3, xmm2
jbe 0x4a676a
movq xmm0, qword [esp + 0x80]
xor edi, edi
movss xmm1, dword [0x536890]
movq qword [esp + 0x18], xmm0
movaps xmm0, xmm1
divss xmm0, xmm3
mov eax, dword [esp + 0x54]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
movss xmm3, dword [esp + 0x40]
movss xmm5, dword [esp + 0x1c]
movss xmm6, dword [esp + 0x20]
mulss xmm3, xmm0
mulss xmm5, xmm0
mulss xmm6, xmm0
movss dword [esp + 0x28], xmm3
test eax, eax
je 0x4a676a
movss xmm7, dword [0x536188]
nop dword [eax + eax]
test ecx, ecx
jne 0x4a66e7
push edi
push eax
push ecx
call fcn.0047a410
add esp, 0xc
mov byte [esp + 0x17], al
mov cl, al
jmp 0x4a66ee
mov cl, byte [edi + ecx]
mov byte [esp + 0x17], cl
test cl, cl
je 0x4a6731
cmp cl, 1
je 0x4a6731
cmp cl, 5
je 0x4a6731
mov al, cl
sub al, 0x14
cmp al, 0x1f
jbe 0x4a6731
movzx eax, cl
xor edx, edx
mov dword [esp + 0x2c], eax
lea eax, [eax + eax*2]
lea ecx, [eax*8 + 0x1710e30]
movss xmm0, dword [ecx]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jp 0x4a6812
inc edx
add ecx, 4
cmp edx, 6
jl 0x4a6717
movaps xmm0, xmm1
movss xmm3, dword [esi + 0x78]
addss xmm0, xmm1
mulss xmm0, xmm7
comiss xmm0, xmm3
ja 0x4a6749
movaps xmm0, xmm3
mov eax, dword [esi + 0x9c]
mov ecx, dword [esp + 0x34]
mulss xmm0, dword [eax + edi*4]
movss dword [eax + edi*4], xmm0
inc edi
mov eax, dword [esp + 0x30]
cmp edi, eax
jb 0x4a66d0
lea edx, [esi + 0x7c]
test edx, edx
je 0x4a68b8
mov eax, dword [esi + 0x9c]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x4a689d
xor edi, edi
cmp dword [edx], edi
jbe 0x4a67fd
mov esi, eax
nop
mov eax, dword [edx + 0x14]
mov ecx, dword [edx + 0x10]
movss xmm4, dword [esi + edi*4]
movss xmm2, dword [eax + edi*4]
mov eax, dword [edx + 8]
subss xmm2, dword [ecx + edi*4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x536930]
mov eax, dword [edx + 4]
cvtpd2ps xmm1, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x536930]
cvtpd2ps xmm0, xmm0
divss xmm1, xmm0
mulss xmm2, xmm1
addss xmm2, dword [ecx + edi*4]
movss dword [ecx + edi*4], xmm2
mov eax, dword [edx + 0x14]
movss dword [eax + edi*4], xmm4
inc edi
cmp edi, dword [edx]
jb 0x4a6790
mov esi, dword [ebp + 8]
cmp dword [edx + 8], 0xffffffff
jne 0x4a6894
mov eax, dword [edx + 4]
mov dword [edx + 8], eax
jmp 0x4a68a1
cmp byte [esp + 0x17], 0x34
jb 0x4a6829
movss xmm4, dword [0x53b988]
movaps xmm3, xmm2
movaps xmm0, xmm2
jmp 0x4a685c
mov eax, dword [esp + 0x2c]
lea eax, [eax + eax*2]
movq xmm0, qword [eax*4 + 0x1710b98]
mov eax, dword [eax*4 + 0x1710ba0]
movq qword [esp + 0x18], xmm0
movss xmm0, dword [esp + 0x1c]
movss xmm3, dword [esp + 0x18]
mov dword [esp + 0x20], eax
movss xmm4, dword [esp + 0x20]
xor edx, edx
lea ecx, [esi + 0x3c]
xor eax, eax
lock cmpxchg dword [ecx], edx
mulss xmm3, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mulss xmm0, xmm5
mulss xmm4, xmm6
addss xmm0, xmm3
addss xmm0, xmm4
subss xmm0, xmm1
mulss xmm0, dword [esp + 0x2c]
addss xmm0, xmm1
jmp 0x4a6734
mov dword [edx + 8], 0
jmp 0x4a68a1
test edx, edx
je 0x4a68b8
push dword [ebp + 0x1c]
mov eax, dword [ebp + 0x10]
push dword [ebp + 0x18]
push eax
push eax
push edx
call fcn.00491ec0
add esp, 0x14
xorps xmm2, xmm2
movss xmm0, dword [esp + 0x6c]
comiss xmm0, xmm2
jbe 0x4a6006
lea edi, [esi + 0x50]
push edi
call fcn.004a6ac0
movq xmm0, qword [esi + 0x44]
add esp, 4
mov eax, dword [esi + 0x4c]
movq qword [esp + 0x40], xmm0
mov dword [esp + 0x48], eax
test edi, edi
je 0x4a68ed
xor eax, eax
xchg dword [edi], eax
mov edi, dword [ebp + 0xc]
add edi, 0x34
push edi
call fcn.004a6ac0
mov eax, dword [ebp + 0xc]
add esp, 4
movq xmm0, qword [eax + 0x28]
mov eax, dword [eax + 0x30]
movq qword [esp + 0x18], xmm0
mov dword [esp + 0x20], eax
test edi, edi
je 0x4a6919
xor eax, eax
xchg dword [edi], eax
movss xmm0, dword [esp + 0x18]
lea edi, [esi + 0x70]
subss xmm0, dword [esp + 0x40]
push edi
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 0x20]
subss xmm0, dword [esp + 0x48]
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0x24]
subss xmm0, dword [esp + 0x4c]
movss dword [esp + 0x34], xmm0
call fcn.004a6ac0
movq xmm0, qword [esi + 0x64]
add esp, 4
mov eax, dword [esi + 0x6c]
movq qword [esp + 0x18], xmm0
mov dword [esp + 0x20], eax
test edi, edi
je 0x4a6975
xor eax, eax
xchg dword [edi], eax
movss xmm1, dword [esp + 0x28]
movss xmm0, dword [esp + 0xc]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [esp + 0x30]
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x4a69ad
sqrtsd xmm0, xmm0
jmp 0x4a69b2
call fcn.00507490
xorps xmm5, xmm5
cvtsd2ss xmm5, xmm0
xorps xmm0, xmm0
ucomiss xmm5, xmm0
lahf
test ah, 0x44
jnp 0x4a6006
movss xmm3, dword [esp + 0xc]
movss xmm1, dword [esp + 0x28]
movaps xmm0, xmm3
mulss xmm0, dword [esp + 0x88]
movaps xmm2, xmm1
mulss xmm2, dword [esp + 0x8c]
mulss xmm1, dword [esp + 0x1c]
movss xmm4, dword [esp + 0x30]
addss xmm2, xmm0
mulss xmm3, dword [esp + 0x18]
movaps xmm0, xmm4
mulss xmm0, dword [esp + 0x90]
mulss xmm4, dword [esp + 0x20]
addss xmm1, xmm3
movss xmm3, dword [esp + 0x6c]
addss xmm2, xmm0
addss xmm1, xmm4
movss xmm4, dword [esp + 0x7c]
movaps xmm0, xmm4
divss xmm2, xmm5
divss xmm0, xmm3
divss xmm1, xmm5
comiss xmm0, xmm2
ja 0x4a6a44
movaps xmm2, xmm0
comiss xmm0, xmm1
ja 0x4a6a4c
movaps xmm1, xmm0
mulss xmm2, xmm3
movaps xmm0, xmm4
xor eax, eax
mulss xmm1, xmm3
pop edi
subss xmm0, xmm2
subss xmm4, xmm1
divss xmm0, xmm4
movss dword [esi + 0x74], xmm0
pop esi
mov esp, ebp
pop ebp
ret