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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x124
push 0x50
push 0x498520
push 0x46c000
call fcn.0043f970
movss xmm0, dword [0x46c084]
ucomiss xmm0, dword [0x460ef4]
jne 0x40605d
jp 0x40605d
mov eax, 0x3f800000
mov dword [0x46c084], eax
cvttss2si eax, dword [0x46c004]
lea esi, [esp + 0x10]
mov dword [esp + 0x10], eax
push 4
push 0x460eb8
push 0xc8
push 0x4a0220
push esi
call fcn.0043e910
push 4
push str..mul
push 0xc8
push 0x4a0300
push esi
call fcn.0043e910
lea ebx, [esp + 0x14]
push ebx
call fcn.00442410
lea edi, [esp + 0xa0]
push edi
push 0xc8
push 0x4a0300
push ebx
push 0x4606e8
call fcn.0044fff0
push 0x46c008
push 0x4606ec
push 0xc8
push 0x4a0220
push 0x4606f0
call fcn.00440ad0
xor eax, eax
push eax
push eax
push 0x11
push str._TMP_outilper.tmp
push eax
push 0xc8
push 0x4a0220
call sub.libifcoremd.dll_for_cpystr
add esp, 0x1c
push edi
push 0x4606f4
push 0xc8
push 0x4a0220
push 0x4606f8
call fcn.0043d0e0
mov dword [esp + 0x70], 0
lea eax, [esp + 0x70]
push 0x20
push 0xa384ff00
push 0xa
push eax
call sub.libifcoremd.dll_for_rewind
add esp, 0x10
cvttss2si eax, dword [0x46c084]
cmp eax, 2
je 0x40614c
mov dword [esp + 0xd0], eax
jmp 0x406157
mov dword [esp + 0xd0], 0xffffffff
mov eax, dword [0x46c0a4]
movss xmm0, dword [0x460ef8]
movss dword [esp + 0x4c], xmm0
xor ebx, ebx
mov dword [esp + 0xa4], eax
lea edi, [esp + 0x5c]
lea esi, [esp + 0x70]
mov dword [esp + 0x70], 0
mov dword [esp + 0x38], edi
push 0x20
lea eax, [esp + 0x3c]
push eax
push 0x4606fc
push 0xa384ff02
push 0xa
push esi
call sub.libifcoremd.dll_for_read_seq_lis
add esp, 0x18
test eax, eax
jne 0x4061e4
lea eax, [esp + 0x64]
mov dword [esp + 0x28], eax
lea edx, [esp + 0x28]
push edx
push 0x460704
push esi
call sub.libifcoremd.dll_for_read_seq_lis_xmit
add esp, 0xc
test eax, eax
jne 0x4061e4
lea eax, [esp + 0xe4]
mov dword [esp + 0x20], eax
lea edx, [esp + 0x20]
push edx
push 0x46070c
push esi
call sub.libifcoremd.dll_for_read_seq_lis_xmit
add esp, 0xc
cmp eax, 0xffffffff
je 0x406250
lea ecx, [esp + 0x24]
lea edx, [esp + 0x2c]
lea eax, [esp + 0x30]
push 0x4606f4
push eax
push edx
push ecx
lea eax, [esp + 0xf4]
push eax
lea edx, [esp + 0x78]
push edx
push edi
call fcn.00442bb0
mov ecx, dword [esp + 0x30]
movss xmm0, dword [esp + 0x4c]
maxss xmm0, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
movss dword [esp + 0x4c], xmm0
inc ebx
cmp ebx, 0x3e8
mov dword [ebx*4 + 0x67257c], eax
mov dword [ebx*4 + 0x67351c], edx
mov dword [ebx*4 + 0x6744bc], ecx
jne 0x40617b
lea edi, [esp + 0xa0]
lea esi, [esp + 0x10]
xor eax, eax
mov dword [esp + 0x70], eax
push 0x20
push eax
push 0x460714
push 0xa384ff00
push 0xa
lea edx, [esp + 0x84]
push edx
call sub.libifcoremd.dll_for_close
add esp, 0x18
movss xmm2, dword [0x46c00c]
movss xmm0, dword [0x460efc]
comiss xmm0, xmm2
jbe 0x40629d
movss xmm2, dword [0x46c008]
movss xmm1, dword [0x46c0a0]
movss xmm0, dword [0x46c018]
movss xmm3, dword [0x46c020]
movss xmm4, dword [0x46c04c]
movss xmm7, dword [0x46c044]
movss xmm5, dword [0x460f00]
movss xmm6, dword [0x46c094]
maxss xmm6, dword [0x460f04]
movss dword [esp + 0xd8], xmm0
movss xmm0, dword [0x46c048]
movss dword [esp + 0xa8], xmm3
movss xmm3, dword [esp + 0x4c]
movss dword [esp + 0x94], xmm4
movss dword [esp + 0x34], xmm6
mulss xmm5, xmm4
mov dword [esp + 0x108], 0xfffffc15
maxss xmm1, xmm2
maxss xmm7, xmm5
mov dword [esp + 0xdc], 0xfffffc16
lea eax, [esp + 0x18]
maxss xmm7, xmm2
addss xmm3, xmm7
movss dword [esp + 0x4c], xmm3
movss dword [esp + 0x18], xmm3
mov dword [esp + 0x90], 0xfffffc17
push edi
push eax
push esi
movss dword [esp + 0x28], xmm2
movss dword [esp + 0x100], xmm1
movss dword [esp + 0x48], xmm0
call fcn.00440f90
movss xmm0, dword [esp + 0x3c]
movss xmm1, dword [esp + 0xf4]
movss xmm2, dword [esp + 0x1c]
movss xmm3, dword [0x460efc]
comiss xmm3, xmm0
movss xmm4, dword [0x460f1c]
jbe 0x40639b
movaps xmm0, xmm4
test ebx, ebx
jle 0x406d0f
movss xmm3, dword [esp + 0x34]
movss dword [esp + 0x3c], xmm0
movaps xmm6, xmm0
minss xmm6, dword [esp + 0x94]
movss dword [esp + 0x44], xmm6
subss xmm1, xmm2
movss dword [esp + 0xf4], xmm1
movaps xmm2, xmm1
subss xmm2, dword [esp + 0xd8]
movss dword [esp + 0xb0], xmm2
mov edx, 1
mov dword [esp + 0x48], edx
mov dword [esp + 0x1c], ebx
movss xmm2, dword [0x46c008]
mov eax, dword [esp + 0x48]
movss xmm1, dword [eax*4 + 0x6744bc]
movaps xmm0, xmm1
xor eax, eax
mov edx, 1
movss xmm6, dword [esp + 0x3c]
subss xmm0, xmm3
addss xmm0, xmm2
cvtsi2ss xmm4, edx
movaps xmm5, xmm1
mulss xmm4, xmm6
inc eax
subss xmm5, xmm4
addss xmm5, xmm2
comiss xmm0, xmm5
jae 0x406d8a
movss dword [eax*4 + 0x67739c], xmm5
inc edx
cmp edx, 0x3e8
jle 0x40641d
test eax, eax
jle 0x406cfc
mov edx, dword [esp + 0x48]
movss xmm1, dword [esp + 0x44]
lea esi, [edx*4 + 0x67351c]
mov edi, 1
lea ebx, [esi - 0xfa0]
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc4], esi
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x48]
lea esi, [esp + 0x5c]
jmp 0x406499
movss xmm1, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
movss xmm0, dword [eax*4 + 0x6744bc]
movss dword [esp + 0x44], xmm1
addss xmm0, xmm1
addss xmm0, dword [0x46c008]
movss dword [esp + 0xac], xmm0
mov dword [esp + 0x48], eax
lea ebx, [edi*4]
jmp 0x4064de
lea ebx, [edi*4]
mov eax, dword [ebx + 0x677398]
mov dword [esp + 0xac], eax
movss xmm0, dword [esp + 0xa8]
movss xmm1, dword [0x460f08]
movss xmm2, dword [0x460f1c]
maxss xmm1, xmm0
movss dword [esp + 0xa8], xmm1
divss xmm1, dword [esp + 0xf4]
subss xmm2, xmm1
movss dword [esp], xmm2
mov dword [esp + 0xd4], 0
call sub.libmmd.dll_acosf
fstp dword [esp + 0xe8]
movss xmm4, dword [esp + 0xe8]
movss xmm2, dword [0x460f10]
movaps xmm0, xmm2
movss xmm1, dword [0x460f14]
mov edx, dword [esp + 0xd4]
addss xmm4, xmm4
maxss xmm4, dword [0x460f0c]
divss xmm0, xmm4
cvttss2si eax, xmm0
cmp eax, 0x3e8
jle 0x40656e
movaps xmm4, xmm1
movaps xmm3, xmm4
addss xmm3, xmm2
divss xmm3, xmm4
cvttss2si eax, xmm3
test eax, eax
jle 0x40667c
mov ecx, dword [esp + 0xbc]
movss xmm2, dword [ecx]
mov ecx, dword [esp + 0xc4]
movss xmm1, dword [ecx]
movss dword [esp + 0xf8], xmm1
movss dword [esp + 0x100], xmm2
movss dword [esp + 0xfc], xmm4
mov esi, edx
mov dword [esp + 0x9c], edi
mov edi, eax
pxor xmm0, xmm0
movss dword [esp + 0x104], xmm0
movss xmm0, dword [esp + 0x104]
movss dword [esp], xmm0
inc esi
call sub.libmmd.dll_cosf
movss xmm1, dword [esp + 0x104]
fstp dword [esp + 0xe8]
movss xmm0, dword [esp + 0xe8]
mulss xmm0, dword [esp + 0xf4]
addss xmm0, dword [esp + 0x100]
movss dword [esp], xmm1
movss dword [esi*4 + 0x67545c], xmm0
call sub.libmmd.dll_sinf
movss xmm1, dword [esp + 0x104]
addss xmm1, dword [esp + 0xfc]
fstp dword [esp + 0xe8]
movss xmm0, dword [esp + 0xe8]
mulss xmm0, dword [esp + 0xf4]
addss xmm0, dword [esp + 0xf8]
movss dword [esp + 0x104], xmm1
movss dword [esi*4 + 0x6763fc], xmm0
dec edi
test edi, edi
jg 0x4065ce
mov edi, dword [esp + 0x9c]
mov edx, esi
lea esi, [esp + 0x5c]
mov eax, dword [0x675460]
mov ecx, dword [0x676400]
lea ebx, [ebx + 0x67739c]
inc edx
mov dword [esp + 0xd4], edx
push ebx
mov dword [edx*4 + 0x67545c], eax
mov dword [edx*4 + 0x6763fc], ecx
lea edx, [esp + 0xb0]
push edx
push 0x676400
push 0x675460
lea eax, [esp + 0xe4]
push eax
push 0x4606f4
push 0x676400
push 0x675460
push eax
lea edx, [esp + 0xc8]
push edx
lea ecx, [esp + 0xf8]
push ecx
call fcn.0042de30
xor eax, eax
push eax
push eax
push 0xe
push 0x460edc
push eax
push 0xc8
push 0x4a0220
call sub.libifcoremd.dll_for_cpystr
add esp, 0x1c
lea eax, [esp + 0xa0]
push eax
push 0x4606f4
push 0xc8
push 0x4a0220
push 0x46071c
call fcn.0043d690
mov dword [esp + 0x70], 0
mov dword [esp + 0xb8], esi
push 0x20
lea eax, [esp + 0xbc]
push eax
push 0x460720
push 0xa384ff02
push 0xc
lea edx, [esp + 0x84]
push edx
call sub.libifcoremd.dll_for_read_seq
add esp, 0x18
test eax, eax
jne 0x4067a0
lea eax, [esp + 0x64]
mov dword [esp + 0x60], eax
lea edx, [esp + 0x60]
push edx
push 0x460728
lea ecx, [esp + 0x78]
push ecx
call sub.libifcoremd.dll_for_read_seq_xmit
add esp, 0xc
test eax, eax
jne 0x4067a0
lea eax, [esp + 0xe4]
mov dword [esp + 0x50], eax
lea edx, [esp + 0x50]
push edx
push 0x460730
lea ecx, [esp + 0x78]
push ecx
call sub.libifcoremd.dll_for_read_seq_xmit
add esp, 0xc
cmp eax, 0xffffffff
je 0x406924
movss xmm1, dword [esp + 0xe4]
movss xmm0, dword [0x460ef8]
comiss xmm0, xmm1
jbe 0x4067d6
movss xmm1, dword [edi*4 + 0x67739c]
mov eax, dword [edi*4 + 0x67739c]
mov dword [esp + 0xe4], eax
cmp edi, 1
je 0x406d4b
addss xmm1, dword [esp + 0x94]
movss dword [esp + 0x98], xmm1
lea edx, [esp + 0x98]
lea eax, [esp + 0x90]
push eax
push edx
lea ecx, [esp + 0x6c]
push ecx
push esi
push 0x4606f0
call fcn.004405a0
lea edx, [esp + 0xe4]
lea eax, [esp + 0xdc]
push eax
push edx
lea ecx, [esp + 0x6c]
push ecx
push esi
push 0x4606f0
call fcn.004405a0
mov dword [esp + 0xc8], ebx
mov dword [esp + 0x9c], edi
lea ebx, [esp + 0x64]
lea edi, [esp + 0x70]
mov dword [esp + 0x70], 0
mov dword [esp + 0xf0], esi
push 0x20
lea eax, [esp + 0xf4]
push eax
push 0x460738
push 0xa384ff02
push 0xc
push edi
call sub.libifcoremd.dll_for_read_seq
add esp, 0x18
test eax, eax
jne 0x4068be
mov dword [esp + 0xe0], ebx
lea eax, [esp + 0xe0]
push eax
push 0x460740
push edi
call sub.libifcoremd.dll_for_read_seq_xmit
add esp, 0xc
test eax, eax
jne 0x4068be
lea eax, [esp + 0xe4]
mov dword [esp + 0xc0], eax
lea edx, [esp + 0xc0]
push edx
push 0x460748
push edi
call sub.libifcoremd.dll_for_read_seq_xmit
add esp, 0xc
cmp eax, 0xffffffff
je 0x406916
movss xmm0, dword [esp + 0xe4]
comiss xmm0, dword [0x460ef8]
jbe 0x4068f6
lea eax, [esp + 0xdc]
push eax
lea edx, [esp + 0xe8]
push edx
push ebx
push esi
push 0x4606f0
call fcn.004405a0
jmp 0x406847
lea eax, [esp + 0x108]
push eax
push dword [esp + 0xcc]
push ebx
push esi
push 0x4606f0
call fcn.004405a0
jmp 0x406847
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x70], 0
mov dword [esp + 0x68], 6
mov dword [esp + 0x6c], 0x460eec
push 0x20
lea eax, [esp + 0x6c]
push eax
push 0x460750
push 0xa384ff00
push 0xc
lea edx, [esp + 0x84]
push edx
call sub.libifcoremd.dll_for_close
add esp, 0x18
movss xmm1, dword [esp + 0xb0]
movss xmm0, dword [0x46c008]
maxss xmm0, dword [0x46c00c]
comiss xmm0, xmm1
ja 0x406c1b
pxor xmm0, xmm0
comiss xmm0, dword [esp + 0xd8]
jae 0x406c1b
mov esi, dword [esp + 0xbc]
movss dword [esp + 0x10c], xmm1
mov dword [esp + 0xc8], ebx
mov dword [esp + 0x9c], edi
mov eax, 1
mov ebx, eax
movss xmm1, dword [0x460f18]
divss xmm1, dword [esp + 0x10c]
movss xmm0, dword [0x460f1c]
subss xmm0, xmm1
movss dword [esp], xmm0
mov dword [esp + 0xd4], 0
call sub.libmmd.dll_acosf
fstp dword [esp + 0xe8]
movss xmm4, dword [esp + 0xe8]
movss xmm2, dword [0x460f10]
movaps xmm0, xmm2
movss xmm1, dword [0x460f14]
mov edi, dword [esp + 0xd4]
addss xmm4, xmm4
maxss xmm4, dword [0x460f0c]
divss xmm0, xmm4
cvttss2si edx, xmm0
cmp edx, 0x3e8
jle 0x406a33
movaps xmm4, xmm1
movaps xmm3, xmm4
addss xmm3, xmm2
divss xmm3, xmm4
cvttss2si eax, xmm3
test eax, eax
jle 0x406b2b
mov edx, dword [esp + 0xc4]
movss xmm2, dword [esi]
movss xmm1, dword [edx]
movss dword [esp + 0x118], xmm1
movss dword [esp + 0x114], xmm2
movss dword [esp + 0x11c], xmm4
mov esi, eax
pxor xmm0, xmm0
movss dword [esp + 0x120], xmm0
movss xmm0, dword [esp + 0x120]
movss dword [esp], xmm0
inc edi
call sub.libmmd.dll_cosf
movss xmm1, dword [esp + 0x120]
fstp dword [esp + 0xe8]
movss xmm0, dword [esp + 0xe8]
mulss xmm0, dword [esp + 0x10c]
addss xmm0, dword [esp + 0x114]
movss dword [esp], xmm1
movss dword [edi*4 + 0x67545c], xmm0
call sub.libmmd.dll_sinf
movss xmm1, dword [esp + 0x120]
addss xmm1, dword [esp + 0x11c]
fstp dword [esp + 0xe8]
movss xmm0, dword [esp + 0xe8]
mulss xmm0, dword [esp + 0x10c]
addss xmm0, dword [esp + 0x118]
movss dword [esp + 0x120], xmm1
movss dword [edi*4 + 0x6763fc], xmm0
dec esi
test esi, esi
jg 0x406a83
mov esi, dword [esp + 0xbc]
mov ecx, dword [0x675460]
mov eax, dword [esp + 0xd0]
inc edi
mov dword [esp + 0xd4], edi
mov edx, 0xffffffff
cmp eax, 1
cmovne eax, edi
mov dword [edi*4 + 0x67545c], ecx
mov ecx, dword [0x676400]
mov dword [edi*4 + 0x6763fc], ecx
mov ecx, 1
cmovne edi, ecx
cmove ecx, edx
sub eax, edi
add eax, ecx
cdq
idiv ecx
test eax, eax
jle 0x406bc8
mov esi, dword [esp + 0xc8]
mov dword [esp + 0x110], ecx
mov dword [esp + 0xcc], ebx
mov ebx, eax
lea eax, [edi*4 + 0x67545c]
lea edx, [esp + 0x108]
push edx
lea ecx, [eax + 0xfa0]
push esi
push ecx
push eax
push 0x4606f0
call fcn.004405a0
add edi, dword [esp + 0x110]
dec ebx
test ebx, ebx
jg 0x406b8c
mov ebx, dword [esp + 0xcc]
mov esi, dword [esp + 0xbc]
inc ebx
cmp ebx, 0x3e8
jg 0x406d3e
movss xmm1, dword [esp + 0x10c]
subss xmm1, dword [esp + 0xd8]
movss xmm0, dword [0x46c008]
maxss xmm0, dword [0x46c00c]
comiss xmm0, xmm1
movss dword [esp + 0x10c], xmm1
jbe 0x4069b8
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0x9c]
lea esi, [esp + 0x5c]
cmp edi, dword [esp + 0xb4]
je 0x406c84
lea eax, [esp + 0x108]
push eax
push ebx
push dword [esp + 0xcc]
push dword [esp + 0xc8]
push 0x4606f0
call fcn.004405a0
movss xmm0, dword [edi*4 + 0x67739c]
addss xmm0, dword [esp + 0x94]
movss dword [esp + 0x54], xmm0
lea edx, [esp + 0x54]
lea eax, [esp + 0x90]
push eax
push edx
push dword [esp + 0xcc]
push dword [esp + 0xc8]
push 0x4606f0
call fcn.004405a0
jmp 0x406cde
lea eax, [esp + 0x108]
push eax
push ebx
push dword [esp + 0xcc]
push dword [esp + 0xc8]
push 0x4606f0
call fcn.004405a0
movss xmm0, dword [0x46c008]
addss xmm0, dword [esp + 0x4c]
movss dword [esp + 0x58], xmm0
lea edx, [esp + 0x58]
lea eax, [esp + 0x90]
push eax
push edx
push dword [esp + 0xcc]
push dword [esp + 0xc8]
push 0x4606f0
call fcn.004405a0
inc edi
cmp edi, dword [esp + 0xb4]
jg 0x406cf6
cmp edi, 1
je 0x40648f
jmp 0x4064ca
movss xmm3, dword [esp + 0x34]
mov eax, dword [esp + 0x48]
inc eax
cmp eax, dword [esp + 0x1c]
mov dword [esp + 0x48], eax
jle 0x4063f0
xor eax, eax
mov dword [esp + 0x70], eax
push 0x20
push eax
push 0x46075c
push 0xa384ff00
push 0xb
lea edx, [esp + 0x84]
push edx
call sub.libifcoremd.dll_for_close
add esp, 0x13c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0x9c]
lea esi, [esp + 0x5c]
jmp 0x406cde
movss xmm0, dword [0x46c008]
addss xmm0, dword [esp + 0x4c]
movss dword [esp + 0x40], xmm0
lea ecx, [esp + 0x64]
lea edx, [esp + 0x40]
lea eax, [esp + 0x90]
push eax
push edx
push ecx
push esi
push 0x4606f0
call fcn.004405a0
movss xmm1, dword [esp + 0xe4]
jmp 0x4067df
movss dword [eax*4 + 0x67739c], xmm0
jmp 0x40644c