Function at 0x409fa0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x194
xor ecx, ecx
mov eax, dword [ebp + 0x24]
mov edi, dword [ebp + 0x28]
movsd xmm1, qword [0x476cd8]
cvtss2sd xmm0, dword [eax]
cvtss2sd xmm2, dword [edi]
mulsd xmm1, xmm0
movaps xmm3, xmm0
divsd xmm3, xmm2
cvtsd2ss xmm3, xmm3
cvtsd2ss xmm1, xmm1
mov esi, dword [eax]
cvttss2si eax, xmm3
add eax, 5
movsd qword [esp + 0x50], xmm0
movss dword [esp + 0xa0], xmm1
mov dword [esp + 0x78], esi
movss dword [esp + 0x7c], xmm3
mov dword [esp + 0x68], eax
add esp, 0xffffffdc
mov edx, dword [ebp + 0x34]
mov ebx, dword [ebp + 0x3c]
mov eax, dword [ebp + 8]
mov dword [edx], ecx
lea edx, [esp + 0x48]
mov dword [esp + 0xc], 0x476bb0
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], 0x9a25c0
mov dword [esp + 0x18], 0x971880
mov dword [ebx], ecx
mov dword [esp + 0x1c], 0x940b40
mov dword [esp + 0x20], 0x90fe00
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
movsd qword [esp + 0x34], xmm0
call fcn.0040c3dc
mov eax, dword [esp + 0x24]
test eax, eax
movsd xmm0, qword [esp + 0x10]
mov dword [0x9fc424], eax
jle 0x40a1c7
cvtsi2ss xmm0, eax
movss dword [esp], xmm0
call sub.libmmd.dll_logf
fstp dword [esp + 0x60]
movss xmm1, dword [esp + 0x60]
movss xmm0, dword [0x476d40]
mulss xmm1, xmm0
mov edi, dword [esp + 0x24]
mov ecx, edi
addss xmm1, dword [0x476d44]
cvttss2si esi, xmm1
test esi, esi
jle 0x40a1c1
mov ebx, 1
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov eax, edi
sar ecx, 1
sub eax, ecx
test eax, eax
jle 0x40a1b8
mov dword [esp + 0x18], ebx
mov edx, 1
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], esi
movss xmm1, dword [edx*4 + 0x9a25bc]
lea ebx, [ecx + edx]
shl ebx, 2
mov esi, edx
movss xmm0, dword [ebx + 0x9a25bc]
comiss xmm1, xmm0
jb 0x40a1a3
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], ecx
mov edi, dword [esi*4 + 0x90fdfc]
mov dword [esp + 0x2c], edi
mov edi, dword [ebx + 0x97187c]
mov edx, dword [esi*4 + 0x97187c]
mov dword [esi*4 + 0x97187c], edi
mov edi, dword [ebx + 0x940b3c]
mov eax, dword [esi*4 + 0x940b3c]
mov dword [esi*4 + 0x940b3c], edi
mov edi, dword [ebx + 0x90fdfc]
mov ecx, dword [esi*4 + 0x9a25bc]
movss dword [esi*4 + 0x9a25bc], xmm0
mov dword [esi*4 + 0x90fdfc], edi
mov dword [ebx + 0x940b3c], eax
sub esi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
test esi, esi
mov dword [ebx + 0x9a25bc], ecx
mov dword [ebx + 0x97187c], edx
mov dword [ebx + 0x90fdfc], eax
jle 0x40a197
mov eax, dword [esp + 0x28]
movss xmm1, dword [esi*4 + 0x9a25bc]
lea ebx, [eax + esi]
shl ebx, 2
movss xmm0, dword [ebx + 0x9a25bc]
comiss xmm1, xmm0
jae 0x40a0ff
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
inc edx
cmp edx, eax
jle 0x40a0d1
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
inc ebx
cmp ebx, esi
jle 0x40a0ab
cvtss2sd xmm0, dword [esp + 0x78]
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x18]
movss xmm2, dword [0x476d3c]
cvtss2sd xmm5, dword [edx]
cvtss2sd xmm1, dword [ecx]
subsd xmm5, xmm0
addsd xmm1, xmm0
cvtsd2ss xmm5, xmm5
cvtsd2ss xmm1, xmm1
addss xmm5, xmm2
subss xmm1, xmm2
mov eax, dword [ebp + 0x28]
subss xmm1, xmm5
movss xmm6, dword [eax]
addss xmm1, xmm6
divss xmm1, xmm6
cvttss2si eax, xmm1
test eax, eax
jle 0x40a7d3
mov ecx, 0x186a0
xor edx, edx
mov esi, 1
movss xmm4, dword [0x476d40]
movd xmm7, ecx
pshufd xmm7, xmm7, 0
movss xmm3, dword [0x476d44]
movss xmm2, dword [0x476d48]
movdqa xmmword [esp + 0x30], xmm7
movss dword [esp + 0xb8], xmm5
movss dword [esp + 0x20], xmm6
mov dword [esp + 0x48], edx
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, 0x2710
jg 0x40b6e9
movss xmm1, dword [esp + 0xb8]
movss xmm0, dword [esp + 0x78]
mov edx, dword [esp + 0x24]
test edx, edx
movss dword [esp + 0x7c], xmm1
addss xmm0, xmm1
mov dword [0x9fc428], edx
jle 0x40a2c1
mov eax, 1
movss xmm1, dword [eax*4 + 0x9a25bc]
comiss xmm1, xmm0
ja 0x40b6e2
inc eax
cmp eax, edx
jle 0x40a2aa
mov dword [esp + 0x70], edx
xor ebx, ebx
mov esi, dword [esp + 0x40]
mov edi, dword [ebp + 0x28]
mov eax, dword [esp + 0x48]
cmp esi, eax
mov dword [esp + 0x5c], ebx
cmovl esi, eax
mov dword [esp + 0x58], ebx
mov edx, esi
cmp esi, dword [esp + 0x70]
jg 0x40b6d9
mov ecx, ebx
mov dword [esp + 0x40], esi
mov ebx, edx
mov dword [esp + 0x6c], ecx
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp + 0x1c]
lea ecx, [ebx*4 + 0x9a25bc]
movss xmm1, dword [esp + 0xa0]
movss xmm2, dword [esi]
movss xmm0, dword [edi]
lea edi, [ebx*4 + 0x97187c]
subss xmm0, xmm1
addss xmm2, xmm1
movss dword [esp + 0xa4], xmm0
movss dword [esp + 0xa8], xmm2
add esp, 0xffffffd0
lea edx, [esp + 0xac]
lea eax, [esp + 0xd8]
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
lea eax, [ebx*4 + 0x940b3c]
mov dword [esp + 0x14], ecx
lea ecx, [ebx*4 + 0x90fdfc]
mov dword [esp + 0x18], edi
lea edi, [esp + 0xdc]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0xa8]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0xd4]
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], 0x9d34a0
mov dword [esp + 0x2c], 0x9d3300
call fcn.0040b9bc
mov eax, dword [esp + 0xac]
test eax, eax
je 0x40a693
test byte [esp + 0x6c], 1
jne 0x40a52e
mov ecx, dword [esp + 0x44]
mov dword [ecx*4 + 0x9d3640], ebx
lea ecx, [ecx + 1]
mov dword [0x9fc434], ecx
cmp ecx, dword [esp + 0x68]
jle 0x40a51a
cmp dword [esp + 0x44], 0
jle 0x40a50b
cmp dword [esp + 0x44], 0x10
jl 0x40a749
mov edx, dword [esp + 0x44]
xor ecx, ecx
movdqa xmm0, xmmword [esp + 0x30]
and edx, 0xfffffff0
movdqu xmm1, xmmword [ecx*4 + 0x9d3644]
movdqu xmm4, xmmword [ecx*4 + 0x9d3664]
movdqu xmm6, xmmword [ecx*4 + 0x9d3674]
movdqa xmm2, xmm1
movdqa xmm5, xmm4
pcmpgtd xmm2, xmm0
pxor xmm0, xmm1
pand xmm2, xmm0
movdqu xmm0, xmmword [ecx*4 + 0x9d3654]
pxor xmm2, xmm1
movdqa xmm3, xmm0
pcmpgtd xmm3, xmm2
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
pcmpgtd xmm5, xmm3
pxor xmm3, xmm4
pand xmm5, xmm3
movdqa xmmword [ecx*4 + 0x9d3650], xmm0
pxor xmm5, xmm4
movdqa xmm0, xmm6
pcmpgtd xmm0, xmm5
pxor xmm5, xmm6
movdqa xmmword [ecx*4 + 0x9d3640], xmm1
pand xmm0, xmm5
movdqa xmmword [ecx*4 + 0x9d3660], xmm4
pxor xmm0, xmm6
movdqa xmmword [ecx*4 + 0x9d3670], xmm6
add ecx, 0x10
cmp ecx, edx
jb 0x40a3f8
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm1, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm0, xmm2
pand xmm3, xmm0
pxor xmm3, xmm2
movd dword [esp + 0x48], xmm3
cmp edx, dword [esp + 0x44]
jae 0x40a514
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov ecx, dword [edx*4 + 0x9d3644]
cmp ecx, esi
mov dword [edx*4 + 0x9d3640], ecx
jge 0x40a4fd
mov esi, ecx
inc edx
cmp edx, edi
jb 0x40a4e9
mov dword [esp + 0x48], esi
mov esi, dword [ebp + 0x20]
jmp 0x40a514
mov ecx, 0x186a0
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x44]
jmp 0x40a522
mov dword [esp + 0x48], 1
mov dword [esp + 0x44], ecx
mov dword [esp + 0x6c], 0xffffffff
mov dword [0x9fc420], eax
test eax, eax
jle 0x40a635
cvtsi2ss xmm0, eax
movss dword [esp], xmm0
call sub.libmmd.dll_logf
fstp dword [esp + 0x60]
movss xmm0, dword [esp + 0x60]
mulss xmm0, dword [0x476d40]
mov eax, dword [esp + 0xac]
mov edi, eax
addss xmm0, dword [0x476d44]
cvttss2si ecx, xmm0
test ecx, ecx
jle 0x40a635
mov dword [esp + 0x4c], ebx
mov edx, 1
mov ebx, edi
mov esi, eax
shr ebx, 0x1f
add edi, ebx
sar edi, 1
sub esi, edi
test esi, esi
jle 0x40a625
mov dword [esp + 0xb4], edx
mov ebx, 1
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x74], eax
movss xmm1, dword [ebx*4 + 0x9d32fc]
lea eax, [edi + ebx]
shl eax, 2
mov edx, ebx
movss xmm0, dword [eax + 0x9d32fc]
comiss xmm1, xmm0
jb 0x40a603
mov ecx, dword [edx*4 + 0x9d32fc]
movss dword [edx*4 + 0x9d32fc], xmm0
sub edx, edi
mov dword [eax + 0x9d32fc], ecx
test edx, edx
jle 0x40a603
lea eax, [edi + edx]
shl eax, 2
movss xmm1, dword [edx*4 + 0x9d32fc]
movss xmm0, dword [eax + 0x9d32fc]
comiss xmm1, xmm0
jae 0x40a5cb
lea esi, [esi]
lea edi, [edi]
inc ebx
cmp ebx, esi
jle 0x40a5ad
mov edx, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0x74]
inc edx
cmp edx, ecx
jle 0x40a581
mov ebx, dword [esp + 0x4c]
mov esi, dword [ebp + 0x20]
movss xmm0, dword [eax*4 + 0x9d32fc]
mov edi, dword [eax*4 + 0x9d32fc]
mov ecx, dword [0x9d3300]
subss xmm0, dword [0x9d3300]
cvtss2sd xmm0, xmm0
comisd xmm0, xmmword [0x476cd0]
jbe 0x40a693
mov eax, dword [esp + 0x5c]
comisd xmm0, xmmword [esp + 0x50]
mov dword [eax*4 + 0x9d3960], ecx
lea ecx, [eax + 2]
mov dword [esp + 0x5c], ecx
mov dword [ecx*4 + 0x9d395c], edi
jbe 0x40a693
mov ecx, dword [esp + 0x58]
inc eax
inc ecx
mov dword [esp + 0x58], ecx
mov dword [ecx*4 + 0x9e71dc], eax
inc ebx
cmp ebx, dword [esp + 0x70]
jle 0x40a2fa
mov esi, dword [esp + 0x40]
lea eax, [esp + 0xac]
mov edi, dword [ebp + 0x28]
xor ebx, ebx
cmp dword [esp + 0x5c], 0
je 0x40b6d9
mov ecx, dword [esp + 0x58]
cmp ecx, 1
jne 0x40a6d5
inc ecx
mov dword [esp + 0x58], ecx
mov edx, dword [ecx*4 + 0x9e71d8]
mov dword [ecx*4 + 0x9e71dc], edx
add esp, 0xffffffe8
mov edx, 0x9d3960
lea ecx, [esp + 0x70]
mov dword [esp + 0xc], 0x9e71e0
mov dword [esp + 0x10], eax
lea eax, [esp + 0x74]
mov dword [esp + 0x14], 0x9ec3e0
call fcn.0040b74c
mov eax, dword [esp + 0xac]
mov edx, eax
shr edx, 0x1f
add edx, eax
and edx, 0xfffffffe
cmp eax, edx
je 0x40b379
movss xmm0, dword [edi]
mulss xmm0, dword [0x476d48]
addss xmm0, dword [esp + 0x7c]
movaps xmm1, xmm0
subss xmm1, dword [esp + 0xb8]
comiss xmm1, dword [0x476d4c]
ja 0x40a759
movss dword [esp + 0x7c], xmm0
jmp 0x40a2ce
mov ecx, 0x186a0
xor edx, edx
mov dword [esp + 0x48], ecx
jmp 0x40a4db
mov eax, dword [ebp + 0x24]
movss xmm2, dword [esp + 0x78]
movss xmm1, dword [0x476d44]
movss xmm3, dword [eax]
subss xmm2, xmm3
andps xmm2, xmmword [0x476ca0]
comiss xmm1, xmm2
jbe 0x40a7a0
movss xmm0, dword [esp + 0xb8]
movss dword [esp + 0x7c], xmm0
addss xmm3, dword [0x476d50]
movss dword [esp + 0x78], xmm3
jmp 0x40a2ce
mov dword [esp + 0x40], esi
movss dword [esp + 0x7c], xmm0
movss xmm0, dword [esp + 0xb8]
mov eax, dword [esp + 0x1c]
dec eax
addss xmm0, dword [esp + 0x20]
movss dword [esp + 0xb8], xmm0
test eax, eax
mov dword [esp + 0x1c], eax
jg 0x40a26a
mov ebx, dword [ebp + 0x24]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov esi, dword [ebx]
mov dword [esp + 0x78], esi
add esp, 0xffffffdc
movss xmm2, dword [ebx]
lea edi, [esp + 0x48]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0xc], 0x476c1c
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], 0x9a25c0
mov dword [esp + 0x18], 0x971880
mov dword [esp + 0x1c], 0x940b40
mov dword [esp + 0x20], 0x90fe00
movss dword [esp + 0x3c], xmm2
call fcn.0040c3dc
mov eax, dword [esp + 0x24]
test eax, eax
movss xmm2, dword [esp + 0x18]
mov dword [0x9fc424], eax
jle 0x40a99d
cvtsi2ss xmm0, eax
movss dword [esp], xmm0
call sub.libmmd.dll_logf
fstp dword [esp + 0x60]
movss xmm1, dword [esp + 0x60]
movss xmm0, dword [0x476d40]
mulss xmm1, xmm0
mov edi, dword [esp + 0x24]
mov ecx, edi
addss xmm1, dword [0x476d44]
cvttss2si esi, xmm1
test esi, esi
jle 0x40a997
mov ebx, 1
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov eax, edi
sar ecx, 1
sub eax, ecx
test eax, eax
jle 0x40a98e
mov dword [esp + 0x20], ebx
mov edx, 1
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], esi
movss xmm1, dword [edx*4 + 0x97187c]
lea ebx, [ecx + edx]
shl ebx, 2
mov esi, edx
movss xmm0, dword [ebx + 0x97187c]
comiss xmm1, xmm0
jb 0x40a979
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], ecx
mov edi, dword [esi*4 + 0x940b3c]
mov dword [esp + 0x34], edi
mov edi, dword [ebx + 0x9a25bc]
mov edx, dword [esi*4 + 0x9a25bc]
mov dword [esi*4 + 0x9a25bc], edi
mov edi, dword [ebx + 0x90fdfc]
mov eax, dword [esi*4 + 0x90fdfc]
mov dword [esi*4 + 0x90fdfc], edi
mov edi, dword [ebx + 0x940b3c]
mov ecx, dword [esi*4 + 0x97187c]
movss dword [esi*4 + 0x97187c], xmm0
mov dword [esi*4 + 0x940b3c], edi
mov dword [ebx + 0x90fdfc], eax
sub esi, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
test esi, esi
mov dword [ebx + 0x97187c], ecx
mov dword [ebx + 0x9a25bc], edx
mov dword [ebx + 0x940b3c], eax
jle 0x40a96d
mov eax, dword [esp + 0x30]
movss xmm1, dword [esi*4 + 0x97187c]
lea ebx, [eax + esi]
shl ebx, 2
movss xmm0, dword [ebx + 0x97187c]
comiss xmm1, xmm0
jae 0x40a8d5
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
inc edx
cmp edx, eax
jle 0x40a8a7
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
inc ebx
cmp ebx, esi
jle 0x40a881
movss xmm2, dword [esp + 0x78]
mov edx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x20]
movss xmm0, dword [0x476d3c]
movss xmm5, dword [edx]
movss xmm1, dword [ecx]
subss xmm5, xmm2
addss xmm1, xmm2
addss xmm5, xmm0
subss xmm1, xmm0
mov eax, dword [ebp + 0x28]
subss xmm1, xmm5
movss xmm6, dword [eax]
addss xmm1, xmm6
divss xmm1, xmm6
cvttss2si eax, xmm1
test eax, eax
jle 0x40afb1
mov ecx, 0x186a0
xor edx, edx
mov esi, 1
movss xmm4, dword [0x476d40]
movd xmm7, ecx
pshufd xmm7, xmm7, 0
movss xmm3, dword [0x476d44]
movss xmm2, dword [0x476d48]
movdqa xmmword [esp + 0x40], xmm7
movss dword [esp + 0xc8], xmm5
movss dword [esp + 0x2c], xmm6
mov dword [esp + 0x6c], edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, 0x2710
jg 0x40b330
movss xmm1, dword [esp + 0xc8]
movss xmm0, dword [esp + 0x78]
mov ebx, dword [esp + 0x24]
test ebx, ebx
movss dword [esp + 0x7c], xmm1
addss xmm0, xmm1
mov dword [0x9fc428], ebx
jle 0x40aa8f
mov eax, 1
movss xmm1, dword [eax*4 + 0x97187c]
comiss xmm1, xmm0
ja 0x40b329
inc eax
cmp eax, ebx
jle 0x40aa78
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x38]
xor eax, eax
cmp edi, esi
mov dword [esp + 0x5c], eax
cmovl edi, esi
mov dword [esp + 0x58], eax
mov eax, edi
cmp ebx, edi
jl 0x40b320
xor edx, edx
mov dword [esp + 0x74], edx
mov dword [esp + 0xb8], ebx
mov ebx, eax
mov dword [esp + 0x38], edi
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 0x14]
lea edx, [ebx*4 + 0x9a25bc]
movss xmm1, dword [esp + 0xa0]
movss xmm2, dword [esi]
movss xmm0, dword [edi]
lea edi, [ebx*4 + 0x97187c]
subss xmm0, xmm1
addss xmm2, xmm1
movss dword [esp + 0xb0], xmm0
movss dword [esp + 0xb4], xmm2
add esp, 0xffffffd0
lea ecx, [esp + 0xe4]
lea eax, [esp + 0xa8]
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0xac]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
lea edx, [ebx*4 + 0x940b3c]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edx
lea edx, [ebx*4 + 0x90fdfc]
mov dword [esp + 0x20], edx
lea edx, [esp + 0xdc]
mov dword [esp + 0x24], edx
lea edx, [esp + 0xe0]
mov dword [esp + 0x28], 0x9d34a0
mov dword [esp + 0x2c], 0x9d3300
call fcn.0040b9bc
mov eax, dword [esp + 0xac]
test eax, eax
je 0x40ae65
test byte [esp + 0x74], 1
jne 0x40acfa
mov edx, dword [esp + 0x3c]
mov dword [edx*4 + 0x9d3640], ebx
lea edx, [edx + 1]
mov dword [0x9fc434], edx
cmp edx, dword [esp + 0x68]
jle 0x40ace6
cmp dword [esp + 0x3c], 0
jle 0x40acd7
cmp dword [esp + 0x3c], 0x10
jl 0x40af27
mov edx, dword [esp + 0x3c]
xor ecx, ecx
movdqa xmm0, xmmword [esp + 0x40]
and edx, 0xfffffff0
movdqu xmm1, xmmword [ecx*4 + 0x9d3644]
movdqu xmm4, xmmword [ecx*4 + 0x9d3664]
movdqu xmm6, xmmword [ecx*4 + 0x9d3674]
movdqa xmm2, xmm1
movdqa xmm5, xmm4
pcmpgtd xmm2, xmm0
pxor xmm0, xmm1
pand xmm2, xmm0
movdqu xmm0, xmmword [ecx*4 + 0x9d3654]
pxor xmm2, xmm1
movdqa xmm3, xmm0
pcmpgtd xmm3, xmm2
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
pcmpgtd xmm5, xmm3
pxor xmm3, xmm4
pand xmm5, xmm3
movdqa xmmword [ecx*4 + 0x9d3650], xmm0
pxor xmm5, xmm4
movdqa xmm0, xmm6
pcmpgtd xmm0, xmm5
pxor xmm5, xmm6
movdqa xmmword [ecx*4 + 0x9d3640], xmm1
pand xmm0, xmm5
movdqa xmmword [ecx*4 + 0x9d3660], xmm4
pxor xmm0, xmm6
movdqa xmmword [ecx*4 + 0x9d3670], xmm6
add ecx, 0x10
cmp ecx, edx
jb 0x40abc4
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm1, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm0, xmm2
pand xmm3, xmm0
pxor xmm3, xmm2
movd dword [esp + 0x6c], xmm3
cmp edx, dword [esp + 0x3c]
jae 0x40ace0
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x3c]
mov ecx, dword [edx*4 + 0x9d3644]
cmp ecx, esi
mov dword [edx*4 + 0x9d3640], ecx
jge 0x40acc9
mov esi, ecx
inc edx
cmp edx, edi
jb 0x40acb5
mov dword [esp + 0x6c], esi
mov esi, dword [ebp + 0x18]
jmp 0x40ace0
mov edx, 0x186a0
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x3c]
jmp 0x40acee
mov dword [esp + 0x6c], 1
mov dword [esp + 0x3c], edx
mov dword [esp + 0x74], 0xffffffff
mov dword [0x9fc420], eax
test eax, eax
jle 0x40ae07
cvtsi2ss xmm0, eax
movss dword [esp], xmm0
call sub.libmmd.dll_logf
fstp dword [esp + 0x60]
movss xmm0, dword [esp + 0x60]
mulss xmm0, dword [0x476d40]
mov eax, dword [esp + 0xac]
mov edi, eax
addss xmm0, dword [0x476d44]
cvttss2si ecx, xmm0
test ecx, ecx
jle 0x40ae07
mov dword [esp + 0x70], ebx
mov edx, 1
mov ebx, edi
mov esi, eax
shr ebx, 0x1f
add edi, ebx
sar edi, 1
sub esi, edi
test esi, esi
jle 0x40adf7
mov dword [esp + 0xc4], edx
mov ebx, 1
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xbc], eax
movss xmm1, dword [ebx*4 + 0x9d349c]
lea eax, [edi + ebx]
shl eax, 2
mov edx, ebx
movss xmm0, dword [eax + 0x9d349c]
comiss xmm1, xmm0
jb 0x40add2
mov ecx, dword [edx*4 + 0x9d349c]
movss dword [edx*4 + 0x9d349c], xmm0
sub edx, edi
mov dword [eax + 0x9d349c], ecx
test edx, edx
jle 0x40add2
lea eax, [edi + edx]
shl eax, 2
movss xmm1, dword [edx*4 + 0x9d349c]
movss xmm0, dword [eax + 0x9d349c]
comiss xmm1, xmm0
jae 0x40ad9a
lea esi, [esi]
lea edi, [edi]
inc ebx
cmp ebx, esi
jle 0x40ad7c
mov edx, dword [esp + 0xc4]
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0xbc]
inc edx
cmp edx, ecx
jle 0x40ad4d
mov ebx, dword [esp + 0x70]
mov esi, dword [ebp + 0x18]
movss xmm0, dword [eax*4 + 0x9d349c]
mov edi, dword [eax*4 + 0x9d349c]
mov ecx, dword [0x9d34a0]
subss xmm0, dword [0x9d34a0]
cvtss2sd xmm0, xmm0
comisd xmm0, xmmword [0x476cd0]
jbe 0x40ae65
mov edx, dword [esp + 0x5c]
comisd xmm0, xmmword [esp + 0x50]
mov dword [edx*4 + 0x9d3960], ecx
lea ecx, [edx + 2]
mov dword [esp + 0x5c], ecx
mov dword [ecx*4 + 0x9d395c], edi
jbe 0x40ae65
mov ecx, dword [esp + 0x58]
inc edx
inc ecx
mov dword [esp + 0x58], ecx
mov dword [ecx*4 + 0x9e71dc], edx
inc ebx
cmp ebx, dword [esp + 0xb8]
jle 0x40aac6
mov ebx, dword [esp + 0xb8]
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x38]
cmp dword [esp + 0x5c], 0
je 0x40b320
mov edx, dword [esp + 0x58]
cmp edx, 1
jne 0x40aea9
inc edx
mov dword [esp + 0x58], edx
mov eax, dword [edx*4 + 0x9e71d8]
mov dword [edx*4 + 0x9e71dc], eax
add esp, 0xffffffe8
mov edx, 0x9d3960
lea eax, [esp + 0xc4]
lea ecx, [esp + 0x70]
mov dword [esp + 0xc], 0x9e71e0
mov dword [esp + 0x10], eax
lea eax, [esp + 0x74]
mov dword [esp + 0x14], 0x9ec3e0
call fcn.0040b74c
mov eax, dword [esp + 0xac]
mov edx, eax
shr edx, 0x1f
add edx, eax
and edx, 0xfffffffe
cmp eax, edx
je 0x40afc0
mov eax, dword [ebp + 0x28]
movss xmm0, dword [eax]
mulss xmm0, dword [0x476d48]
addss xmm0, dword [esp + 0x7c]
movaps xmm1, xmm0
subss xmm1, dword [esp + 0xc8]
comiss xmm1, dword [0x476d4c]
ja 0x40af37
movss dword [esp + 0x7c], xmm0
jmp 0x40aa97
mov edx, 0x186a0
mov dword [esp + 0x6c], edx
xor edx, edx
jmp 0x40aca7
mov eax, dword [ebp + 0x24]
movss xmm2, dword [esp + 0x78]
movss xmm1, dword [0x476d44]
movss xmm3, dword [eax]
subss xmm2, xmm3
andps xmm2, xmmword [0x476ca0]
comiss xmm1, xmm2
jbe 0x40af7e
movss xmm0, dword [esp + 0xc8]
movss dword [esp + 0x7c], xmm0
addss xmm3, dword [0x476d50]
movss dword [esp + 0x78], xmm3
jmp 0x40aa97
mov dword [esp + 0x38], edi
movss dword [esp + 0x7c], xmm0
movss xmm0, dword [esp + 0xc8]
mov eax, dword [esp + 0x28]
dec eax
addss xmm0, dword [esp + 0x2c]
movss dword [esp + 0xc8], xmm0
test eax, eax
mov dword [esp + 0x28], eax
jg 0x40aa38
add esp, 0x194
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x3c
mov edx, dword [ebp + 0x24]
test eax, eax
mov dword [esp + 0x38], edi
mov dword [0x9fc420], eax
mov ecx, dword [edx]
mov dword [esp + 0x78], ecx
jle 0x40b0c3
cvtsi2ss xmm0, eax
movss dword [esp], xmm0
call sub.libmmd.dll_logf
fstp dword [esp + 0x60]
movss xmm0, dword [esp + 0x60]
mulss xmm0, dword [0x476d40]
mov eax, dword [esp + 0xac]
mov esi, eax
addss xmm0, dword [0x476d44]
cvttss2si edi, xmm0
test edi, edi
jle 0x40b0c3
mov ebx, 1
mov edx, esi
mov ecx, eax
shr edx, 0x1f
add esi, edx
sar esi, 1
sub ecx, esi
test ecx, ecx
jle 0x40b0ba
mov dword [esp + 0x34], ebx
mov edx, 1
mov dword [esp + 0x30], edi
mov dword [esp + 0xcc], eax
movss xmm1, dword [edx*4 + 0x9ec3dc]
lea eax, [esi + edx]
shl eax, 2
mov ebx, edx
movss xmm0, dword [eax + 0x9ec3dc]
comiss xmm1, xmm0
jb 0x40b09b
mov edi, dword [ebx*4 + 0x9ec3dc]
movss dword [ebx*4 + 0x9ec3dc], xmm0
sub ebx, esi
mov dword [eax + 0x9ec3dc], edi
test ebx, ebx
jle 0x40b09b
lea eax, [esi + ebx]
shl eax, 2
movss xmm1, dword [ebx*4 + 0x9ec3dc]
movss xmm0, dword [eax + 0x9ec3dc]
comiss xmm1, xmm0
jae 0x40b063
lea esi, [esi]
lea edi, [edi]
inc edx
cmp edx, ecx
jle 0x40b045
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0xcc]
inc ebx
cmp ebx, edi
jle 0x40b01c
test eax, eax
jle 0x40af88
mov ecx, dword [ebp + 0x30]
mov ebx, 1
mov edx, dword [ebp + 0x3c]
mov esi, dword [ecx]
test esi, esi
mov edx, dword [edx]
jne 0x40b128
movss xmm0, dword [esp + 0xc8]
mov edi, dword [ebp + 0x40]
mov ecx, dword [ebx*4 + 0x9ec3dc]
mov dword [edi + edx*8], ecx
movss dword [edi + edx*8 + 4], xmm0
add edx, 2
mov esi, dword [ebx*4 + 0x9ec3e0]
add ebx, 2
cmp ebx, eax
mov dword [edi + edx*8 - 8], esi
movss dword [edi + edx*8 - 4], xmm0
jle 0x40b0ea
mov eax, dword [ebp + 0x3c]
movss dword [esp + 0xc8], xmm0
mov dword [eax], edx
jmp 0x40af88
mov dword [esp + 0xcc], eax
lea ecx, [esp + 0x148]
lea edi, [esp + 0x80]
mov dword [esp + 0x80], 0
mov dword [esp + 0x130], 0x47c34f80
push 0x20
lea eax, [esp + 0x134]
push eax
push 0x476c28
push 0xa384ff00
push esi
push edi
call sub.libifcoremd.dll_for_write_seq
mov dword [esp + 0x150], 0x47c34f80
lea eax, [esp + 0x150]
push eax
push 0x476c30
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x164], 0x47c34f80
lea eax, [esp + 0x164]
push eax
push 0x476c38
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
mov eax, dword [ebx*4 + 0x9ec3dc]
mov dword [esp + 0xb0], 0
mov dword [esp + 0x178], eax
push 0x20
lea edx, [esp + 0x17c]
push edx
push 0x476c40
push 0xa384ff00
push esi
push edi
call sub.libifcoremd.dll_for_write_seq
movss xmm0, dword [esp + 0x110]
lea eax, [esp + 0x198]
movss dword [esp + 0x198], xmm0
push eax
push 0x476c48
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x1ac], 0
lea eax, [esp + 0x1ac]
push eax
push 0x476c50
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
mov eax, dword [ebx*4 + 0x9ec3e0]
mov dword [esp + 0xe0], 0
mov dword [esp + 0x1c0], eax
push 0x20
lea edx, [esp + 0x1c4]
push edx
push 0x476c58
push 0xa384ff00
push esi
push edi
call sub.libifcoremd.dll_for_write_seq
add esp, 0x78
movss xmm0, dword [esp + 0xc8]
lea eax, [esp + 0x168]
movss dword [esp + 0x168], xmm0
push eax
push 0x476c60
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x17c], 0
lea eax, [esp + 0x17c]
push eax
push 0x476c68
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x98], 0
mov dword [esp + 0x190], 0x47c34f80
push 0x20
lea eax, [esp + 0x194]
push eax
push 0x476c70
push 0xa384ff00
push esi
push edi
call sub.libifcoremd.dll_for_write_seq
mov dword [esp + 0x1b0], 0x47c34f80
lea eax, [esp + 0x1b0]
push eax
push 0x476c78
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x1c4], 0x47c34f80
lea eax, [esp + 0x1c4]
push eax
push 0x476c80
push edi
call sub.libifcoremd.dll_for_write_seq_xmit
add esp, 0x48
add ebx, 2
cmp ebx, dword [esp + 0xcc]
jle 0x40b13d
jmp 0x40af88
mov dword [esp + 0x38], edi
jmp 0x40af88
mov ebx, eax
jmp 0x40aa8f
mov dword [esp + 0x80], 0
lea edx, [esp + 0x80]
mov dword [esp + 0x18], 0x1c
lea eax, [esp + 0x18]
mov dword [esp + 0x1c], str._Calculation_in_progress_...
push 0x20
push eax
push 0x476c20
push 0xa384ff00
push 0xffffffffffffffff
push edx
call sub.libifcoremd.dll_for_write_seq_lis
add esp, 0x18
xor eax, eax
mov dword [esp + 0x20], eax
jmp 0x40aa4c
mov edx, dword [ebp + 0x24]
test eax, eax
mov dword [esp + 0x40], esi
mov dword [0x9fc420], eax
mov ecx, dword [edx]
mov dword [esp + 0x78], ecx
jle 0x40b47c
cvtsi2ss xmm0, eax
movss dword [esp], xmm0
call sub.libmmd.dll_logf
fstp dword [esp + 0x60]
movss xmm0, dword [esp + 0x60]
mulss xmm0, dword [0x476d40]
mov eax, dword [esp + 0xac]
mov esi, eax
addss xmm0, dword [0x476d44]
cvttss2si edi, xmm0
test edi, edi
jle 0x40b47c
mov ebx, 1
mov edx, esi
mov ecx, eax
shr edx, 0x1f
add esi, edx
sar esi, 1
sub ecx, esi
test ecx, ecx
jle 0x40b473
mov dword [esp + 0x2c], ebx
mov edx, 1
mov dword [esp + 0x28], edi
mov dword [esp + 0xbc], eax
movss xmm1, dword [edx*4 + 0x9ec3dc]
lea eax, [esi + edx]
shl eax, 2
mov ebx, edx
movss xmm0, dword [eax + 0x9ec3dc]
comiss xmm1, xmm0
jb 0x40b454
mov edi, dword [ebx*4 + 0x9ec3dc]
movss dword [ebx*4 + 0x9ec3dc], xmm0
sub ebx, esi
mov dword [eax + 0x9ec3dc], edi
test ebx, ebx
jle 0x40b454
lea eax, [esi + ebx]
shl eax, 2
movss xmm1, dword [ebx*4 + 0x9ec3dc]
movss xmm0, dword [eax + 0x9ec3dc]
comiss xmm1, xmm0
jae 0x40b41c
lea esi, [esi]
lea edi, [edi]
inc edx
cmp edx, ecx
jle 0x40b3fe
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0xbc]
inc ebx
cmp ebx, edi
jle 0x40b3d5
test eax, eax
jle 0x40a7aa
mov ecx, dword [ebp + 0x2c]
mov ebx, 1
mov edx, dword [ebp + 0x34]
mov edi, dword [ecx]
test edi, edi
mov edx, dword [edx]
jne 0x40b4e1
movss xmm0, dword [esp + 0xb8]
mov edi, dword [ebp + 0x38]
mov ecx, dword [ebx*4 + 0x9ec3dc]
movss dword [edi + edx*8], xmm0
mov dword [edi + edx*8 + 4], ecx
add edx, 2
mov esi, dword [ebx*4 + 0x9ec3e0]
add ebx, 2
cmp ebx, eax
movss dword [edi + edx*8 - 8], xmm0
mov dword [edi + edx*8 - 4], esi
jle 0x40b4a3
mov eax, dword [ebp + 0x34]
movss dword [esp + 0xb8], xmm0
mov dword [eax], edx
jmp 0x40a7aa
mov dword [esp + 0xbc], eax
lea esi, [esp + 0x80]
lea ecx, [esp + 0xd8]
mov dword [esp + 0x80], 0
mov dword [esp + 0xd0], 0x47c34f80
push 0x20
lea eax, [esp + 0xd4]
push eax
push 0x476bbc
push 0xa384ff00
push edi
push esi
call sub.libifcoremd.dll_for_write_seq
mov dword [esp + 0xf0], 0x47c34f80
lea eax, [esp + 0xf0]
push eax
push 0x476bc4
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x104], 0x47c34f80
lea eax, [esp + 0x104]
push eax
push 0x476bcc
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
movss xmm0, dword [esp + 0xe8]
mov dword [esp + 0xb0], 0
movss dword [esp + 0x118], xmm0
push 0x20
lea eax, [esp + 0x11c]
push eax
push 0x476bd4
push 0xa384ff00
push edi
push esi
call sub.libifcoremd.dll_for_write_seq
mov eax, dword [ebx*4 + 0x9ec3dc]
lea edx, [esp + 0x138]
mov dword [esp + 0x138], eax
push edx
push 0x476bdc
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x14c], 0
lea eax, [esp + 0x14c]
push eax
push 0x476be4
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
movss xmm0, dword [esp + 0x118]
mov dword [esp + 0xe0], 0
movss dword [esp + 0x160], xmm0
push 0x20
lea eax, [esp + 0x164]
push eax
push 0x476bec
push 0xa384ff00
push edi
push esi
call sub.libifcoremd.dll_for_write_seq
add esp, 0x78
mov eax, dword [ebx*4 + 0x9ec3e0]
lea edx, [esp + 0x108]
mov dword [esp + 0x108], eax
push edx
push 0x476bf4
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x11c], 0
lea eax, [esp + 0x11c]
push eax
push 0x476bfc
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x98], 0
mov dword [esp + 0x130], 0x47c34f80
push 0x20
lea eax, [esp + 0x134]
push eax
push 0x476c04
push 0xa384ff00
push edi
push esi
call sub.libifcoremd.dll_for_write_seq
mov dword [esp + 0x150], 0x47c34f80
lea eax, [esp + 0x150]
push eax
push 0x476c0c
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
mov dword [esp + 0x164], 0x47c34f80
lea eax, [esp + 0x164]
push eax
push 0x476c14
push esi
call sub.libifcoremd.dll_for_write_seq_xmit
add esp, 0x48
add ebx, 2
cmp ebx, dword [esp + 0xbc]
jle 0x40b4f6
jmp 0x40a7aa
mov dword [esp + 0x40], esi
jmp 0x40a7aa
mov edx, eax
jmp 0x40a2c1
mov dword [esp + 0x80], 0
lea edx, [esp + 0x80]
mov dword [esp + 0x10], 0x1c
lea eax, [esp + 0x10]
mov dword [esp + 0x14], 0x476cf8
push 0x20
push eax
push 0x476bb4
push 0xa384ff00
push 0xffffffffffffffff
push edx
call sub.libifcoremd.dll_for_write_seq_lis
add esp, 0x18
xor eax, eax
mov dword [esp + 0x18], eax
jmp 0x40a27e