Function at 0x6fecc440
Capabilities:
Encode data using xor
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
xor edi, edi
push esi
push ebx
sub esp, 0x25c
mov ebx, dword [esp + 0x270]
mov eax, dword [esp + 0x274]
mov dword [esp + 0x74], edi
lea edi, [ecx + 0xbb0]
mov dword [esp + 0x30], ecx
mov ebp, dword [ebx + 8]
mov esi, dword [ebx + 4]
lea edx, [eax*4]
shl eax, 5
sub eax, edx
xor edx, edx
mov dword [esp + 0x60], edi
add esi, eax
add eax, ebp
mov dword [esi], 0
mov ebx, eax
mov dword [esi + 4], 0xffffffff
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esp + 0x68], eax
mov dword [eax], 0
mov dword [eax + 4], 0xffffffff
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x18], 0
mov eax, ecx
mov ecx, edi
mov edi, eax
add eax, 0xa0
mov dword [esp], ecx
mov ecx, eax
mov ebp, eax
mov dword [esp + 0x70], edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x64], esi
call fcn.6fd5bd80
mov ecx, ebp
sub esp, 4
call fcn.6fd5ef70
mov eax, 1
mov ecx, ebp
mov dword [esp + 4], eax
mov dword [esp], esi
xor esi, esi
call fcn.6fd61860
mov eax, 2
mov ecx, ebp
xor ebp, ebp
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ebx
xor ebx, ebx
call fcn.6fd61860
mov edx, dword [edi + 0x16c]
mov eax, dword [edi + 0x168]
shrd eax, edx, 0xf
fld qword [edi + 0xf78]
xor edi, edi
sub esp, 8
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0x14], ebx
fild qword [esp + 0x10]
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x58], ebp
mov dword [esp + 0x5c], eax
fmul st(1)
fstp qword [esp + 0x48]
cmp dword [esp + 0x2c], 4
je 0x6fecce16
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x40]
mov esi, dword [ebx + 8]
mov ecx, dword [ebx + 4]
lea eax, [edi + 0x298]
mov dword [esp + 0x38], esi
add esi, eax
add eax, ecx
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x24], eax
mov eax, 1
mov dword [esp + 0x1c], eax
mov eax, dword [ebx]
mov dword [esp + 0x44], ecx
add edi, eax
mov dword [esp + 0x50], edi
jmp 0x6fecc5e0
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x1c]
mov ebx, dword [eax + ebx*4 + 0x294]
test ebx, ebx
je 0x6fecc7ef
mov ebp, dword [esi]
test ebp, ebp
js 0x6feccd40
lea eax, [ebx + ebp*2]
lea ecx, [ebx + ebx]
cdq
idiv ecx
cmp eax, 0xfffffffa
mov edx, 0xfffffff9
jl 0x6fecc61f
cmp eax, 7
mov edx, 7
cmovle edx, eax
cmp dword [esp + 0x1c], 2
jg 0x6feccd70
test edx, edx
mov eax, 0
cmovns eax, edx
test eax, eax
je 0x6feccd82
neg ebp
xor edi, edi
add ebp, ebp
fld st(0)
lea esi, [esi]
lea edi, [edi]
mov ecx, eax
sar ecx, 0x1f
mov edx, ecx
xor edx, eax
sub edx, ecx
cmp edx, 7
lea ecx, [edx + 1]
cmove ecx, edx
mov edx, eax
mov dword [esp + 0x10], ecx
imul edx, ebx
fild dword [esp + 0x10]
lea ecx, [eax - 1]
add edx, ebp
imul edx, eax
fmul st(2)
mov dword [esp + 0x10], edx
lea edx, [eax + 1]
fild dword [esp + 0x10]
faddp st(1)
fxch st(1)
fcomi st(1)
fxch st(1)
cmova edi, eax
fcomi st(1)
fcmovnb st(0), st(1)
fstp st(1)
test eax, eax
mov eax, edx
cmovg eax, ecx
test eax, eax
jne 0x6fecc650
fstp st(0)
imul ebx, edi
mov eax, edi
mov edi, dword [esp + 0x28]
mov dword [edi], eax
mov edx, dword [esi]
neg edx
lea edx, [ebx + edx*2]
imul eax, edx
cdq
add dword [esp + 0x20], eax
adc dword [esp + 0x24], edx
add esi, 4
inc dword [esp + 0x1c]
add dword [esp + 0x28], 4
mov eax, dword [esp + 0x1c]
cmp eax, 5
jne 0x6fecc5e0
mov eax, dword [esp + 0x20]
xor ebp, ebp
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x7c], edx
add eax, 0x52c
add esi, eax
add eax, edi
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x24], eax
mov eax, 1
mov dword [esp + 0x1c], eax
lea esi, [esi]
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x1c]
mov ebx, dword [eax + ebx*4 + 0x528]
test ebx, ebx
je 0x6fecc808
mov ebp, dword [esi]
test ebp, ebp
js 0x6feccd21
lea eax, [ebx + ebp*2]
lea ecx, [ebx + ebx]
cdq
idiv ecx
cmp eax, 0xfffffffa
mov edx, 0xfffffff9
jl 0x6fecc75f
cmp eax, 7
mov edx, 7
cmovle edx, eax
cmp dword [esp + 0x1c], 2
jg 0x6feccd55
test edx, edx
mov eax, 0
cmovns eax, edx
test eax, eax
je 0x6feccd67
neg ebp
xor ecx, ecx
add ebp, ebp
fld st(0)
lea esi, [esi]
lea edi, [edi]
mov edi, eax
sar edi, 0x1f
mov edx, edi
xor edx, eax
sub edx, edi
cmp edx, 7
lea edi, [edx + 1]
cmove edi, edx
mov edx, eax
mov dword [esp + 0x10], edi
imul edx, ebx
fild dword [esp + 0x10]
lea edi, [eax - 1]
add edx, ebp
imul edx, eax
fmul st(2)
mov dword [esp + 0x10], edx
lea edx, [eax + 1]
fild dword [esp + 0x10]
faddp st(1)
fxch st(1)
fcomi st(1)
fxch st(1)
cmova ecx, eax
fcomi st(1)
fcmovnb st(0), st(1)
fstp st(1)
test eax, eax
mov eax, edx
cmovg eax, edi
test eax, eax
jne 0x6fecc790
fstp st(0)
imul ebx, ecx
mov eax, dword [esp + 0x28]
mov dword [eax], ecx
jmp 0x6fecc81c
mov eax, dword [esp + 0x28]
xor ebx, ebx
mov dword [esi], 0
mov dword [eax], 0
xor eax, eax
jmp 0x6fecc6af
mov eax, dword [esp + 0x28]
xor ebx, ebx
xor ecx, ecx
mov dword [esi], 0
mov dword [eax], 0
mov eax, dword [esi]
neg eax
lea eax, [ebx + eax*2]
imul ecx, eax
mov ebx, ecx
sar ebx, 0x1f
add dword [esp + 0x20], ecx
adc dword [esp + 0x24], ebx
add esi, 4
inc dword [esp + 0x1c]
add dword [esp + 0x28], 4
mov eax, dword [esp + 0x1c]
cmp eax, 5
jne 0x6fecc720
fstp st(0)
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x34]
mov dword [esp], eax
mov ecx, esi
call fcn.6fd5bd80
mov ecx, esi
xor esi, esi
sub esp, 4
call fcn.6fd5ef70
mov eax, dword [esp + 0x2c]
mov ecx, 0x294
mov dword [esp + 0x10], esi
lea ebx, [esp + 0x8c]
mov dword [esp + 0x1c], ecx
mov esi, eax
shl esi, 5
add esi, eax
mov eax, dword [esp + 0x2c]
mov dword [ebx], 0
cmp eax, 4
mov dword [ebx + 4], eax
je 0x6fecd0a9
mov edx, 4
mov ecx, 3
mov dword [esp + 0x28], edx
mov edi, 2
mov ebp, 1
xor eax, eax
mov edx, dword [esp + 0x30]
add ebp, esi
add edi, esi
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x1c]
add ecx, esi
add eax, dword [edx + 4]
mov edx, dword [esp + 0x28]
mov ebp, dword [eax + ebp*4]
add edx, esi
mov dword [ebx + 0xc], ebp
mov edi, dword [eax + edi*4]
mov dword [ebx + 0x10], edi
mov edi, dword [esp + 0x10]
mov ecx, dword [eax + ecx*4]
inc edi
mov dword [ebx + 0x14], ecx
mov ecx, dword [esp + 0x34]
mov eax, dword [eax + edx*4]
mov dword [ebx + 0x18], eax
mov dword [esp], ebx
add ebx, 0x1c
mov dword [esp + 4], edi
call fcn.6fd61860
mov eax, 1
sub esp, 8
add dword [esp + 0x1c], 0x294
cmp edi, 2
mov dword [esp + 0x10], eax
jne 0x6fecc88b
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
add ecx, dword [esp + 0x78]
mov ebx, dword [esp + 0x24]
fld qword [eax + 0xf78]
mov edx, dword [eax + 0x16c]
mov eax, dword [eax + 0x168]
adc ebx, dword [esp + 0x7c]
xor edi, edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebx
shrd eax, edx, 0xf
fild qword [esp + 0x10]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edi
fild qword [esp + 0x10]
fmul st(2)
faddp st(1)
fld qword [esp + 0x48]
fcompi st(1)
jbe 0x6fecca16
mov esi, dword [esp + 0x64]
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], ebx
mov dword [esi], eax
mov eax, dword [esp + 0x90]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x94]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x98]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x9c]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0xa0]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0xa4]
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0xa8]
mov esi, dword [esp + 0x68]
mov dword [esi], eax
mov eax, dword [esp + 0xac]
mov dword [esi + 4], eax
mov eax, dword [esp + 0xb0]
mov dword [esi + 8], eax
mov eax, dword [esp + 0xb4]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0xb8]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0xbc]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0xc0]
mov dword [esi + 0x18], eax
jmp 0x6fecca18
fstp st(0)
inc dword [esp + 0x2c]
add dword [esp + 0x40], 0x84
mov eax, dword [esp + 0x2c]
cmp eax, 5
jne 0x6fecc585
fild qword [esp + 0x58]
mov ebp, 1
xor edi, edi
mov eax, dword [esp + 0x284]
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x60]
fdivrp st(1)
mov ecx, esi
fadd qword [eax]
fstp qword [eax]
mov dword [esp], ebx
call fcn.6fd5bd80
mov ecx, esi
sub esp, 4
mov eax, dword [esp + 0x64]
mov dword [esp + 4], ebp
mov dword [esp], eax
call fcn.6fd61860
mov eax, 2
mov ecx, esi
sub esp, 8
mov dword [esp + 4], eax
mov eax, dword [esp + 0x68]
mov dword [esp], eax
call fcn.6fd61860
mov ecx, ebx
sub esp, 8
mov dword [esp], esi
call fcn.6fd5bd80
sub esp, 4
mov eax, dword [esp + 0x27c]
fldz
mov byte [esp + 0x1c], 0
mov dword [esp + 0x28], edi
not eax
shr eax, 0x1f
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x27c]
lea edx, [eax*4]
shl eax, 5
sub eax, edx
mov edx, dword [esp + 0x278]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x278]
shl edx, 5
shl eax, 2
sub edx, eax
mov eax, dword [esp + 0x280]
mov dword [esp + 0x6c], edx
add eax, 0x38
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x278]
not eax
shr eax, 0x1f
mov dword [esp + 0x68], eax
mov eax, edi
xor eax, 1
mov edx, dword [esp + 0x40]
and al, byte [esp + 0x58]
mov byte [esp + 0x34], al
movzx eax, byte [esp + 0x1c]
and al, byte [esp + 0x68]
mov byte [esp + 0x60], al
xor eax, eax
inc eax
cmp byte [esp + 0x34], 0
mov dword [esp + 0x10], eax
je 0x6feccd89
mov esi, dword [esp + 0x270]
mov ebx, eax
mov eax, dword [esp + 0x64]
mov edi, dword [esi + ebx*4]
add eax, edi
test eax, eax
je 0x6feccd90
mov ecx, dword [eax + 4]
test ecx, ecx
js 0x6feccded
cmp ecx, 4
je 0x6feccdf4
mov edi, 3
mov esi, 4
mov ebp, 2
mov dword [esp + 0x44], edi
mov edi, 1
mov dword [esp + 0x48], esi
mov dword [esp + 0x38], ebp
mov esi, dword [esp + 0x10]
lea esi, [esi + esi*4]
mov ebx, esi
shl ebx, 5
lea ebp, [esi + ebx]
mov ebx, dword [esp + 0x30]
shl ebp, 2
mov esi, dword [ebx + 8]
add esi, ebp
add ebp, dword [ebx]
mov ebx, ecx
shl ebx, 5
add ebx, ecx
mov ecx, edi
add ecx, ebx
mov dword [esp + 0x20], esi
mov esi, dword [esi + ecx*4]
mov dword [esp + 0x2c], ebx
mov edi, dword [ebp + ecx*4]
neg esi
mov ebx, esi
mov esi, dword [eax + 0xc]
imul esi, edi
mov edi, dword [esp + 0x20]
lea ecx, [esi + ebx*2]
mov ebx, dword [eax + 0xc]
mov esi, dword [esp + 0x2c]
imul ecx, ebx
mov dword [esp + 0x50], ecx
sar ecx, 0x1f
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x38]
add ecx, esi
mov esi, dword [edi + ecx*4]
neg esi
mov ebx, esi
mov esi, dword [eax + 0x10]
imul esi, dword [ebp + ecx*4]
lea ecx, [esi + ebx*2]
mov ebx, dword [eax + 0x10]
mov esi, dword [esp + 0x44]
imul ecx, ebx
mov ebx, ecx
sar ebx, 0x1f
add ecx, dword [esp + 0x50]
adc ebx, dword [esp + 0x54]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x3c], ebx
add esi, ecx
mov ecx, esi
mov esi, dword [edi + ecx*4]
mov edi, dword [ebp + ecx*4]
neg esi
mov ebx, esi
mov esi, dword [eax + 0x14]
imul esi, edi
lea ecx, [esi + ebx*2]
mov ebx, dword [eax + 0x14]
imul ecx, ebx
mov ebx, ecx
mov esi, ecx
sar ebx, 0x1f
add esi, dword [esp + 0x38]
mov edi, ebx
adc edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x48]
add ebx, ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx + ebx*4]
neg ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x18]
imul ecx, dword [ebp + ebx*4]
mov ebx, ecx
mov ecx, dword [esp + 0x20]
lea ecx, [ebx + ecx*2]
mov ebx, dword [eax + 0x18]
imul ecx, ebx
mov ebx, ecx
sar ebx, 0x1f
add ecx, esi
adc ebx, edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ebx
fild qword [esp + 0x20]
mov ecx, dword [eax]
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x284]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
cmp esi, 1
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov ecx, dword [eax + 0xc]
mov dword [edx + 0xc], ecx
mov ecx, dword [eax + 0x10]
mov dword [edx + 0x10], ecx
mov ecx, dword [eax + 0x14]
mov dword [edx + 0x14], ecx
mov eax, dword [eax + 0x18]
mov dword [edx + 0x18], eax
sbb eax, eax
add eax, 2
mov dword [edx], eax
mov eax, dword [esp + 0x30]
fdiv qword [eax + 0xf78]
mov eax, esi
fadd qword [ebx + esi*8 + 8]
fstp qword [ebx + eax*8 + 8]
add edx, 0x38
mov eax, 1
cmp dword [esp + 0x10], 2
jne 0x6feccb24
inc byte [esp + 0x1c]
add dword [esp + 0x40], 0x1c
movzx eax, byte [esp + 0x1c]
and al, 1
cmp dword [esp + 0x28], 1
mov byte [esp + 0x1c], al
je 0x6feccdde
mov edx, 1
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
jmp 0x6feccb06
mov eax, ebp
mov ecx, ebx
neg eax
neg ecx
lea eax, [ebx + eax*2]
add ecx, ecx
cdq
idiv ecx
jmp 0x6fecc74a
mov eax, ebp
mov ecx, ebx
neg eax
neg ecx
lea eax, [ebx + eax*2]
add ecx, ecx
cdq
idiv ecx
jmp 0x6fecc60a
test edx, edx
mov eax, 0
cmovle eax, edx
test eax, eax
jne 0x6fecc77c
xor ecx, ecx
xor ebx, ebx
jmp 0x6fecc7e7
test edx, edx
mov eax, 0
cmovle eax, edx
test eax, eax
jne 0x6fecc63c
xor ebx, ebx
jmp 0x6fecc6a9
cmp byte [esp + 0x60], 0
jne 0x6feccdc5
mov dword [edx], 0
mov dword [edx + 4], 0xffffffff
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
jmp 0x6fecccdd
mov esi, dword [esp + 0x270]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esi + ebx*4]
add eax, ecx
jmp 0x6feccb46
fstp st(0)
add esp, 0x25c
pop ebx
pop esi
pop edi
pop ebp
ret 0x18
fld st(0)
jmp 0x6feccc8c
mov ebx, dword [eax + 8]
lea esi, [ebx + 1]
mov edi, esi
lea esi, [ebx + 2]
mov dword [esp + 0x38], esi
lea esi, [ebx + 3]
mov dword [esp + 0x44], esi
lea esi, [ebx + 4]
mov dword [esp + 0x48], esi
jmp 0x6feccb82
mov eax, dword [esp + 0x30]
fld st(0)
xor ecx, ecx
mov esi, dword [eax + 4]
add esi, 0x294
mov dword [esp + 0x10], esi
mov esi, dword [eax + 8]
mov eax, dword [eax]
add esi, 0x294
add eax, 0x294
mov dword [esp + 0x1c], esi
mov dword [esp + 0x28], eax
lea ebp, [ecx + 1]
mov ecx, 1
mov eax, dword [esp + 0x28]
fst qword [esp + ecx*8 + 0x140]
mov ebx, dword [eax + ecx*4 + 0x210]
xor eax, eax
mov dword [esp + ecx*4 + 0xc0], eax
test ebx, ebx
je 0x6fecd08a
mov eax, dword [esp + 0x1c]
mov esi, dword [eax + ecx*4 + 0x210]
test esi, esi
js 0x6fecd0c6
lea eax, [ebx + esi*2]
lea edi, [ebx + ebx]
cdq
idiv edi
cmp eax, 0xfffffffa
jl 0x6fecd080
cmp eax, 7
mov edi, 7
cmovg eax, edi
test eax, eax
je 0x6feccf1a
neg esi
mov edx, eax
add esi, esi
xor eax, eax
mov dword [esp + 0x38], esi
fld st(0)
mov edi, edx
sar edi, 0x1f
mov esi, edi
xor esi, edx
sub esi, edi
cmp esi, 7
lea edi, [esi + 2]
mov esi, 8
cmove edi, esi
mov esi, edx
mov dword [esp + 0x20], edi
imul esi, ebx
mov edi, dword [esp + 0x38]
fild dword [esp + 0x20]
add esi, edi
imul esi, edx
fmul st(2)
mov dword [esp + 0x20], esi
fild dword [esp + 0x20]
faddp st(1)
fxch st(1)
fcomi st(1)
jbe 0x6feccf05
fstp st(0)
fst qword [esp + ecx*8 + 0x140]
mov eax, edx
mov dword [esp + ecx*4 + 0xc0], esi
jmp 0x6feccf07
fstp st(1)
test edx, edx
lea esi, [edx - 1]
lea edi, [edx + 1]
cmovle esi, edi
test esi, esi
mov edx, esi
jne 0x6fecceb0
fstp st(0)
mov esi, dword [esp + 0x10]
mov dword [esi + ecx*4 + 0x210], eax
inc ecx
cmp ecx, 0x21
jne 0x6fecce4b
fstp st(0)
fld qword [esp + 0x148]
xor edx, edx
xor ecx, ecx
fld qword [esp + 0x150]
xor eax, eax
mov esi, 0x1d
fld qword [esp + 0x158]
mov dword [esp + ebp*8 + 0x70], edx
fld qword [str.v_w0]
fxch st(2)
lea edx, [esp + 0x160]
mov dword [esp + ebp*8 + 0x74], ecx
jmp 0x6feccf6e
fxch st(2)
fxch st(3)
fadd st(1)
lea ecx, [eax + 1]
fld st(0)
fxch st(4)
faddp st(1)
fld qword [edx]
fadd st(1), st(0)
fxch st(3)
fcomi st(1)
jbe 0x6feccf8b
fstp st(0)
mov dword [esp + ebp*4 + 0x6c], eax
jmp 0x6feccf8d
fstp st(1)
fld qword [edx + 8]
lea edi, [eax + 2]
fadd st(4), st(0)
fxch st(4)
fadd st(3)
fxch st(1)
fcomi st(1)
jbe 0x6feccfa7
fstp st(0)
mov dword [esp + ebp*4 + 0x6c], ecx
jmp 0x6feccfa9
fstp st(1)
fld qword [edx + 0x10]
lea ebx, [eax + 3]
fadd st(2), st(0)
fxch st(2)
mov eax, ebx
fadd st(3)
fadd st(4)
fxch st(1)
fcomi st(1)
jbe 0x6feccfc7
fstp st(0)
mov dword [esp + ebp*4 + 0x6c], edi
jmp 0x6feccfc9
fstp st(1)
mov ecx, esi
add edx, 0x18
sub ecx, ebx
cmp ebx, 0x1b
jne 0x6feccf6a
fstp st(3)
fstp st(0)
fstp st(0)
lea eax, [esp + 0x220]
add ecx, 0x1b
mov edx, 0x1b
fld qword [eax + 8]
lea ebx, [edx + 1]
fadd qword [eax]
fadd qword [eax + 0x10]
fadd qword [eax + 0x18]
fxch st(1)
fcomi st(1)
jbe 0x6fecd006
fstp st(0)
mov dword [esp + ebp*4 + 0x6c], edx
jmp 0x6fecd008
fstp st(1)
add eax, 8
cmp ebx, ecx
mov edx, ebx
jne 0x6feccfea
fstp st(0)
mov esi, dword [esp + ebp*4 + 0x6c]
mov ecx, dword [esp + esi*4 + 0xc4]
mov eax, dword [esp + esi*4 + 0xc8]
mov ebx, ecx
cdq
sar ebx, 0x1f
add ecx, eax
mov eax, dword [esp + esi*4 + 0xcc]
adc ebx, edx
cdq
add eax, ecx
mov ecx, dword [esp + esi*4 + 0xd0]
adc edx, ebx
mov ebx, ecx
sar ebx, 0x1f
add eax, ecx
adc edx, ebx
add dword [esp + 0x10], 0x294
add dword [esp + 0x1c], 0x294
add dword [esp + 0x28], 0x294
cmp ebp, 2
mov dword [esp + ebp*8 + 0x70], eax
mov dword [esp + ebp*8 + 0x74], edx
je 0x6fecd0db
mov ecx, 1
fld st(0)
jmp 0x6fecce43
mov eax, 0xfffffff9
jmp 0x6feccea2
mov eax, dword [esp + 0x1c]
xor ebx, ebx
xor esi, esi
mov dword [eax + ecx*4 + 0x210], ebx
mov eax, dword [esp + 0x10]
mov dword [eax + ecx*4 + 0x210], esi
jmp 0x6feccf25
mov eax, dword [esp + 0x10]
mov eax, dword [esp + eax*4 + 0x70]
lea edx, [eax + 4]
lea ebp, [eax + 1]
lea edi, [eax + 2]
lea ecx, [eax + 3]
mov dword [esp + 0x28], edx
jmp 0x6fecc8bb
mov eax, esi
mov edi, ebx
neg eax
neg edi
lea eax, [ebx + eax*2]
add edi, edi
cdq
idiv edi
jmp 0x6fecce8a
fstp st(0)
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
jmp 0x6fecc84e