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

Disassembly:
push 0xffffffffffffffff
push 0x608ca8
mov eax, dword fs:[0]
push eax
sub esp, 0x74
push ebx
push ebp
push esi
push edi
mov eax, dword [0x6f1550]
xor eax, esp
push eax
lea eax, [esp + 0x88]
mov dword fs:[0], eax
mov esi, ecx
mov ecx, dword [esi + 0x2e0]
cmp dword [ecx + 0xa0], 1
je 0x55ec46
cmp dword [ecx + 0xa0], 3
je 0x55ec46
mov ebp, 2
cmp dword [ecx + 0xa0], ebp
jne 0x55eac1
push 1
lea eax, [esp + 0x4c]
push eax
call fcn.0057bca0
test al, al
je 0x55ec7e
mov ecx, dword [esi + 0x2e0]
call fcn.00514620
mov dword [esp + 0x30], edx
mov dl, byte [esp + 0x4c]
test dl, 8
mov ebp, eax
je 0x55eaa7
test byte [esp + 0x49], 2
je 0x55e86a
mov ecx, dword [esi + 0x2e0]
lea edx, [esp + 0x48]
push edx
call fcn.00562250
mov dl, byte [esp + 0x4c]
test dl, 8
je 0x55eaa7
mov eax, dword [esp + 0x4a]
mov ecx, eax
and ecx, 0x1fff
cmp cx, 0x10
jb 0x55eaa7
cmp cx, 0x1fff
jae 0x55eaa7
test dl, 3
jne 0x55eaa7
and eax, 0x1fff
mov ebx, eax
xor eax, eax
test byte [esp + 0x49], 2
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov word [esp + 0x84], ax
je 0x55e94d
mov ecx, dword [esi + 0x2e0]
push eax
push 4
lea eax, [esp + 0x1c]
push eax
call fcn.00579d50
test al, al
je 0x55e94d
mov edx, dword [esp + 0x14]
mov ecx, dword [esi + 0x2e0]
push edx
lea eax, [esp + 0x6c]
push eax
call fcn.0057a230
test al, al
je 0x55e94d
mov cl, byte [esp + 0x6a]
and cl, 3
cmp cl, 2
jne 0x55e91e
test byte [esp + 0x83], 3
jne 0x55ed0e
mov edi, dword [esi + 0x2e0]
mov ecx, edi
call fcn.00514620
mov ecx, dword [esp + 0x4a]
mov edx, ebp
sub edx, eax
add edx, dword [esp + 0x4f]
mov eax, dword [esp + 0x14]
push edx
and ecx, 0x1fff
push eax
push ecx
mov ecx, edi
call fcn.00561b40
mov ebx, eax
push ebx
mov ecx, esi
call fcn.00511f60
test eax, eax
je 0x55eaa7
push 0x40
call fcn.0059b02f
add esp, 4
test eax, eax
je 0x55e976
mov ecx, eax
call fcn.004d1c70
mov edi, eax
jmp 0x55e978
xor edi, edi
mov dword [esp + 0x1c], edi
mov dword [edi + 0x18], ebx
movzx eax, byte [esp + 0x6a]
mov edx, 1
shr eax, 2
and eax, edx
mov dword [edi + 0x20], eax
movzx ecx, byte [esp + 0x6a]
shr ecx, 2
not ecx
and ecx, edx
mov dword [edi + 0x24], ecx
test byte [esp + 0x6a], 4
mov dword [esp + 0x90], edx
je 0x55e9c6
mov eax, dword [esp + 0x6b]
sub eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x6f]
sbb ecx, dword [esp + 0x9c]
jmp 0x55e9cd
xor eax, eax
mov ecx, DirectSoundCreate
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], ecx
cmp dword [esi + 0x2f0], 0
jne 0x55ea00
mov dword [esi + 0x2f0], edx
mov eax, dword [edi + 0x28]
sub eax, dword [esi + 0x208]
mov ecx, dword [edi + 0x2c]
sbb ecx, dword [esi + 0x20c]
mov dword [esi + 0x2e8], eax
mov dword [esi + 0x2ec], ecx
mov eax, dword [esi + 0x2e8]
sub dword [edi + 0x28], eax
mov ecx, dword [esi + 0x2ec]
push 0xffffffffffffffff
sbb dword [edi + 0x2c], ecx
mov eax, dword [edi + 0x28]
mov ecx, dword [edi + 0x2c]
add eax, edx
adc ecx, 0
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], ecx
mov ecx, dword [esi + 0x2e0]
lea ebx, [edi + 8]
call fcn.00514620
mov edx, ebp
sub edx, eax
add edx, dword [esp + 0x53]
mov ecx, ebx
push edx
call fcn.004871d0
mov ecx, dword [esi + 0x2e0]
mov eax, dword [ebx]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], eax
call fcn.00514620
mov ecx, eax
mov eax, dword [esp + 0x4f]
mov ebx, edx
cdq
add eax, ebp
adc edx, dword [esp + 0x30]
sub eax, ecx
mov ecx, dword [esp + 0x18]
sbb edx, ebx
push edx
mov edx, dword [esp + 0x24]
push eax
push edx
call fcn.00514720
push ecx
mov eax, esp
mov ecx, esi
mov dword [esp + 0x2c], esp
mov dword [esp + 0x20], 0
mov dword [eax], edi
call fcn.00513a50
lea ecx, [esp + 0x1c]
mov dword [esp + 0x90], 0xffffffff
call fcn.00455e90
mov edx, dword [esp + 0x57]
mov ecx, dword [esi + 0x2e0]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
push edx
mov edx, dword [esp + 0x57]
push edx
jmp 0x55eed8
cmp dword [ecx + 0xa0], 4
jne 0x55eeda
push 1
lea edx, [esp + 0x3c]
push edx
call fcn.0057c250
test al, al
je 0x55ec7e
mov ecx, dword [esi + 0x2e0]
movzx ebx, byte [esp + 0x3a]
call fcn.00514620
push ebx
mov ecx, esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
call fcn.00511f60
test eax, eax
je 0x55ec26
push 0x40
call fcn.0059b02f
add esp, 4
test eax, eax
je 0x55eb23
mov ecx, eax
call fcn.004d1c70
mov edi, eax
jmp 0x55eb25
xor edi, edi
mov dword [esp + 0x1c], edi
mov dword [edi + 0x18], ebx
movzx eax, byte [esp + 0x3d]
shr eax, 3
and eax, 1
mov dword [edi + 0x20], eax
movzx ecx, byte [esp + 0x3d]
shr ecx, 3
not ecx
and ecx, 1
mov dword [edi + 0x24], ecx
test byte [esp + 0x3d], 8
mov dword [esp + 0x90], ebp
je 0x55eb70
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x44]
sbb ecx, dword [esp + 0x9c]
jmp 0x55eb77
xor eax, eax
mov ecx, DirectSoundCreate
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], ecx
cmp dword [esi + 0x2f0], 0
jne 0x55ebae
mov dword [esi + 0x2f0], 1
mov edx, dword [edi + 0x28]
sub edx, dword [esi + 0x208]
mov eax, dword [edi + 0x2c]
sbb eax, dword [esi + 0x20c]
mov dword [esi + 0x2e8], edx
mov dword [esi + 0x2ec], eax
mov ecx, dword [esi + 0x2e8]
sub dword [edi + 0x28], ecx
mov edx, dword [esi + 0x2ec]
push 0xffffffffffffffff
sbb dword [edi + 0x2c], edx
mov eax, dword [edi + 0x28]
mov ecx, dword [edi + 0x2c]
add eax, 1
adc ecx, 0
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], ecx
movzx edx, word [esp + 0x42]
lea ebx, [edi + 8]
push edx
mov ecx, ebx
call fcn.004871d0
movzx eax, word [esp + 0x3e]
mov ebx, dword [ebx]
mov ecx, dword [esi + 0x2e0]
cdq
push edx
push eax
push ebx
call fcn.00514720
push ecx
mov eax, esp
mov ecx, esi
mov dword [esp + 0x2c], esp
mov dword [esp + 0x20], 0
mov dword [eax], edi
call fcn.00513a50
lea ecx, [esp + 0x1c]
mov dword [esp + 0x90], 0xffffffff
call fcn.00455e90
movzx eax, word [esp + 0x3e]
mov ecx, dword [esi + 0x2e0]
mov esi, dword [ecx]
cdq
add eax, dword [esp + 0x20]
adc edx, dword [esp + 0x24]
push edx
push eax
mov eax, dword [esi + 0xc]
jmp 0x55eed8
push 0
push 0x10000
lea edx, [esp + 0x1c]
push edx
call fcn.00579d50
test al, al
je 0x55ec7e
mov edx, dword [esp + 0x14]
cmp dl, 0xba
jne 0x55ec88
mov esi, dword [esi + 0x2e0]
lea eax, [esp + 0x48]
push eax
mov ecx, esi
call fcn.00579e10
test al, al
jne 0x55eeda
mov eax, 1
jmp 0x55eedc
cmp dl, 0xbb
jne 0x55ecb1
mov esi, dword [esi + 0x2e0]
lea ecx, [esp + 0x2c]
push ecx
mov ecx, esi
call fcn.0057a0c0
test al, al
jne 0x55eeda
mov eax, 1
jmp 0x55eedc
mov al, dl
add al, 0x43
cmp al, 0x32
ja 0x55eeda
mov ecx, dword [esi + 0x2e0]
xor eax, eax
push edx
lea edx, [esp + 0x4c]
push edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov word [esp + 0x6c], ax
call fcn.0057a230
test al, al
je 0x55ec7e
cmp word [esp + 0x48], 0
je 0x55ec7e
mov al, byte [esp + 0x4a]
and al, 3
cmp al, 2
jne 0x55ed18
test byte [esp + 0x63], 3
je 0x55ed18
mov eax, 0x80004005
jmp 0x55eedc
mov ecx, dword [esi + 0x2e0]
call fcn.00514620
mov ecx, dword [esi + 0x2e0]
mov ebx, edx
movzx edx, word [esp + 0x48]
mov ebp, eax
mov eax, dword [esp + 0x14]
push edx
push eax
push 0
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebx
call fcn.00561b40
push eax
mov ecx, esi
mov dword [esp + 0x24], eax
call fcn.00511f60
test eax, eax
je 0x55eebf
push 0x40
call fcn.0059b02f
add esp, 4
test eax, eax
je 0x55ed74
mov ecx, eax
call fcn.004d1c70
mov edi, eax
jmp 0x55ed76
xor edi, edi
mov dword [esp + 0x1c], edi
mov ecx, dword [esp + 0x20]
mov dword [edi + 0x18], ecx
movzx edx, byte [esp + 0x4a]
shr edx, 2
and edx, 1
mov dword [edi + 0x20], edx
movzx eax, byte [esp + 0x4a]
shr eax, 2
not eax
and eax, 1
mov dword [edi + 0x24], eax
test byte [esp + 0x4a], 4
mov dword [esp + 0x90], 0
je 0x55edc9
mov eax, dword [esp + 0x4b]
sub eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x4f]
sbb ecx, dword [esp + 0x9c]
jmp 0x55edd0
xor eax, eax
mov ecx, DirectSoundCreate
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], ecx
cmp dword [esi + 0x2f0], 0
jne 0x55ee07
mov dword [esi + 0x2f0], 1
mov ecx, dword [edi + 0x28]
sub ecx, dword [esi + 0x208]
mov edx, dword [edi + 0x2c]
sbb edx, dword [esi + 0x20c]
mov dword [esi + 0x2e8], ecx
mov dword [esi + 0x2ec], edx
mov eax, dword [esi + 0x2e8]
sub dword [edi + 0x28], eax
mov ecx, dword [esi + 0x2ec]
push 0xffffffffffffffff
sbb dword [edi + 0x2c], ecx
mov edx, dword [edi + 0x28]
mov eax, dword [edi + 0x2c]
add edx, 1
adc eax, 0
mov dword [edi + 0x30], edx
mov dword [edi + 0x34], eax
mov ecx, dword [esi + 0x2e0]
lea ebx, [edi + 8]
call fcn.00514620
movzx ecx, word [esp + 0x4c]
sub ecx, eax
add ecx, ebp
push ecx
mov ecx, ebx
call fcn.004871d0
mov ecx, dword [esi + 0x2e0]
mov edx, dword [ebx]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], edx
call fcn.00514620
mov ebx, dword [esp + 0x30]
mov ecx, eax
mov eax, edx
mov dword [esp + 0x20], eax
movzx eax, word [esp + 0x48]
cdq
add eax, ebp
adc edx, ebx
sub eax, ecx
mov ecx, dword [esp + 0x20]
sbb edx, ecx
mov ecx, dword [esp + 0x18]
push edx
mov edx, dword [esp + 0x2c]
push eax
push edx
call fcn.00514720
push ecx
mov eax, esp
mov ecx, esi
mov dword [esp + 0x2c], esp
mov dword [esp + 0x20], 0
mov dword [eax], edi
call fcn.00513a50
lea ecx, [esp + 0x1c]
mov dword [esp + 0x90], 0xffffffff
call fcn.00455e90
mov ebp, dword [esp + 0x2c]
movzx eax, word [esp + 0x48]
mov esi, dword [esi + 0x2e0]
mov edi, dword [esi]
cdq
add eax, ebp
adc edx, ebx
push edx
push eax
mov eax, dword [edi + 0xc]
mov ecx, esi
call eax
xor eax, eax
mov ecx, dword [esp + 0x88]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x80
ret 8