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

Disassembly:
sub esp, 0x80
xor eax, eax
push ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x90]
push ebp
push esi
movsx ecx, word [eax]
movsx edx, word [eax + 4]
shl ecx, 0x10
shl edx, 0x10
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], edx
movsx ecx, word [eax + 8]
movsx edx, word [eax + 2]
mov esi, dword [esp + 0x9c]
push edi
shl ecx, 0x10
mov ebx, dword [esi]
mov dword [esp + 0x68], ecx
movsx ecx, word [eax + 6]
shl edx, 0x10
mov dword [esp + 0x6c], edx
mov edi, dword [esi + 4]
movsx edx, word [eax + 0xa]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x28], DirectSoundCreate
shl ecx, 0x10
mov ebp, dword [eax]
mov dword [esp + 0x70], ecx
mov ecx, dword [eax + 4]
sub ebp, ebx
mov ebx, dword [eax + 8]
sub ecx, edi
shl edx, 0x10
mov dword [esp + 0x74], edx
mov edx, dword [esi + 8]
sub ebx, edx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ebx
call fcn.0048df90
mov ax, word [esi + 0xe]
neg ax
push eax
call fcn.0048e130
mov esi, dword [0x7e70c8]
mov ecx, dword [esi + 8]
mov edi, dword [esi]
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x24]
mov eax, edi
mov dword [esp + 0x18], ecx
imul ecx, dword [esp + 0x50]
imul eax, ebp
imul edx, ebx
add eax, ecx
mov ecx, dword [esi + 0x18]
add eax, edx
mov edx, dword [esi + 0x14]
mov dword [esp + 0x20], ecx
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x38], edx
imul edx, dword [esp + 0x50]
mov dword [esp + 0x14], ecx
imul ecx, ebp
add ecx, edx
mov edx, dword [esp + 0x20]
imul edx, ebx
mov ebx, dword [esi + 0x24]
add ecx, edx
mov edx, dword [esi + 0x28]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esi + 0x20]
mov dword [esp + 0x3c], edx
imul edx, ebp
sar eax, 0xe
sar ecx, 0xe
imul ebx, dword [esp + 0x50]
add edx, ebx
mov ebx, dword [esp + 0x1c]
imul ebx, dword [esp + 0x54]
add edx, ebx
mov ebx, dword [esp + 0x98]
sub esi, 0x30
mov ebp, dword [ebx]
mov ebx, dword [esp + 0xa4]
sar edx, 0xe
sub ebp, dword [ebx]
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 0x98]
imul edi, dword [esp + 0x4c]
mov ebp, dword [ebp + 4]
sub ebp, dword [ebx + 4]
mov dword [esp + 0x50], ebp
mov ebp, dword [esp + 0x98]
mov ebp, dword [ebp + 8]
sub ebp, dword [ebx + 8]
mov ebx, dword [esp + 0x18]
imul ebx, dword [esp + 0x50]
add edi, ebx
mov ebx, dword [esp + 0x24]
imul ebx, ebp
add edi, ebx
mov ebx, dword [esp + 0x14]
imul ebx, dword [esp + 0x4c]
sar edi, 0xe
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x38]
imul edi, dword [esp + 0x50]
add ebx, edi
mov edi, dword [esp + 0x20]
imul edi, ebp
mov dword [esp + 0x54], ebp
mov ebp, dword [esp + 0x40]
imul ebp, dword [esp + 0x50]
add ebx, edi
mov edi, dword [esp + 0x3c]
imul edi, dword [esp + 0x4c]
add edi, ebp
mov ebp, dword [esp + 0x1c]
imul ebp, dword [esp + 0x54]
mov dword [0x7e70c8], esi
mov esi, dword [esp + 0x58]
add edi, ebp
sub eax, esi
sar ebx, 0xe
sar edi, 0xe
shl eax, 0x10
mov dword [esp + 0x7c], eax
sub ecx, ebx
sub edx, edi
lea eax, [esp + 0x7c]
shl ecx, 0x10
shl edx, 0x10
shl esi, 0x10
shl ebx, 0x10
shl edi, 0x10
push eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], edx
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], edi
call fcn.00458830
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x80]
mov edx, dword [esp + 0x88]
lea ecx, [esp + 0x80]
shl esi, 8
shl edi, 8
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0xac]
shl edx, 8
mov dword [esp + 0x88], edx
push esi
lea edx, [esp + 0x90]
push ecx
mov dword [esp + 0x88], edi
push edx
lea eax, [esp + 0x80]
lea ecx, [esp + 0x74]
push eax
push ecx
call fcn.0044cbc0
add esp, 0x1c
test eax, eax
je 0x44cbb3
mov eax, dword [esp + 0x9c]
mov edi, dword [esi]
movsx edx, word [eax]
cmp edi, edx
jl 0x44cbb3
movsx ecx, word [eax + 4]
mov edx, dword [esi + 4]
cmp edx, ecx
jl 0x44cbb3
movsx ebx, word [eax + 8]
mov ecx, dword [esi + 8]
cmp ecx, ebx
jl 0x44cbb3
movsx ebx, word [eax + 2]
cmp edi, ebx
jg 0x44cbb3
movsx edi, word [eax + 6]
cmp edx, edi
jg 0x44cbb3
movsx edx, word [eax + 0xa]
cmp ecx, edx
jg 0x44cbb3
call fcn.0048df90
mov eax, dword [esp + 0xa0]
mov cx, word [eax + 0xe]
push ecx
call fcn.0048e130
mov eax, dword [0x7e70c8]
mov ebx, dword [esi + 8]
mov edi, dword [esi + 4]
mov edx, dword [esi]
mov ecx, dword [eax + 8]
mov ebp, dword [eax + 4]
imul ecx, ebx
imul ebp, edi
add ecx, ebp
mov ebp, dword [eax]
imul ebp, edx
mov edx, dword [eax + 0x18]
add ecx, ebp
mov ebp, dword [eax + 0x14]
imul edx, ebx
imul ebp, edi
mov edi, dword [eax + 0x10]
add edx, ebp
imul edi, dword [esi]
add edx, edi
mov edi, dword [eax + 0x28]
imul edi, ebx
mov ebx, dword [eax + 0x24]
mov eax, dword [eax + 0x20]
imul ebx, dword [esi + 4]
imul eax, dword [esi]
add edi, ebx
add esp, 4
add edi, eax
mov ax, word [esp + 0xa8]
sar ecx, 0xe
sar edx, 0xe
sar edi, 0xe
mov dword [esi], ecx
mov dword [esi + 4], edx
mov dword [esi + 8], edi
mov edx, dword [0x7e70c8]
sub edx, 0x30
test ax, ax
mov dword [0x7e70c8], edx
jl 0x44cb9f
movsx eax, ax
push 1
push 0x7f6dc0
lea ecx, [eax + eax*2]
lea ecx, [eax + ecx*4]
lea edx, [ecx + ecx*8]
mov ecx, dword [0x7fe16c]
lea eax, [eax + edx*8]
lea eax, [eax + eax*2]
lea edi, [ecx + eax*2]
push edi
mov dword [esp + 0x30], edi
call fcn.0045ee70
movsx eax, word [edi + 0xc]
mov ecx, dword [0x533950]
add esp, 0xc
shl eax, 6
add eax, 0x52b720
mov dword [esp + 0x14], 1
mov dword [esp + 0x18], 0xfffffffe
mov dword [esp + 0x1c], 0
movsx edx, word [eax + 2]
movsx eax, word [eax]
lea edx, [ecx + edx*4]
mov dword [esp + 0x44], eax
test eax, eax
mov dword [esp + 0x20], edx
jle 0x44cbb3
mov edx, dword [esp + 0x94]
mov ebx, 0x7f6dc0
mov dword [esp + 0x10], ebx
jmp 0x44c87c
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
mov ecx, dword [edi + 8]
test eax, ecx
je 0x44ca5b
mov ecx, dword [edx + 8]
mov eax, dword [edx]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x98]
mov ebp, dword [edx + 4]
mov dword [esp + 0x6c], eax
mov edi, dword [ecx]
mov esi, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x78], edi
mov dword [esp + 0x80], ecx
mov ecx, dword [ebx]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x84], ecx
mov ecx, dword [ebx + 4]
mov ebx, dword [ebx + 8]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x88], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x74]
sub ecx, ebx
mov ebx, dword [esp + 0x84]
sub edi, eax
sub ebx, eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x7c], esi
sub esi, ebp
sub eax, ebp
imul ebx, edi
imul eax, esi
mov dword [esp + 0x70], ebp
mov ebp, dword [esp + 0x74]
add ebx, eax
mov eax, dword [esp + 0x8c]
sub eax, ebp
mov ebp, esi
imul eax, ecx
imul ebp, esi
add ebx, eax
mov eax, edi
imul eax, edi
add eax, ebp
mov ebp, ecx
imul ebp, ecx
add eax, ebp
test ebx, ebx
mov dword [esp + 0x3c], eax
jge 0x44c942
test eax, eax
jl 0x44c952
test eax, eax
jle 0x44ca50
test ebx, ebx
jle 0x44ca50
cdq
mov ebp, eax
mov eax, ebx
xor ebp, edx
sub ebp, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ebp
jg 0x44ca49
mov ebp, dword [esp + 0x3c]
sar ebp, 0x10
je 0x44c978
mov eax, ebx
cdq
idiv ebp
jmp 0x44c97a
xor eax, eax
imul edi, eax
imul ecx, eax
mov ebp, dword [esp + 0x6c]
imul esi, eax
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x8c]
sar edi, 0x10
add edi, ebp
mov ebp, dword [esp + 0x74]
sar ecx, 0x10
sar esi, 0x10
add ecx, ebp
add esi, edx
mov edx, dword [esp + 0x88]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x64], esi
sub ecx, eax
sub esi, edx
mov edx, ecx
imul edx, ecx
mov ecx, esi
mov ebx, dword [esp + 0x84]
imul ecx, esi
mov dword [esp + 0x60], edi
sub edi, ebx
add edx, ecx
mov ecx, edi
mov ebx, dword [esp + 0x10]
imul ecx, edi
mov eax, dword [ebx + 0xc]
add edx, ecx
mov ecx, eax
imul ecx, eax
cmp edx, ecx
mov edx, dword [esp + 0x94]
jge 0x44ca54
mov eax, dword [edx]
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov edi, dword [edx + 8]
sub ecx, eax
mov eax, dword [edx + 4]
sub esi, eax
mov eax, dword [esp + 0x40]
sub eax, edi
mov edi, esi
imul edi, esi
imul eax, eax
mov esi, ecx
add eax, edi
imul esi, ecx
mov ecx, dword [esp + 0x28]
add eax, esi
mov esi, dword [esp + 0xa4]
cmp eax, ecx
jge 0x44ca5b
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], ecx
jmp 0x44ca5b
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0xa4]
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
inc eax
add ebx, 0x10
add ebp, 8
add edi, edi
cmp eax, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x14], edi
jl 0x44c878
cmp dword [esp + 0x18], 0xffffffff
jl 0x44cbb3
mov ebp, dword [esi]
mov eax, dword [esp + 0xa0]
mov edi, dword [edx]
mov ecx, ebp
mov ebx, dword [eax]
sub ecx, edi
mov edi, dword [eax + 4]
mov eax, dword [eax + 8]
sub edi, dword [edx + 4]
sub eax, dword [edx + 8]
mov edx, dword [esi + 8]
add ecx, ebx
add edi, dword [esi + 4]
add eax, edx
imul eax, eax
mov edx, edi
imul edx, edi
add eax, edx
mov edx, ecx
imul edx, ecx
mov ecx, dword [0x7fe260]
add eax, edx
cmp eax, ecx
jge 0x44cbb3
mov ecx, dword [esp + 0xa0]
add ebp, ebx
mov dword [0x7fe210], ebp
mov edi, dword [esi + 4]
mov edx, dword [ecx + 4]
add edx, edi
mov dword [0x7fe214], edx
mov ecx, dword [ecx + 8]
mov edx, dword [esi + 8]
mov esi, dword [esp + 0x18]
add ecx, edx
mov dword [0x7fe260], eax
movsx edx, word [esp + 0xa8]
test esi, esi
mov dword [0x7fe218], ecx
mov dword [0x7fe1c0], edx
jl 0x44cb8f
mov edi, dword [esp + 0x24]
push 3
push 0x7f6dc0
push edi
call fcn.0045ee70
mov ax, word [edi + 0x4e]
mov ecx, dword [esp + 0x38]
shl esi, 4
mov word [0x7fe85c], ax
mov eax, esi
mov dword [0x7fe854], ecx
add esp, 0xc
mov edx, dword [eax + 0x7f6dc0]
mov ecx, dword [eax + 0x7f6dc4]
mov dword [0x7fe840], edx
mov edx, dword [eax + 0x7f6dc8]
mov eax, dword [esp + 0x30]
add edi, 0x52
mov dword [0x7fe844], ecx
mov dword [0x7fe848], edx
mov dword [0x7fe858], eax
mov dword [0x7fe850], edi
mov word [0x7fe85e], 0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x80
ret
mov edx, dword [esp + 0x94]
mov dword [esp + 0x18], 0xffffffff
jmp 0x44ca97
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x80
ret