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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffe0
push edi
push esi
push ebx
sub esp, 0x274
mov edi, eax
mov edx, dword [0x7dfce0]
test edx, edx
je 0x411e7e
test edi, edi
je 0x411e7e
mov esi, dword [0x7df368]
mov ebx, dword [0x7df36c]
mov dword [esp + 0x254], 0
movsx eax, byte [0x595088]
jmp 0x411611
mov eax, 1
mov byte [0x595088], 1
mov edx, dword [0x7dfce0]
test eax, eax
je 0x411698
xor eax, eax
mov byte [0x595088], al
mov ecx, dword [edx]
push eax
push 0x7dfd24
push eax
push dword [0x7dfcd8]
push eax
push 1
push ebx
push esi
push edx
call dword [ecx + 0x5c]
test eax, eax
jl 0x411728
mov edx, dword [0x7dfce0]
mov ecx, dword [edx]
push 0
push 0x7dfd2c
push 2
push dword [0x5957c0]
push ebx
push esi
push edx
call dword [ecx + 0x90]
mov dword [0x7dfd34], esi
mov dword [0x7dfd38], ebx
test eax, eax
jl 0x4116f8
mov edx, dword [0x7df88c]
push dword [edx + 0x10]
push dword [edx + 0xc]
push 0x7e936c
push 0x7e58a0
call fcn.0045d62c
add esp, 0x10
mov edx, dword [0x7dfce0]
mov ecx, dword [edx]
push edx
call dword [ecx + 0xc]
test eax, eax
je 0x4116b1
cmp eax, 0x88760869
je 0x411755
xor ecx, ecx
jmp 0x4116b3
xor ecx, ecx
movsx eax, byte [0x7df360]
cmp eax, 1
je 0x4121d9
test ecx, ecx
je 0x41175f
cmp eax, 1
jne 0x4121f9
push 0x7e939c
push 0x7e58a0
call fcn.0045d62c
add esp, 8
call fcn.004089cc
test eax, eax
jne 0x41220f
jmp 0x4115ff
push 0x7e9330
push 0x7e58a0
call fcn.0045d62c
push 0x7e9330
push 0x7e9364
call fcn.0040ced4
mov eax, 0xffffffff
add esp, 0x284
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push 0x7e930c
push 0x7e58a0
call fcn.0045d62c
push 0x7e930c
push 0
call fcn.0040ced4
mov eax, 0xffffffff
add esp, 0x284
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov ecx, 1
jmp 0x4116b3
mov ecx, dword [0x7dfd24]
mov eax, dword [ecx]
lea edx, [esp + 0x254]
push edx
push 0
push ecx
call dword [eax + 0x48]
test eax, eax
jne 0x411e8d
mov ecx, dword [0x7dfd2c]
mov eax, dword [0x7df88c]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x244], edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x250], edx
mov eax, dword [ecx]
xor edx, edx
push edx
push edx
lea edx, [esp + 0x250]
push edx
push ecx
mov edx, dword [esp + 0x254]
mov dword [esp + 0x254], edx
mov dword [esp + 0x250], ecx
call dword [eax + 0x34]
mov ecx, dword [esp + 0x240]
mov edx, dword [esp + 0x244]
test eax, eax
jl 0x4121c5
mov eax, dword [esp + 0x250]
test eax, eax
jle 0x411843
xor eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x240], ecx
mov dword [esp + 0x238], ebx
mov dword [esp + 0x23c], esi
mov esi, eax
mov ebx, edx
mov ecx, esi
imul ecx, dword [esp + 0x248]
add ecx, dword [esp + 0x24c]
push ebx
push edi
push ecx
call dword [0x5b248c]
add esp, 0xc
add edi, ebx
inc esi
mov ecx, dword [esp + 0x250]
cmp esi, ecx
jl 0x411803
mov ecx, dword [esp + 0x240]
mov ebx, dword [esp + 0x238]
mov esi, dword [esp + 0x23c]
mov eax, dword [ecx]
push ecx
call dword [eax + 0x38]
test eax, eax
jl 0x41218d
mov edx, dword [0x7dfce0]
mov ecx, dword [edx]
xor eax, eax
push eax
push dword [esp + 0x258]
push eax
push dword [0x7dfd2c]
push edx
call dword [ecx + 0x78]
test eax, eax
je 0x4118be
mov eax, dword [esp + 0x254]
test eax, eax
je 0x411883
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov dword [esp + 0x254], 0
push 0x7e93cc
push 0x7e58a0
call fcn.0045d62c
push 0x7e93cc
push 0x7e9364
call fcn.0040ced4
mov eax, 0xffffffff
add esp, 0x284
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x254]
test eax, eax
je 0x4118cf
mov edx, dword [eax]
push eax
call dword [edx + 8]
movsx eax, byte [0x7df6a8]
test eax, eax
jne 0x411e7e
mov dword [esp + 0x254], 0
mov eax, dword [0x7dfce0]
mov edx, dword [eax]
push eax
call dword [edx + 0xa4]
test eax, eax
jl 0x412176
mov edx, dword [0x7dfce0]
mov ecx, dword [edx]
xor eax, eax
push eax
push 0x3f800000
push 0xff000000
push 1
push eax
push eax
push edx
call dword [ecx + 0xac]
test eax, eax
jl 0x41215f
cmp byte [0x7df500], 1
je 0x411f06
cmp byte [0x7df504], 1
je 0x411f06
fld qword [0x570340]
fld qword [0x570340]
fstp qword [esp + 0x220]
fld qword [0x570340]
fstp qword [esp + 0x218]
mov dword [esp + 0x210], esi
fild dword [esp + 0x210]
fstp qword [esp + 0x228]
mov dword [esp + 0x210], ebx
fild dword [esp + 0x210]
mov ecx, dword [0x7df88c]
mov edx, dword [ecx + 0xc]
test edx, edx
je 0x4119be
mov eax, dword [0x7df5f4]
imul eax, esi
mov dword [esp + 0x210], eax
fild dword [esp + 0x210]
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fdivp st(1)
fstp qword [esp + 0x228]
mov edx, dword [ecx + 0x10]
test edx, edx
je 0x4119ed
fstp st(0)
mov eax, dword [0x7df5f8]
imul eax, ebx
mov dword [esp + 0x210], eax
fild dword [esp + 0x210]
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fdivp st(1)
fadd qword [esp + 0x218]
fst qword [esp + 0xc]
fxch st(1)
fstp qword [esp + 0x14]
mov dword [esp + 0x20], DirectSoundCreate
mov dword [esp + 0x24], 0xbee4f8b5
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0x3fefffeb
lea eax, [esp + 0x38]
fld qword [esp + 0x220]
mov edx, 0xffffffff
fxch st(1)
fstp qword [esp + 0x230]
call fcn.0040f25c
fld qword [esp + 0x230]
xor ecx, ecx
mov edi, 0x3fefffeb
fld qword [esp + 0x228]
fadd qword [esp + 0x220]
fst qword [esp + 0x228]
fxch st(1)
fstp qword [esp + 0xc]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edi
lea eax, [esp + 0x8c]
mov edx, 0xffffffff
call fcn.0040f25c
mov edi, DirectSoundCreate
mov eax, 0xbee4f8b5
fld qword [esp + 0x218]
fstp qword [esp + 0xc]
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], eax
lea eax, [esp + 0xe0]
fld qword [esp + 0x220]
mov edx, 0xffffffff
call fcn.0040f25c
fld qword [esp + 0x218]
fstp qword [esp + 0xc]
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], 0x3fefffeb
mov dword [esp + 0x28], DirectSoundCreate
mov dword [esp + 0x2c], 0xbee4f8b5
lea eax, [esp + 0x134]
fld qword [esp + 0x228]
mov edx, 0xffffffff
call fcn.0040f25c
fld qword [0x570348]
fild dword [0x7df5e4]
fmul st(1)
fst qword [esp + 0x218]
fild dword [0x7df5e8]
fmulp st(2)
fxch st(1)
fst qword [esp + 0x220]
xor ecx, ecx
mov dword [esp + 0x1c8], ecx
mov dword [esp + 0x1c4], ecx
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x1bc], ecx
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1b0], ecx
mov dword [esp + 0x1ac], ecx
mov dword [esp + 0x1a8], ecx
mov dword [esp + 0x1a0], ecx
mov dword [esp + 0x19c], ecx
mov dword [esp + 0x198], ecx
mov dword [esp + 0x194], ecx
mov edx, 0x3f800000
mov dword [esp + 0x1cc], edx
mov dword [esp + 0x1b8], edx
mov dword [esp + 0x1a4], edx
mov dword [esp + 0x190], edx
mov dword [esp + 0x208], ecx
mov dword [esp + 0x204], ecx
mov dword [esp + 0x200], ecx
mov dword [esp + 0x1fc], ecx
mov dword [esp + 0x1f4], ecx
mov dword [esp + 0x1f0], ecx
mov dword [esp + 0x1ec], ecx
mov dword [esp + 0x1e8], ecx
mov dword [esp + 0x1e0], ecx
mov dword [esp + 0x1dc], ecx
mov dword [esp + 0x1d8], ecx
mov dword [esp + 0x1d4], ecx
mov dword [esp + 0x20c], edx
mov dword [esp + 0x1f8], edx
mov dword [esp + 0x1e4], edx
mov dword [esp + 0x1d0], edx
fxch st(1)
fchs
fxch st(1)
fchs
fstp dword [esp + 8]
mov dword [esp + 0xc], ecx
lea eax, [esp + 0x38]
call fcn.00412228
xor eax, eax
lea edx, [esp + 0x1d0]
push eax
push eax
push eax
push edx
call fcn.004c0509
xor edi, edi
lea eax, [esp + 0x190]
push dword [esp + edi + 0x40]
push dword [esp + edi + 0x40]
push dword [esp + edi + 0x40]
push eax
call fcn.004c0077
lea edx, [esp + 0x190]
lea eax, [esp + 0x1d0]
push eax
push edx
push edx
call fcn.004bf6e6
mov eax, dword [esp + 0x1c0]
mov dword [esp + edi + 0x38], eax
mov edx, dword [esp + 0x1c4]
mov dword [esp + edi + 0x3c], edx
mov ecx, dword [esp + 0x1c8]
mov dword [esp + edi + 0x40], ecx
add edi, 0x54
cmp edi, 0x150
jl 0x411c58
fld qword [esp + 0x220]
fstp dword [esp + 8]
mov dword [esp + 0xc], 0
lea eax, [esp + 0x38]
fld qword [esp + 0x218]
call fcn.00412228
mov eax, dword [0x7dfce0]
mov edx, dword [eax]
push dword [0x7dfd24]
push 0
push eax
call dword [edx + 0x104]
test eax, eax
je 0x411d14
push 0x7e94a8
push 0x7e58a0
call fcn.0045d62c
add esp, 8
mov eax, 0xffffffff
add esp, 0x274
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [0x7dfce0]
mov edx, dword [eax]
push 2
push 1
push 0
push eax
call dword [edx + 0x10c]
test eax, eax
je 0x411d3e
push 0x7e94bc
push 0x7e58a0
call fcn.0045d62c
add esp, 8
mov edx, dword [0x7dfce0]
mov ecx, dword [edx]
xor eax, eax
push eax
push 2
push eax
push edx
call dword [ecx + 0x10c]
test eax, eax
je 0x411d69
push 0x7e94d4
push 0x7e58a0
call fcn.0045d62c
add esp, 8
mov eax, dword [0x7dfce0]
mov edx, dword [eax]
push 0
push eax
call dword [edx + 0x1ac]
mov eax, dword [0x7dfdf8]
test eax, eax
je 0x411e25
mov edx, dword [eax]
push dword [0x7dfdfc]
push eax
call dword [edx + 0xf0]
mov edx, dword [0x7dfdf8]
mov ecx, dword [edx]
xor eax, eax
push eax
push eax
push edx
call dword [ecx + 0x104]
mov eax, dword [0x7dfdf8]
mov edx, dword [eax]
push 0
push eax
call dword [edx + 0x108]
mov eax, dword [0x7dfdf8]
mov edx, dword [eax]
push dword [0x7dfd24]
push 0x7e94ec
push eax
call dword [edx + 0xd0]
mov dword [esp + 0x210], esi
fild dword [esp + 0x210]
mov dword [esp + 0x210], ebx
fild dword [esp + 0x210]
fxch st(1)
fstp dword [esp + 0x188]
fstp dword [esp + 0x18c]
mov edx, dword [0x7dfdf8]
mov ecx, dword [edx]
lea eax, [esp + 0x188]
push 8
push eax
push 0x7e94f8
push edx
call dword [ecx + 0x50]
cmp byte [0x7df394], 3
je 0x411eb2
mov edx, dword [0x7dfce0]
mov ecx, dword [edx]
lea eax, [esp + 0x38]
push 0x54
push eax
push 2
push 5
push edx
call dword [ecx + 0x14c]
test eax, eax
jne 0x411d02
mov eax, dword [0x7dfdf8]
test eax, eax
je 0x411e67
mov edx, dword [eax]
push eax
call dword [edx + 0x110]
mov eax, dword [0x7dfdf8]
mov edx, dword [eax]
push eax
call dword [edx + 0x114]
mov eax, dword [0x7dfce0]
mov edx, dword [eax]
push eax
call dword [edx + 0xa8]
test eax, eax
jl 0x411eef
call fcn.00412330
xor eax, eax
add esp, 0x274
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push 0
push 1
push 0x7e9420
push 0x7e58a0
call fcn.0045d62c
mov eax, 0xffffffff
add esp, 0x284
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x210], esi
fild dword [esp + 0x210]
fdivr qword [0x570360]
fstp dword [esp + 0x30]
mov dword [esp + 0x34], 0
mov edx, dword [0x7dfdf8]
mov ecx, dword [edx]
lea eax, [esp + 0x30]
push 8
push eax
push 0x7e9504
push edx
call dword [ecx + 0x50]
jmp 0x411e25
push 0x7e9510
push 0x7e58a0
call fcn.0045d62c
add esp, 8
jmp 0x411e79
movsx eax, byte [0x7df60c]
cmp eax, 1
je 0x4120ca
cmp eax, 2
je 0x412035
cmp eax, 3
je 0x411fcc
fld qword [0x570340]
fldz
fldz
fstp qword [esp + 0x228]
fldz
fstp qword [esp + 0x218]
fldz
fstp qword [esp + 0x220]
test eax, eax
jne 0x4119ed
fstp st(0)
mov edx, dword [0x7df88c]
fld qword [0x570348]
mov eax, dword [0x7df5e4]
sub eax, dword [edx + 0xc]
mov dword [esp + 0x210], eax
fild dword [esp + 0x210]
fmul st(1)
fadd st(2)
fstp qword [esp + 0x220]
mov ecx, dword [0x7df5e8]
sub ecx, dword [edx + 0x10]
mov dword [esp + 0x210], ecx
fild dword [esp + 0x210]
fmulp st(1)
fadd st(1)
fstp qword [esp + 0x218]
mov dword [esp + 0x210], esi
fild dword [esp + 0x210]
fstp qword [esp + 0x228]
mov dword [esp + 0x210], ebx
fild dword [esp + 0x210]
jmp 0x4119ed
fld qword [0x570340]
fld qword [0x570340]
fstp qword [esp + 0x220]
fld qword [0x570340]
fstp qword [esp + 0x218]
mov ecx, dword [0x7df88c]
mov eax, dword [0x7df5e4]
imul eax, esi
mov dword [esp + 0x210], eax
fild dword [esp + 0x210]
fild dword [ecx + 0xc]
fdivp st(1)
fstp qword [esp + 0x228]
mov edx, dword [0x7df5e8]
imul edx, ebx
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fild dword [ecx + 0x10]
fdivp st(1)
jmp 0x4119ed
mov dword [esp + 0x238], ebx
mov edi, dword [0x7df88c]
mov ebx, dword [edi + 0x10]
fld qword [0x570340]
mov ecx, dword [0x7df5e8]
mov eax, dword [edi + 0xc]
imul eax, ecx
cdq
idiv ebx
mov edx, dword [0x7df5e4]
sub edx, eax
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fmul qword [0x570348]
fadd st(1)
fstp qword [esp + 0x220]
fld qword [0x570340]
fstp qword [esp + 0x218]
fild dword [edi + 0x10]
mov eax, esi
imul eax, ecx
mov dword [esp + 0x210], eax
fild dword [esp + 0x210]
fdiv st(1)
fstp qword [esp + 0x228]
mov ebx, dword [esp + 0x238]
imul ecx, ebx
mov dword [esp + 0x210], ecx
fild dword [esp + 0x210]
fdivrp st(1)
jmp 0x4119ed
mov dword [esp + 0x238], ebx
fld qword [0x570340]
fld qword [0x570340]
fstp qword [esp + 0x220]
mov edi, dword [0x7df88c]
mov ebx, dword [edi + 0xc]
mov ecx, dword [0x7df5e4]
mov eax, dword [edi + 0x10]
imul eax, ecx
cdq
idiv ebx
mov edx, dword [0x7df5e8]
sub edx, eax
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fmul qword [0x570348]
fadd st(1)
fstp qword [esp + 0x218]
fild dword [edi + 0xc]
mov eax, esi
imul eax, ecx
mov dword [esp + 0x210], eax
fild dword [esp + 0x210]
fdiv st(1)
fstp qword [esp + 0x228]
mov ebx, dword [esp + 0x238]
imul ecx, ebx
mov dword [esp + 0x210], ecx
fild dword [esp + 0x210]
fdivrp st(1)
jmp 0x4119ed
push 0x7e9494
push 0x7e58a0
call fcn.0045d62c
add esp, 8
jmp 0x411927
push 0x7e9480
push 0x7e58a0
call fcn.0045d62c
add esp, 8
jmp 0x4118ff
push 0x7e98c0
push 0x7e58a0
call fcn.0045d62c
add esp, 8
push 0x7e93f0
push 0x7e58a0
call fcn.0045d62c
push 0x7e93f0
push 0x7e9364
call fcn.0040ced4
add esp, 0x10
jmp 0x4118be
push 0x7e98ac
push 0x7e58a0
call fcn.0045d62c
add esp, 8
jmp 0x41219f
movsx edx, byte [0x7df624]
test edx, edx
je 0x4116c3
mov byte [0x7df624], 0
mov ecx, 1
jmp 0x4116c3
mov byte [0x595088], 1
xor eax, eax
add esp, 0x274
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor eax, eax
add esp, 0x274
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret