Function at 0x6089d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
lea esp, [esp - 0x6c]
push ebx
push esi
push edi
mov dword [ebp - 0x6c], eax
mov dword [ebp - 4], edx
mov dword [ebp - 0x60], ecx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x64], eax
mov al, byte [ebp + 8]
mov byte [ebp - 0x68], al
mov eax, dword [ebp - 4]
call fcn.0040d430
mov eax, 1
lea edx, [ebp - 0x34]
lea ecx, [ebp - 0x1c]
call fcn.0040e130
call fcn.0040fdf0
push eax
test eax, eax
jne 0x608fd9
mov edx, dword [ebp - 0x64]
lea eax, [edx + 1]
cmp eax, 4
je 0x608a46
mov ecx, str.Expecting_4_points
mov eax, 0x6ce090
mov edx, 1
call fcn.0044f640
mov ebx, eax
mov eax, 0x608a20
mov ecx, ebp
mov edx, eax
mov eax, ebx
call fcn.0040e2c0
mov dl, byte [ebp - 0x68]
mov eax, dword [ebp - 0x6c]
mov byte [eax + 0x154], dl
mov eax, dword [ebp - 0x6c]
lea ecx, [eax + 0xd8]
mov edx, dword [ebp - 4]
mov eax, ecx
call fcn.0040d450
lea eax, [ebp - 0x50]
call fcn.006079c0
mov eax, dword [ebp - 0x6c]
lea edi, [eax + 0xdc]
lea esi, [ebp - 0x50]
mov ecx, 6
rep movsd dword es:[edi], dword [esi]
fldz
lea esp, [esp - 4]
fstp dword [esp]
fldz
lea esp, [esp - 4]
fstp dword [esp]
lea eax, [ebp - 0x40]
call fcn.005c0960
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 0xf4], eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 0xf8], eax
mov dword [ebp - 0x5c], 0
sub dword [ebp - 0x5c], 1
lea esi, [esi]
add dword [ebp - 0x5c], 1
mov eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x5c]
mov ecx, dword [eax + edx*8]
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
mov dword [edx + eax*8 + 0x38], ecx
mov eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x5c]
mov ecx, dword [eax + edx*8 + 4]
mov edx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x6c]
mov dword [eax + edx*8 + 0x3c], ecx
mov edx, dword [ebp - 0x5c]
lea eax, [edx + 1]
mov edx, eax
sar eax, 0x1f
mov ecx, eax
mov eax, edx
xor eax, ecx
sub eax, ecx
mov ebx, eax
and ebx, 3
mov eax, ecx
xor eax, ebx
sub eax, ecx
mov ecx, eax
mov eax, dword [ebp - 0x60]
lea ebx, [eax + ecx*8]
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x5c]
lea esi, [edx + eax*8]
lea ecx, [ebp - 0xc]
mov edx, esi
mov eax, ebx
call fcn.00453990
lea edx, [ebp - 0xc]
lea eax, [ebp - 0xc]
call fcn.00453940
fsqrt
fstp dword [ebp - 0x10]
fldz
fld dword [ebp - 0x10]
fcompp
fnstsw ax
sahf
jp 0x608b55
jbe 0x608b55
fld1
fdiv dword [ebp - 0x10]
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
fstp dword [edx + eax*4 + 0x78]
jmp 0x608b61
fldz
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
fstp dword [edx + eax*4 + 0x78]
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
push dword [edx + eax*4 + 0x78]
lea edx, [ebp - 0x40]
lea eax, [ebp - 0xc]
call fcn.00453970
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
mov dword [edx + eax*8 + 0x58], ecx
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x6c]
mov dword [eax + ecx*8 + 0x5c], edx
cmp dword [ebp - 0x5c], 3
jl 0x608ac0
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0x38]
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0x98], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0x3c]
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0x9c], edx
mov eax, dword [ebp - 0x6c]
lea edx, [eax + 0x38]
mov eax, dword [ebp - 0x6c]
lea ebx, [eax + 0x40]
lea ecx, [ebp - 0x40]
mov eax, ebx
call fcn.00453990
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 0xa0], eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 0xa4], eax
mov eax, dword [ebp - 0x6c]
lea edx, [eax + 0x38]
mov eax, dword [ebp - 0x6c]
lea ebx, [eax + 0x50]
lea ecx, [ebp - 0x40]
mov eax, ebx
call fcn.00453990
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 0xa8], eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 0xac], eax
mov eax, dword [ebp - 0x6c]
lea edx, [eax + 0x48]
mov eax, dword [ebp - 0x6c]
lea ebx, [eax + 0x38]
lea ecx, [ebp - 0x50]
mov eax, ebx
call fcn.00453980
lea ebx, [ebp - 0x50]
mov eax, dword [ebp - 0x6c]
lea edx, [eax + 0x40]
lea ecx, [ebp - 0x48]
mov eax, ebx
call fcn.00453990
lea ebx, [ebp - 0x48]
mov eax, dword [ebp - 0x6c]
lea edx, [eax + 0x50]
lea ecx, [ebp - 0x40]
mov eax, ebx
call fcn.00453990
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0xb0], edx
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0xb4], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xa8]
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xac]
mov dword [ebp - 0x44], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xb0]
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xb4]
mov dword [ebp - 0x4c], edx
fld dword [ebp - 0x44]
fmul dword [ebp - 0x50]
fld dword [ebp - 0x48]
fmul dword [ebp - 0x4c]
fsubp st(1)
fstp qword [ebp - 0x40]
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0xb8], edx
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 0xbc], eax
mov edx, dword [ebp - 0x6c]
mov eax, dword [edx + 0x98]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0x9c]
mov dword [ebp - 0x44], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xb0]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp - 0x6c]
mov eax, dword [edx + 0xb4]
mov dword [ebp - 0x4c], eax
fld dword [ebp - 0x44]
fmul dword [ebp - 0x50]
fld dword [ebp - 0x48]
fmul dword [ebp - 0x4c]
fsubp st(1)
fstp qword [ebp - 0x40]
mov edx, dword [ebp - 0x6c]
mov eax, dword [edx + 0xa8]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xac]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xa0]
mov dword [ebp - 0x58], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xa4]
mov dword [ebp - 0x54], edx
fld dword [ebp - 0x4c]
fmul dword [ebp - 0x58]
fld dword [ebp - 0x50]
fmul dword [ebp - 0x54]
fsubp st(1)
fstp qword [ebp - 0x48]
fld qword [ebp - 0x48]
fadd qword [ebp - 0x40]
mov eax, dword [ebp - 0x6c]
fstp qword [eax + 0xc0]
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0x98]
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0x9c]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xa0]
mov dword [ebp - 0x58], edx
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + 0xa4]
mov dword [ebp - 0x54], edx
fld dword [ebp - 0x4c]
fmul dword [ebp - 0x58]
fld dword [ebp - 0x50]
fmul dword [ebp - 0x54]
fsubp st(1)
fstp qword [ebp - 0x48]
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0xc8], edx
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0xcc], edx
mov dword [ebp - 0x5c], 0
sub dword [ebp - 0x5c], 1
mov esi, esi
add dword [ebp - 0x5c], 1
mov edx, dword [ebp - 0x5c]
lea eax, [edx + 1]
mov ecx, eax
sar eax, 0x1f
mov edx, eax
mov eax, ecx
xor eax, edx
sub eax, edx
and eax, 3
mov ebx, edx
xor ebx, eax
mov eax, ebx
sub eax, edx
mov edx, eax
mov ecx, dword [ebp - 0x6c]
mov eax, dword [ecx + edx*8 + 0x58]
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x6c]
mov eax, dword [ecx + edx*8 + 0x5c]
mov dword [ebp - 0x4c], eax
mov edx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x6c]
mov ecx, dword [eax + edx*8 + 0x58]
mov dword [ebp - 0x58], ecx
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
mov ecx, dword [edx + eax*8 + 0x5c]
mov dword [ebp - 0x54], ecx
fld dword [ebp - 0x4c]
fmul dword [ebp - 0x58]
fld dword [ebp - 0x50]
fmul dword [ebp - 0x54]
fsubp st(1)
fstp qword [ebp - 0x48]
fld qword [ebp - 0x48]
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
fstp dword [edx + eax*4 + 0x88]
cmp dword [ebp - 0x5c], 3
jl 0x608db8
fldz
mov eax, dword [ebp - 0x6c]
fld qword [eax + 0xb8]
fcompp
fnstsw ax
sahf
jp 0x608e45
je 0x608e63
fld qword [0x74adf0]
mov eax, dword [ebp - 0x6c]
fmul qword [eax + 0xb8]
fld1
fdivrp st(1)
mov eax, dword [ebp - 0x6c]
fstp qword [eax + 0xd0]
jmp 0x608e6e
fld1
mov eax, dword [ebp - 0x6c]
fstp qword [eax + 0xd0]
mov eax, dword [ebp - 0x6c]
mov byte [eax + 0x13a], 1
mov eax, dword [ebp - 0x6c]
mov byte [eax + 0x13b], 1
mov eax, dword [ebp - 0x6c]
mov byte [eax + 0x138], 0
mov eax, dword [ebp - 0x6c]
mov byte [eax + 0x139], 0
mov dword [ebp - 0x5c], 0
sub dword [ebp - 0x5c], 1
lea esi, [esi]
add dword [ebp - 0x5c], 1
fldz
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
fld dword [edx + eax*4 + 0x88]
fcompp
fnstsw ax
sahf
jp 0x608ecc
jbe 0x608ecc
mov eax, dword [ebp - 0x6c]
mov byte [eax + 0x138], 1
jmp 0x608eee
fldz
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x6c]
fld dword [edx + eax*4 + 0x88]
fcompp
fnstsw ax
sahf
jp 0x608eee
jae 0x608eee
mov eax, dword [ebp - 0x6c]
mov byte [eax + 0x139], 1
cmp dword [ebp - 0x5c], 3
jl 0x608ea4
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0x14c], 0
mov eax, dword [ebp - 0x6c]
mov dword [eax + 0x150], 0
fldz
fstp dword [ebp - 0x44]
fldz
fstp dword [ebp - 0x48]
mov ebx, dword [ebp - 0x6c]
cmp byte [ebx + 0x138], 0
je 0x608f2d
cmp byte [ebx + 0x13a], 0
jne 0x608f55
cmp byte [ebx + 0x139], 0
je 0x608f3f
cmp byte [ebx + 0x13b], 0
jne 0x608f55
mov eax, 0x609d30
mov dword [ebx + 0x13c], eax
mov dword [ebx + 0x140], ebx
jmp 0x608fd9
mov eax, dword [ebp - 0x48]
mov dword [ebx + 0x144], eax
mov eax, dword [ebp - 0x44]
mov dword [ebx + 0x148], eax
fldz
fld dword [ebx + 0x58]
fcompp
fnstsw ax
sahf
jp 0x608f9d
jne 0x608f9d
fldz
fld dword [ebx + 0x68]
fcompp
fnstsw ax
sahf
jp 0x608f9d
jne 0x608f9d
mov eax, ebx
call fcn.00609d50
mov eax, 0x609df0
mov dword [ebx + 0x13c], eax
mov dword [ebx + 0x140], ebx
jmp 0x608fd9
fldz
fld qword [ebx + 0xb8]
fcompp
fnstsw ax
sahf
jp 0x608fc8
jne 0x608fc8
mov eax, ebx
call fcn.00609ee0
mov eax, 0x609f60
mov dword [ebx + 0x13c], eax
mov dword [ebx + 0x140], ebx
jmp 0x608fd9
mov eax, 0x6093a0
mov dword [ebx + 0x13c], eax
mov dword [ebx + 0x140], ebx
call fcn.0040e3b0
lea eax, [ebp - 4]
call fcn.0040d410
pop eax
test eax, eax
je 0x608ff0
call fcn.0040e4e0
pop edi
pop esi
pop ebx
leave
ret 8