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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x88
mov dword [esp + 0x30], edx
mov edi, dword [ebp + 0xc]
mov eax, dword [0x10305014]
xor eax, ebp
mov dword [esp + 0x80], eax
cmp edi, 1
je 0x1012cfb0
mov edx, dword [ebp + 0x1c]
mov eax, dword [ecx + 8]
mov esi, dword [ecx + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [eax + 0x38]
mov dword [esp + 0xc], esi
movsx eax, word [eax + esi*2]
lea ebx, [eax + edx*8]
mov eax, ebx
sar eax, 1
lea esi, [eax - 4]
add eax, 0xfffffff0
xor edx, edx
cmp edi, 2
cmovne eax, esi
sete dl
mov esi, dword [ebp + 0x10]
mov edi, esi
sub edi, ebx
not edx
mov ebx, dword [ebp + 0xc]
lea ebx, [edx + ebx*2]
imul eax, ebx
mov dword [esp + 0x10], esi
add eax, esi
cdq
mov esi, dword [ecx]
mov dword [esp + 0x2c], esi
mov esi, dword [ecx + 0x1c]
mov dword [esp + 4], esi
mov esi, dword [ecx + 0x10]
mov dword [esp + 0x20], ecx
mov ecx, dword [ecx + 0x24]
mov dword [esp + 0x14], ecx
idiv ebx
add edi, 0xffffffe0
cmp edi, eax
cmovge edi, eax
cmp edi, 0x40
mov eax, 0x40
cmovl eax, edi
xor ebx, ebx
inc ebx
mov edi, ebx
cmp eax, 4
jl 0x1012c526
mov ecx, eax
and ecx, 7
movsx edi, word [ecx + ecx + 0x102fa648]
shr eax, 3
mov cl, 0xe
sub cl, al
sar edi, cl
inc edi
and edi, 0xfffffffe
cmp edi, 0x101
jge 0x1012d1f8
cmp dword [esp + 0xc], esi
cmovl ebx, edi
cmp dword [esp + 0x2c], 0
jne 0x1012cfce
push dword [esp + 4]
call fcn.10129c50
add esp, 4
mov edi, eax
cmp ebx, 1
je 0x1012ceb8
cmp dword [ebp + 0xc], 2
jg 0x1012cc36
lea eax, [ebx + 1]
push eax
push dword [esp + 8]
call fcn.101296b0
add esp, 8
mov esi, eax
mov dword [esp + 8], edi
test esi, esi
js 0x1012d214
shl esi, 0xe
mov eax, esi
xor edx, edx
div ebx
mov edi, eax
cmp dword [esp + 0x2c], 0
jne 0x1012d230
push dword [esp + 4]
call fcn.10129c50
add esp, 4
sub eax, dword [esp + 8]
mov dword [esp + 0x1c], eax
sub dword [esp + 0x10], eax
test edi, edi
mov esi, edi
je 0x1012ccbf
cmp esi, 0x4000
je 0x1012cf56
mov eax, esi
shl eax, 0x10
mov dword [esp + 0x14], esi
movsx ecx, si
mov esi, 0x40000000
sub esi, eax
mov ebx, eax
sar ebx, 0xd
imul ebx, ecx
mov edx, 0x8000
add ebx, edx
sar ebx, 0x10
imul ecx, ebx, 0x7ffffd8e
mov eax, 0x4000
add ecx, eax
shr ecx, 0xf
mov edi, 0x2055
add ecx, edi
mov eax, 0xffff
and ecx, eax
imul ecx, ebx
add ecx, ecx
mov eax, 0xe21d8000
add ecx, eax
sar ecx, 0x10
imul ecx, ebx
mov eax, 0x4000
add ecx, eax
shr ecx, 0xf
sub ecx, ebx
mov ebx, esi
sar ebx, 0x10
sar esi, 0xd
imul esi, ebx
add esi, edx
sar esi, 0x10
imul edx, esi, 0x7ffffd8e
mov ebx, 0x4000
add edx, ebx
shr edx, 0xf
add edx, edi
mov edi, 0xffff
and edx, edi
imul edx, esi
add edx, edx
mov eax, 0xe21d8000
add edx, eax
shl ecx, 0x10
sar edx, 0x10
imul edx, esi
add edx, ebx
shr edx, 0xf
sub edx, esi
mov eax, 0x80000000
add ecx, eax
shl edx, 0x10
add edx, eax
mov esi, ecx
sar esi, 0x10
mov edi, edx
sar edi, 0x10
mov eax, dword [ebp + 0xc]
shl eax, 7
add eax, 0xffffff80
mov dword [esp + 8], eax
bsr ebx, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x38], 0
cmp ecx, 1
mov eax, 0
sbb eax, eax
or eax, ebx
bsr ecx, edi
mov dword [esp + 0xc], edi
cmp edx, 1
mov ebx, 0
sbb ebx, ebx
or ebx, ecx
mov cl, 0xe
sub cl, al
mov dl, 0xe
sub dl, bl
sub ebx, eax
mov eax, esi
shl eax, cl
mov ecx, edx
shl edi, cl
movsx esi, di
imul ecx, esi, 0x7ffff5db
mov edx, 0x4000
add ecx, edx
mov edi, 0x4000
shr ecx, 0xf
mov edx, 0x1efc
add ecx, edx
mov edx, 0xffff
and ecx, edx
imul ecx, esi
movsx esi, ax
imul eax, esi, 0x7ffff5db
add eax, edi
shr eax, 0xf
mov edx, 0x1efc
add eax, edx
mov edx, 0xffff
and eax, edx
imul eax, esi
shl ebx, 0xb
add eax, edi
shr eax, 0xf
sub ebx, eax
add ecx, edi
mov edx, 0x4000
shr ecx, 0xf
add ebx, ecx
movsx ecx, word [esp + 8]
mov edi, dword [esp + 0x18]
movsx eax, bx
mov ebx, dword [ebp + 0xc]
imul eax, ecx
add eax, edx
sar eax, 0xf
mov ecx, dword [ebp + 0x28]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x20]
xorps xmm1, xmm1
cvtsi2ss xmm1, edi
movss xmm2, dword [0x102f5738]
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
mulss xmm1, xmm2
movss dword [esp + 0x18], xmm1
mulss xmm0, xmm2
mov ecx, dword [edx + 0x20]
mov dword [esp + 0xc], ecx
cmp ebx, 2
movss dword [esp + 0x34], xmm0
je 0x1012d075
mov esi, dword [esp + 0x10]
mov ecx, esi
sub ecx, eax
mov edi, ecx
shr edi, 0x1f
add edi, ecx
sar edi, 1
cmp esi, edi
cmovl edi, esi
xor eax, eax
test edi, edi
cmovle edi, eax
mov eax, dword [esp + 0xc]
sub eax, dword [esp + 0x1c]
sub esi, edi
mov dword [esp + 0xc], eax
mov dword [edx + 0x20], eax
mov dword [esp + 0x10], esi
cmp edi, esi
jl 0x1012ce1b
movss xmm0, dword [0x10299218]
mov ecx, edx
mov ebx, edx
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 8]
push esi
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
push eax
push edi
push dword [ebp + 0xc]
call fcn.1012bbb0
add esp, 0x20
mov dword [esp + 0x54], eax
mov eax, dword [ebx + 0x20]
mov ebx, dword [ebp + 0xc]
sub eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
test ecx, ecx
lea edx, [eax + edi - 0x18]
cmove edx, ecx
add eax, edi
cmp eax, 0x19
mov edi, 0
cmovl edx, edi
mov dword [esp + 0x2c], edx
mov ecx, dword [ebp + 0x14]
sar esi, cl
mov dword [esp + 8], esi
mov edx, dword [esp + 0x20]
mov eax, dword [edx]
mov dword [esp + 0x48], eax
mov esi, dword [edx + 0x18]
cmp ecx, 1
sete byte [esp + 0x4c]
mov eax, ebx
xor edx, edx
div ecx
test esi, esi
cmovg edi, esi
mov dword [esp + 0xc], edi
mov dword [esp + 0x40], esi
jg 0x1012ccf0
movss xmm0, dword [esp + 0x34]
mov ecx, dword [esp + 0xc]
mov edx, dword [ebp + 0x14]
sar edx, cl
mov dword [esp + 4], edx
shl eax, cl
xor edi, edi
test al, 1
jne 0x1012c873
test esi, esi
js 0x1012ca72
mov edx, eax
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x2c]
add edi, dword [esp + 0x10]
mov eax, dword [esp + 4]
cmp eax, 2
mov dword [esp + 0x14], edx
jge 0x1012cbc5
mov esi, dword [esp + 0x20]
mov ecx, esi
mov edx, dword [ebp + 8]
push dword [esp + 8]
push dword [ebp + 0x1c]
push 0
push eax
push edi
push ebx
call fcn.1012d830
add esp, 0x18
cmp dword [esi + 4], 0
je 0x1012c8f0
cmp dword [esp + 0x1c], 0
jne 0x1012cabe
mov ecx, dword [esp + 4]
mov dword [esp + 8], eax
mov edx, dword [esp + 0xc]
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x40], 0
jg 0x1012cd3a
mov ecx, edx
mov edx, dword [esp + 0x2c]
shl edx, cl
xor eax, eax
dec eax
mov ecx, edx
shl eax, cl
not eax
and eax, dword [esp + 8]
or eax, dword [esp + 0x54]
cmp dword [esi + 4], 0
mov ecx, dword [ebp + 8]
mov dword [esp + 0x10], eax
je 0x1012ca58
cmp ebx, 2
je 0x1012d290
xor eax, eax
lea edi, [esp + 0x7c]
mov dword [edi], eax
lea esi, [esp + 0x78]
mov dword [esi], eax
push esi
push edi
push ebx
push ecx
push dword [esp + 0x40]
push ecx
call fcn.10128010
add esp, 0x18
movss xmm1, dword [edi]
movss xmm0, dword [esp + 0x18]
mulss xmm1, xmm0
mulss xmm0, xmm0
addss xmm0, dword [esi]
addss xmm1, xmm1
movaps xmm3, xmm1
addss xmm3, xmm0
movss xmm2, dword [0x102fa4fc]
ucomiss xmm2, xmm3
ja 0x1012cf8d
subss xmm0, xmm1
ucomiss xmm2, xmm0
ja 0x1012cf8d
cvtss2sd xmm0, xmm0
xorps xmm2, xmm2
ucomisd xmm0, xmm2
jb 0x1012c982
xorps xmm1, xmm1
sqrtsd xmm1, xmm0
jmp 0x1012c9ab
sub esp, 8
movsd qword [esp], xmm0
movss dword [esp + 0x28], xmm3
call fcn.101460b0
xorps xmm2, xmm2
movss xmm3, dword [esp + 0x28]
add esp, 8
fstp qword [esp + 0x60]
movsd xmm1, qword [esp + 0x60]
mov esi, dword [esp + 0x30]
xorps xmm0, xmm0
cvtss2sd xmm0, xmm3
ucomisd xmm0, xmm2
jb 0x1012c9c5
xorps xmm2, xmm2
sqrtsd xmm2, xmm0
jmp 0x1012c9eb
sub esp, 8
movsd qword [esp], xmm0
movsd qword [esp + 0x28], xmm1
call fcn.101460b0
movsd xmm1, qword [esp + 0x28]
add esp, 8
fstp qword [esp + 0x58]
movsd xmm2, qword [esp + 0x58]
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x38]
movss xmm5, dword [esp + 0x18]
test ebx, ebx
jle 0x1012ca50
xorps xmm3, xmm3
cvtsd2ss xmm3, xmm1
movss xmm0, dword [0x10299218]
movaps xmm1, xmm0
divss xmm1, xmm3
cvtsd2ss xmm2, xmm2
divss xmm0, xmm2
xor eax, eax
nop dword [eax]
movss xmm2, dword [esi + eax*4]
mulss xmm2, xmm5
movss xmm3, dword [ecx + eax*4]
movaps xmm4, xmm2
subss xmm4, xmm3
mulss xmm4, xmm1
movss dword [esi + eax*4], xmm4
addss xmm2, xmm3
mulss xmm2, xmm0
movss dword [ecx + eax*4], xmm2
inc eax
cmp ebx, eax
jne 0x1012ca20
test edx, edx
jne 0x1012cf2e
mov ecx, dword [esp + 0x80]
xor ecx, ebp
call fcn.10130483
mov eax, dword [esp + 0x10]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
mov ecx, esi
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x48], 0
jne 0x1012d2ef
mov esi, dword [esp + 8]
mov edx, esi
mov ecx, dword [esp + 4]
shl edx, cl
or esi, edx
mov dword [esp + 8], esi
mov edx, eax
sar edx, 1
add ecx, ecx
mov dword [esp + 4], ecx
inc edi
test al, 2
jne 0x1012c875
mov esi, dword [esp + 0x14]
lea ecx, [esi + 1]
mov eax, edx
cmp esi, 0xffffffff
jge 0x1012c875
jmp 0x1012ca76
mov dword [esp + 0x4c], 0
movss xmm0, dword [0x102992a8]
mov edi, dword [esp + 4]
mov ecx, edi
mov dword [esp + 8], eax
mov dword [esp + 0x10], eax
sar ecx, 1
mov esi, dword [esp + 0x14]
add esi, esi
mov dword [esp + 0x2c], ecx
shr dword [esp + 8], cl
cmp edi, 2
mov dword [esp + 0x14], esi
jl 0x1012cb90
mov edx, edi
mov ecx, esi
sar ecx, 1
cmp ecx, 2
mov eax, 1
cmovl ecx, eax
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x2c]
cmp ecx, 2
cmovge eax, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 8]
lea edi, [eax + ecx*4]
mov dword [esp + 0x34], edi
lea ecx, [ecx*8]
shl edx, 2
and edx, 0xfffffff8
mov dword [esp + 4], edx
xor edx, edx
mov dword [esp + 0x48], edx
test esi, esi
mov edx, dword [esp + 4]
jle 0x1012cb79
mov edi, eax
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x44]
movss xmm1, dword [edi]
mulss xmm1, xmm0
movss xmm2, dword [ebx]
mulss xmm2, xmm0
movaps xmm3, xmm1
addss xmm3, xmm2
movss dword [edi], xmm3
subss xmm1, xmm2
movss dword [ebx], xmm1
add ebx, ecx
add edi, edx
dec esi
jne 0x1012cb4f
mov edx, dword [esp + 0x48]
inc edx
add dword [esp + 0x34], 4
add eax, 4
cmp edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x14]
jne 0x1012cb39
mov eax, dword [esp + 8]
or eax, dword [esp + 0x10]
mov edx, dword [esp + 0x4c]
inc edx
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x2c]
mov edi, ecx
mov dword [esp + 0x4c], edx
cmp edx, dword [esp + 0x1c]
mov ebx, dword [ebp + 0xc]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0xc]
je 0x1012c8cc
jmp 0x1012cad8
mov dword [esp + 0x2c], edi
xor ecx, ecx
mov dl, byte [esp + 0x4c]
mov cl, dl
mov edi, ecx
cmp dword [esp + 0x48], 0
mov ecx, dword [esp + 0x20]
jne 0x1012d39a
mov edx, dword [ebp + 8]
push dword [esp + 8]
push dword [ebp + 0x1c]
push 0
push eax
push dword [esp + 0x3c]
push ebx
mov esi, eax
call fcn.1012d830
add esp, 0x18
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
cmp dword [eax + 4], 0
je 0x1012d3cc
mov ecx, dword [esp + 0xc]
shl esi, cl
mov edx, dword [esp + 0x14]
sar edx, cl
mov ecx, dword [ebp + 8]
push edi
push esi
call fcn.1012e390
add esp, 8
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
jmp 0x1012c8b5
mov dword [esp + 8], edi
mov edi, ebx
shr edi, 0x1f
mov dword [esp + 0x40], ebx
add edi, ebx
sar edi, 1
lea eax, [edi + 1]
mov dword [esp + 0x38], eax
lea ebx, [eax + eax*2]
lea eax, [ebx + edi]
mov dword [esp + 0x1c], eax
push eax
push dword [esp + 8]
call fcn.10129480
add esp, 8
mov esi, eax
mov ecx, ebx
cmp eax, ebx
jge 0x1012cf21
mov edx, 0x55555556
mov eax, esi
imul edx
mov esi, edx
shr esi, 0x1f
add esi, edx
mov edx, ecx
mov eax, ecx
sub eax, edi
add eax, esi
mov ecx, edi
not ecx
add ecx, edx
add ecx, esi
cmp esi, edi
lea edx, [esi + esi*2]
lea edi, [esi + esi*2 + 3]
cmovg edi, eax
cmovg edx, ecx
push dword [esp + 0x1c]
push edi
push edx
push dword [esp + 0x10]
call fcn.101294f0
add esp, 0x10
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x40]
jmp 0x1012c56b
mov ebx, dword [ebp + 0xc]
xor eax, eax
dec eax
mov ecx, dword [ebp + 0x14]
shl eax, cl
not eax
and eax, dword [ebp + 0x28]
mov dword [esp + 8], eax
mov eax, 0xffffc000
mov edi, 0x7fff
xor ecx, ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x14], 0
jmp 0x1012c744
xor ecx, ecx
movss xmm0, dword [esp + 0x34]
cmp dword [esp + 0x48], 0
jne 0x1012d4cc
mov esi, dword [esp + 8]
mov edx, esi
and edx, 0xf
movzx edx, byte [edx + 0x102fa577]
sar esi, 4
movzx esi, byte [esi + 0x102fa577]
shl esi, 2
or esi, edx
mov dword [esp + 8], esi
inc ecx
cmp ecx, dword [esp + 0xc]
mov ebx, dword [ebp + 0xc]
mov esi, dword [esp + 0x40]
je 0x1012c856
jmp 0x1012ccf8
xor ecx, ecx
movss xmm0, dword [0x102992a8]
mov eax, dword [esp + 8]
movzx eax, byte [eax + 0x102fa587]
mov dword [esp + 8], eax
cmp ecx, 0x1f
je 0x1012ce02
mov eax, dword [ebp + 0xc]
sar eax, cl
mov dword [esp + 0x1c], eax
mov edx, eax
xor eax, eax
inc eax
mov esi, eax
shl esi, cl
mov edi, 2
shl edi, cl
sar edx, 1
cmp edx, 2
cmovl edx, eax
cmp esi, 2
cmovl esi, eax
mov dword [esp + 0x40], esi
add edx, edx
mov dword [esp + 4], edx
shl edi, 2
mov dword [esp + 0x34], edi
xor edx, edx
mov eax, dword [ebp + 8]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
cmp dword [esp + 0x1c], 2
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 0x34]
jl 0x1012cdf0
xor esi, esi
mov edx, dword [esp + 0x14]
movss xmm1, dword [edx]
lea eax, [esi + 1]
shl eax, cl
mulss xmm1, xmm0
add eax, dword [esp + 0x10]
movss xmm2, dword [edi + eax*4]
mulss xmm2, xmm0
movaps xmm3, xmm1
addss xmm3, xmm2
movss dword [edx], xmm3
subss xmm1, xmm2
movss dword [edi + eax*4], xmm1
mov eax, dword [esp + 4]
add esi, 2
add edx, ebx
cmp eax, esi
jne 0x1012cdb5
mov eax, dword [esp + 0x10]
inc eax
add dword [esp + 0x14], 4
cmp eax, dword [esp + 0x40]
mov edx, eax
jne 0x1012cd9d
inc ecx
mov edx, dword [esp + 0xc]
cmp ecx, edx
jne 0x1012cd44
mov ebx, dword [ebp + 0xc]
mov esi, dword [esp + 0x20]
jmp 0x1012c8db
mov eax, dword [esp + 8]
mov ecx, dword [ebp + 0x14]
sar eax, cl
mov ecx, edx
mov edx, dword [ebp + 8]
push eax
xor eax, eax
push eax
push eax
mov esi, dword [ebp + 0x1c]
push esi
push eax
push dword [ebp + 0x14]
mov esi, dword [esp + 0x28]
push esi
push ebx
call fcn.1012bbb0
add esp, 0x20
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x20]
sub eax, dword [esp + 0xc]
cmp dword [esp + 0x14], 0x4000
lea edx, [eax + esi]
lea eax, [eax + esi - 0x18]
mov esi, 0
cmove eax, esi
cmp edx, 0x19
cmovl eax, esi
add eax, edi
movss xmm0, dword [0x10299218]
mov esi, ecx
mov edx, dword [esp + 0x30]
push dword [esp + 8]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push eax
push ebx
call fcn.1012bbb0
mov ecx, dword [ebp + 8]
add esp, 0x20
or eax, dword [esp + 4]
mov dword [esp + 0x10], eax
xor eax, eax
cmp dword [esi + 4], eax
jne 0x1012c90e
jmp 0x1012ca58
xor ecx, ecx
mov eax, dword [esp + 0x20]
mov esi, 0
cmp dword [ebp + 0x10], 0x11
mov ebx, dword [ebp + 0xc]
jge 0x1012cef5
cmp dword [eax + 0x34], 0
mov eax, 0
cmove eax, esi
mov esi, eax
push dword [esp + 4]
call fcn.10129c50
add esp, 4
sub eax, edi
mov dword [esp + 0x1c], eax
sub dword [esp + 0x10], eax
jmp 0x1012ccc2
cmp dword [eax + 0x20], 0x11
mov esi, 0
jl 0x1012cecc
cmp dword [esp + 0x2c], 0
jne 0x1012d67a
push 2
push dword [esp + 8]
call fcn.101295d0
add esp, 8
mov esi, eax
mov eax, dword [esp + 0x20]
jmp 0x1012cecc
mov eax, dword [esp + 0x38]
add eax, eax
sub esi, eax
jmp 0x1012cc81
test ebx, ebx
jle 0x1012ca58
xor eax, eax
movaps xmm0, xmmword [0x102a8d80]
movss xmm1, dword [ecx + eax*4]
xorps xmm1, xmm0
movss dword [ecx + eax*4], xmm1
inc eax
cmp ebx, eax
jne 0x1012cf3f
jmp 0x1012ca58
xor eax, eax
dec eax
mov ecx, dword [ebp + 0x14]
shl eax, cl
not eax
shl eax, cl
and eax, dword [ebp + 0x28]
mov dword [esp + 8], eax
mov ecx, 0x7fff
mov dword [esp + 0x14], 0x4000
mov dword [esp + 0x38], 0
xor edi, edi
mov eax, 0x4000
mov ebx, dword [ebp + 0xc]
jmp 0x1012c744
lea eax, [ebx*4]
push eax
push dword [esp + 0x34]
mov esi, dword [ebp + 8]
push esi
call fcn.10132610
mov ecx, esi
add esp, 0xc
mov edx, dword [esp + 0x38]
jmp 0x1012ca50
mov edx, dword [esp + 0x30]
push dword [ebp + 0x20]
push dword [ebp + 8]
call fcn.1028e0e0
add esp, 8
xor eax, eax
inc eax
mov dword [esp + 0x10], eax
jmp 0x1012ca58
mov eax, dword [esp + 0x20]
push dword [eax + 0x2c]
push dword [ebp + 0xc]
push 1
push dword [ebp + 8]
push dword [esp + 0x40]
call fcn.1028e6a0
add esp, 0x14
mov esi, eax
push dword [esp + 4]
call fcn.10129c50
add esp, 4
mov dword [esp + 8], eax
cmp ebx, 1
je 0x1012d58a
mov edi, ebx
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x30]
test ecx, ecx
je 0x1012d389
cmp esi, 0x2001
mov edx, 0x7fff
mov eax, 0xffff8001
cmovge eax, edx
cdq
mov ebx, edi
idiv edi
imul esi, edi
add esi, eax
mov eax, esi
sar eax, 0xe
xor edx, edx
test esi, esi
cmovns edx, eax
lea eax, [edi - 1]
cmp edi, edx
cmovle edx, eax
not ecx
shr ecx, 0x1f
add ecx, edx
mov esi, ecx
mov ebx, edi
cmp dword [ebp + 0xc], 2
jg 0x1012d3d9
lea eax, [edi + 1]
push eax
push esi
push dword [esp + 0xc]
call fcn.10293470
add esp, 0xc
mov edi, dword [esp + 8]
jmp 0x1012c56b
xor eax, eax
mov ebx, dword [esp + 0x14]
test ebx, 0xffffbfff
sete al
lea ecx, [eax*8 - 8]
sub ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0xc]
cmp ebx, 0x2001
mov esi, dword [esp + 0x10]
lea eax, [esi + eax*8 - 8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov esi, eax
mov edi, dword [ebp + 8]
cmovge esi, edi
mov dword [edx + 0x20], ecx
cmovge edi, eax
mov dword [esp + 0x10], edi
test ebx, 0xffffbfff
je 0x1012d382
cmp dword [esp + 0x2c], 0
je 0x1012d4ad
movss xmm0, dword [esi]
movss xmm1, dword [esi + 4]
mov eax, dword [esp + 0x10]
mulss xmm0, dword [eax + 4]
mulss xmm1, dword [eax]
subss xmm0, xmm1
xorps xmm1, xmm1
xor ebx, ebx
ucomiss xmm1, xmm0
seta bl
push 1
push ebx
push dword [esp + 0xc]
call fcn.10293500
add esp, 0xc
lea eax, [ebx + ebx]
lea ecx, [ebx + ebx]
dec ecx
mov dword [esp + 4], ecx
xor ebx, ebx
inc ebx
sub ebx, eax
movss xmm0, dword [0x10299218]
mov edi, dword [esp + 0x20]
mov ecx, edi
mov edx, esi
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [esp + 0x20]
push 2
call fcn.1012bbb0
add esp, 0x20
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [esp + 4]
xorps xmm1, xmm1
cvtsi2ss xmm1, ebx
mulss xmm0, dword [esi + 4]
mov ecx, dword [esp + 0x10]
movss dword [ecx], xmm0
mulss xmm1, dword [esi]
mov edx, eax
movss dword [ecx + 4], xmm1
cmp dword [edi + 4], 0
je 0x1012d1ea
mov ecx, dword [esp + 0x30]
movss xmm0, dword [ecx]
movss xmm1, dword [esp + 0x18]
mulss xmm0, xmm1
movss dword [ecx], xmm0
movss xmm0, dword [ecx + 4]
mulss xmm0, xmm1
movss dword [ecx + 4], xmm0
mov eax, dword [ebp + 8]
movss xmm0, dword [eax]
movss xmm1, dword [esp + 0x34]
mulss xmm0, xmm1
movss dword [eax], xmm0
mulss xmm1, dword [eax + 4]
movss dword [eax + 4], xmm1
movss xmm1, dword [ecx]
movaps xmm2, xmm1
subss xmm2, xmm0
movss dword [ecx], xmm2
addss xmm1, dword [eax]
movss dword [eax], xmm1
movss xmm0, dword [ecx + 4]
movaps xmm1, xmm0
subss xmm1, dword [eax + 4]
movss dword [ecx + 4], xmm1
addss xmm0, dword [eax + 4]
movss dword [eax + 4], xmm0
mov ebx, dword [ebp + 0xc]
mov esi, dword [esp + 0x20]
mov eax, edx
jmp 0x1012c8f4
push 0x29d
push str....._third_partyopus_srccelt_bands.c
push 0x102fa658
call fcn.1028ab20
add esp, 0xc
jmp 0x1012c526
push 0x346
push str....._third_partyopus_srccelt_bands.c
push str.assertion_failed:_itheta_0
call fcn.1028ab20
add esp, 0xc
jmp 0x1012c577
mov eax, edi
mov edi, dword [esp + 8]
cmp ebx, esi
jbe 0x1012d2a0
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
movss xmm0, dword [edx + eax*4]
mov ecx, dword [esp + 0x18]
add eax, dword [ecx + 8]
movss dword [esp + 0xc], xmm0
mulss xmm0, xmm0
addss xmm0, dword [0x102fa4f8]
movss xmm1, dword [edx + eax*4]
movss dword [esp + 0x18], xmm1
mulss xmm1, xmm1
addss xmm1, xmm0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm0, xmm1
jb 0x1012d429
sqrtsd xmm0, xmm0
jmp 0x1012d443
cmp dword [esp + 0x38], 0
je 0x1012ca58
jmp 0x1012cf36
cmp dword [ebp + 0xc], 0
mov edi, eax
jle 0x1012c58d
xor eax, eax
movss xmm0, dword [0x102992a8]
mov edx, dword [esp + 0x30]
movss xmm1, dword [edx + eax*4]
mulss xmm1, xmm0
mov ecx, dword [ebp + 8]
movss xmm2, dword [ecx + eax*4]
mulss xmm2, xmm0
movaps xmm3, xmm1
addss xmm3, xmm2
movss dword [edx + eax*4], xmm3
subss xmm2, xmm1
movss dword [ecx + eax*4], xmm2
inc eax
cmp dword [ebp + 0xc], eax
jne 0x1012d2ba
jmp 0x1012c58d
cmp dword [esp + 4], 0
jle 0x1012ca85
mov ecx, eax
sar ecx, 1
xor edx, edx
inc edx
cmp ecx, 2
cmovge edx, ecx
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 4]
lea ecx, [ecx*8]
mov dword [esp + 0x1c], ecx
xor edx, edx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x3c], ecx
cmp eax, 2
jl 0x1012d364
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
movss xmm0, dword [0x102992a8]
movss xmm1, dword [ebx]
mulss xmm1, xmm0
mov esi, dword [esp + 4]
mulss xmm0, dword [ebx + esi*4]
movaps xmm2, xmm1
addss xmm2, xmm0
movss dword [ebx], xmm2
subss xmm1, xmm0
movss dword [ebx + esi*4], xmm1
add ebx, dword [esp + 0x1c]
dec ecx
jne 0x1012d330
mov ecx, edx
inc ecx
add dword [esp + 0x3c], 4
mov edx, ecx
cmp ecx, dword [esp + 4]
mov ebx, dword [ebp + 0xc]
movss xmm0, dword [esp + 0x34]
jne 0x1012d323
jmp 0x1012ca85
xor ebx, ebx
jmp 0x1012d106
imul esi, edi
add esi, 0x2000
sar esi, 0xe
jmp 0x1012d04f
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
shl eax, cl
mov edx, dword [esp + 0x14]
sar edx, cl
mov ecx, dword [ebp + 8]
mov esi, edi
push edi
push eax
call fcn.1012d6d0
movss xmm0, dword [esp + 0x3c]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x28]
add esp, 8
jmp 0x1012cbe2
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
jmp 0x1012c8f0
mov eax, edi
shr eax, 0x1f
add eax, edi
sar eax, 1
lea ecx, [eax + eax*2]
mov dword [esp + 0x1c], ecx
lea edx, [eax + eax*2]
add edx, 3
sub edx, eax
add edx, esi
mov edi, eax
not edi
add edi, ecx
add edi, 3
add edi, esi
cmp esi, eax
lea ecx, [esi + esi*2 + 3]
cmovg ecx, edx
mov edx, dword [esp + 0x1c]
lea eax, [eax + edx + 3]
lea edx, [esi + esi*2]
cmovg edx, edi
push eax
push ecx
push edx
push dword [esp + 0x10]
call fcn.10293390
add esp, 0x10
jmp 0x1012d06c
sub esp, 8
movsd qword [esp], xmm0
call fcn.101460b0
add esp, 8
fstp qword [esp + 0x68]
movsd xmm0, qword [esp + 0x68]
cmp dword [ebp + 0xc], 0
jle 0x1012d4c2
cvtsd2ss xmm0, xmm0
addss xmm0, dword [0x102fa4f8]
movss xmm1, dword [esp + 0xc]
divss xmm1, xmm0
movss dword [esp + 0xc], xmm1
movss xmm1, dword [esp + 0x18]
divss xmm1, xmm0
movss dword [esp + 0x18], xmm1
xor eax, eax
mov edx, dword [esp + 0x30]
movss xmm0, dword [edx + eax*4]
mulss xmm0, dword [esp + 0xc]
mov ecx, dword [ebp + 8]
movss xmm1, dword [ecx + eax*4]
mulss xmm1, dword [esp + 0x18]
addss xmm1, xmm0
movss dword [edx + eax*4], xmm1
inc eax
cmp dword [ebp + 0xc], eax
jne 0x1012d47b
mov ebx, dword [ebp + 0xc]
xor esi, esi
jmp 0x1012ceda
push 1
push dword [esp + 8]
call fcn.10129980
add esp, 8
mov ebx, eax
jmp 0x1012d106
xor esi, esi
mov ebx, dword [ebp + 0xc]
jmp 0x1012ceda
cmp ecx, 0x1f
je 0x1012cd03
mov edx, dword [ebp + 0xc]
sar edx, cl
mov dword [esp + 0x44], edx
mov esi, edx
xor edx, edx
inc edx
mov edi, edx
shl edi, cl
mov ebx, 2
shl ebx, cl
sar esi, 1
cmp esi, 2
cmovl esi, edx
cmp edi, 2
cmovl edi, edx
mov dword [esp + 0x50], edi
add esi, esi
mov dword [esp + 0x14], esi
shl ebx, 2
mov dword [esp + 0x1c], ebx
mov dword [esp + 4], 0
mov edx, dword [ebp + 8]
mov dword [esp + 0x3c], edx
cmp dword [esp + 0x44], 2
jl 0x1012d56b
xor edi, edi
mov esi, dword [esp + 0x3c]
movss xmm0, dword [0x102992a8]
movss xmm1, dword [esi]
lea edx, [edi + 1]
shl edx, cl
mulss xmm1, xmm0
add edx, dword [esp + 4]
mov ebx, dword [ebp + 8]
mulss xmm0, dword [ebx + edx*4]
movaps xmm2, xmm1
addss xmm2, xmm0
movss dword [esi], xmm2
subss xmm1, xmm0
movss dword [ebx + edx*4], xmm1
add edi, 2
add esi, dword [esp + 0x1c]
cmp dword [esp + 0x14], edi
jne 0x1012d529
mov edx, dword [esp + 4]
inc edx
add dword [esp + 0x3c], 4
mov dword [esp + 4], edx
cmp edx, dword [esp + 0x50]
movss xmm0, dword [esp + 0x34]
jne 0x1012d51c
jmp 0x1012cd03
cmp esi, 0x2001
jl 0x1012d5a0
mov eax, dword [esp + 0x20]
cmp dword [eax + 0x34], 0
je 0x1012d691
xor ebx, ebx
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
movss xmm0, dword [edx + eax*4]
mov ecx, dword [esp + 0x18]
add eax, dword [ecx + 8]
movss dword [esp + 0xc], xmm0
mulss xmm0, xmm0
addss xmm0, dword [0x102fa4f8]
movss xmm1, dword [edx + eax*4]
movss dword [esp + 0x18], xmm1
mulss xmm1, xmm1
addss xmm1, xmm0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm0, xmm1
jb 0x1012d5f1
sqrtsd xmm0, xmm0
jmp 0x1012d60b
sub esp, 8
movsd qword [esp], xmm0
call fcn.101460b0
add esp, 8
fstp qword [esp + 0x70]
movsd xmm0, qword [esp + 0x70]
cmp dword [ebp + 0xc], 0
jle 0x1012d66b
cvtsd2ss xmm0, xmm0
addss xmm0, dword [0x102fa4f8]
movss xmm1, dword [esp + 0xc]
divss xmm1, xmm0
movss dword [esp + 0xc], xmm1
movss xmm1, dword [esp + 0x18]
divss xmm1, xmm0
movss dword [esp + 0x18], xmm1
xor eax, eax
mov edx, dword [esp + 0x30]
movss xmm0, dword [edx + eax*4]
mulss xmm0, dword [esp + 0xc]
mov ecx, dword [ebp + 8]
movss xmm1, dword [ecx + eax*4]
mulss xmm1, dword [esp + 0x18]
addss xmm1, xmm0
movss dword [edx + eax*4], xmm1
inc eax
cmp dword [ebp + 0xc], eax
jne 0x1012d643
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 8]
mov ecx, ebx
jmp 0x1012cebe
movzx esi, cl
push 2
push esi
push dword [esp + 0xc]
call fcn.10293410
add esp, 0xc
jmp 0x1012cf1b
mov bl, 1
cmp dword [ebp + 0xc], 0
jle 0x1012d5a2
xor eax, eax
movaps xmm0, xmmword [0x102a8d80]
mov ecx, dword [ebp + 8]
movss xmm1, dword [ecx + eax*4]
xorps xmm1, xmm0
movss dword [ecx + eax*4], xmm1
inc eax
cmp dword [ebp + 0xc], eax
jne 0x1012d6a6
jmp 0x1012d5a2