Function at 0x411868
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 [0x7decf4]
test edx, edx
je 0x41212e
test edi, edi
je 0x41212e
mov esi, dword [0x7de368]
mov ebx, dword [0x7de36c]
mov dword [esp + 0x254], 0
movsx eax, byte [0x594088]
jmp 0x4118c1
mov eax, 1
mov byte [0x594088], 1
mov edx, dword [0x7decf4]
test eax, eax
je 0x411948
xor eax, eax
mov byte [0x594088], al
mov ecx, dword [edx]
push eax
push 0x7ded38
push eax
push dword [0x7decec]
push eax
push 1
push ebx
push esi
push edx
call dword [ecx + 0x5c]
test eax, eax
jl 0x4119d8
mov edx, dword [0x7decf4]
mov ecx, dword [edx]
push 0
push 0x7ded40
push 2
push dword [0x5947c0]
push ebx
push esi
push edx
call dword [ecx + 0x90]
mov dword [0x7ded48], esi
mov dword [0x7ded4c], ebx
test eax, eax
jl 0x4119a8
mov edx, dword [0x7de8a0]
push dword [edx + 0x10]
push dword [edx + 0xc]
push 0x7e836c
push 0x7e48a0
call fcn.0043a4a0
add esp, 0x10
mov edx, dword [0x7decf4]
mov ecx, dword [edx]
push edx
call dword [ecx + 0xc]
test eax, eax
je 0x411961
cmp eax, 0x88760869
je 0x411a05
xor ecx, ecx
jmp 0x411963
xor ecx, ecx
movsx eax, byte [0x7de360]
cmp eax, 1
je 0x412489
test ecx, ecx
je 0x411a0f
cmp eax, 1
jne 0x4124a9
push 0x7e839c
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
call fcn.004089cc
test eax, eax
jne 0x4124bf
jmp 0x4118af
push 0x7e8330
push 0x7e48a0
call fcn.0043a4a0
push 0x7e8330
push 0x7e8364
call fcn.0040ced4
mov eax, 0xffffffff
add esp, 0x284
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push 0x7e830c
push 0x7e48a0
call fcn.0043a4a0
push 0x7e830c
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 0x411963
mov ecx, dword [0x7ded38]
mov eax, dword [ecx]
lea edx, [esp + 0x254]
push edx
push 0
push ecx
call dword [eax + 0x48]
test eax, eax
jne 0x41213d
mov ecx, dword [0x7ded40]
mov eax, dword [0x7de8a0]
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 0x412475
mov eax, dword [esp + 0x250]
test eax, eax
jle 0x411af3
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 [0x5b148c]
add esp, 0xc
add edi, ebx
inc esi
mov ecx, dword [esp + 0x250]
cmp esi, ecx
jl 0x411ab3
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 0x41243d
mov edx, dword [0x7decf4]
mov ecx, dword [edx]
xor eax, eax
push eax
push dword [esp + 0x258]
push eax
push dword [0x7ded40]
push edx
call dword [ecx + 0x78]
test eax, eax
je 0x411b6e
mov eax, dword [esp + 0x254]
test eax, eax
je 0x411b33
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov dword [esp + 0x254], 0
push 0x7e83cc
push 0x7e48a0
call fcn.0043a4a0
push 0x7e83cc
push 0x7e8364
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 0x411b7f
mov edx, dword [eax]
push eax
call dword [edx + 8]
movsx eax, byte [0x7de6b8]
test eax, eax
jne 0x41212e
mov dword [esp + 0x254], 0
mov eax, dword [0x7decf4]
mov edx, dword [eax]
push eax
call dword [edx + 0xa4]
test eax, eax
jl 0x412426
mov edx, dword [0x7decf4]
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 0x41240f
cmp byte [0x7de504], 1
je 0x4121b6
cmp byte [0x7de508], 1
je 0x4121b6
fld qword [0x56f340]
fld qword [0x56f340]
fstp qword [esp + 0x220]
fld qword [0x56f340]
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 [0x7de8a0]
mov edx, dword [ecx + 0xc]
test edx, edx
je 0x411c6e
mov eax, dword [0x7de604]
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 0x411c9d
fstp st(0)
mov eax, dword [0x7de608]
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.0040f50c
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.0040f50c
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.0040f50c
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.0040f50c
fld qword [0x56f348]
fild dword [0x7de5f4]
fmul st(1)
fst qword [esp + 0x218]
fild dword [0x7de5f8]
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.004124d8
xor eax, eax
lea edx, [esp + 0x1d0]
push eax
push eax
push eax
push edx
call fcn.004bfa69
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.004bf5d7
lea edx, [esp + 0x190]
lea eax, [esp + 0x1d0]
push eax
push edx
push edx
call fcn.004bec46
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 0x411f08
fld qword [esp + 0x220]
fstp dword [esp + 8]
mov dword [esp + 0xc], 0
lea eax, [esp + 0x38]
fld qword [esp + 0x218]
call fcn.004124d8
mov eax, dword [0x7decf4]
mov edx, dword [eax]
push dword [0x7ded38]
push 0
push eax
call dword [edx + 0x104]
test eax, eax
je 0x411fc4
push 0x7e84a8
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
mov eax, 0xffffffff
add esp, 0x274
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [0x7decf4]
mov edx, dword [eax]
push 2
push 1
push 0
push eax
call dword [edx + 0x10c]
test eax, eax
je 0x411fee
push 0x7e84bc
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
mov edx, dword [0x7decf4]
mov ecx, dword [edx]
xor eax, eax
push eax
push 2
push eax
push edx
call dword [ecx + 0x10c]
test eax, eax
je 0x412019
push 0x7e84d4
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
mov eax, dword [0x7decf4]
mov edx, dword [eax]
push 0
push eax
call dword [edx + 0x1ac]
mov eax, dword [0x7dee0c]
test eax, eax
je 0x4120d5
mov edx, dword [eax]
push dword [0x7dee10]
push eax
call dword [edx + 0xf0]
mov edx, dword [0x7dee0c]
mov ecx, dword [edx]
xor eax, eax
push eax
push eax
push edx
call dword [ecx + 0x104]
mov eax, dword [0x7dee0c]
mov edx, dword [eax]
push 0
push eax
call dword [edx + 0x108]
mov eax, dword [0x7dee0c]
mov edx, dword [eax]
push dword [0x7ded38]
push 0x7e84ec
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 [0x7dee0c]
mov ecx, dword [edx]
lea eax, [esp + 0x188]
push 8
push eax
push 0x7e84f8
push edx
call dword [ecx + 0x50]
cmp byte [0x7de394], 3
je 0x412162
mov edx, dword [0x7decf4]
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 0x411fb2
mov eax, dword [0x7dee0c]
test eax, eax
je 0x412117
mov edx, dword [eax]
push eax
call dword [edx + 0x110]
mov eax, dword [0x7dee0c]
mov edx, dword [eax]
push eax
call dword [edx + 0x114]
mov eax, dword [0x7decf4]
mov edx, dword [eax]
push eax
call dword [edx + 0xa8]
test eax, eax
jl 0x41219f
call fcn.004125e0
xor eax, eax
add esp, 0x274
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push 0
push 1
push 0x7e8420
push 0x7e48a0
call fcn.0043a4a0
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 [0x56f360]
fstp dword [esp + 0x30]
mov dword [esp + 0x34], 0
mov edx, dword [0x7dee0c]
mov ecx, dword [edx]
lea eax, [esp + 0x30]
push 8
push eax
push 0x7e8504
push edx
call dword [ecx + 0x50]
jmp 0x4120d5
push 0x7e8510
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
jmp 0x412129
movsx eax, byte [0x7de61c]
cmp eax, 1
je 0x41237a
cmp eax, 2
je 0x4122e5
cmp eax, 3
je 0x41227c
fld qword [0x56f340]
fldz
fldz
fstp qword [esp + 0x228]
fldz
fstp qword [esp + 0x218]
fldz
fstp qword [esp + 0x220]
test eax, eax
jne 0x411c9d
fstp st(0)
mov edx, dword [0x7de8a0]
fld qword [0x56f348]
mov eax, dword [0x7de5f4]
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 [0x7de5f8]
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 0x411c9d
fld qword [0x56f340]
fld qword [0x56f340]
fstp qword [esp + 0x220]
fld qword [0x56f340]
fstp qword [esp + 0x218]
mov ecx, dword [0x7de8a0]
mov eax, dword [0x7de5f4]
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 [0x7de5f8]
imul edx, ebx
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fild dword [ecx + 0x10]
fdivp st(1)
jmp 0x411c9d
mov dword [esp + 0x238], ebx
mov edi, dword [0x7de8a0]
mov ebx, dword [edi + 0x10]
fld qword [0x56f340]
mov ecx, dword [0x7de5f8]
mov eax, dword [edi + 0xc]
imul eax, ecx
cdq
idiv ebx
mov edx, dword [0x7de5f4]
sub edx, eax
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fmul qword [0x56f348]
fadd st(1)
fstp qword [esp + 0x220]
fld qword [0x56f340]
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 0x411c9d
mov dword [esp + 0x238], ebx
fld qword [0x56f340]
fld qword [0x56f340]
fstp qword [esp + 0x220]
mov edi, dword [0x7de8a0]
mov ebx, dword [edi + 0xc]
mov ecx, dword [0x7de5f4]
mov eax, dword [edi + 0x10]
imul eax, ecx
cdq
idiv ebx
mov edx, dword [0x7de5f8]
sub edx, eax
mov dword [esp + 0x210], edx
fild dword [esp + 0x210]
fmul qword [0x56f348]
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 0x411c9d
push 0x7e8494
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
jmp 0x411bd7
push 0x7e8480
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
jmp 0x411baf
push 0x7e88c0
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
push 0x7e83f0
push 0x7e48a0
call fcn.0043a4a0
push 0x7e83f0
push 0x7e8364
call fcn.0040ced4
add esp, 0x10
jmp 0x411b6e
push 0x7e88ac
push 0x7e48a0
call fcn.0043a4a0
add esp, 8
jmp 0x41244f
movsx edx, byte [0x7de634]
test edx, edx
je 0x411973
mov byte [0x7de634], 0
mov ecx, 1
jmp 0x411973
mov byte [0x594088], 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