Function at 0x450cf3
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
imul eax, dword [ebp + 8], 0xf
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, edx
mov dword [ebp - 0x20], ecx
mov edx, dword [ebp + 0x14]
mov dword [ebp - 8], edi
cmp edx, eax
jl 0x450ff2
cmp dword [ebp + 0x24], 0
jne 0x450ff2
cmp edx, 0x28
jge 0x450d2a
push 0xc
pop ebx
jmp 0x450d3e
cmp edx, 0x3c
jge 0x450d33
push 6
jmp 0x450d27
xor ebx, ebx
cmp edx, 0x64
setl bl
add ebx, 3
mov eax, edi
mov dword [ebp - 0x18], ebx
shl eax, 2
call fcn.004ee0f0
mov eax, dword [ebp - 0x20]
mov dword [ebp - 4], esp
mov ecx, dword [eax + 0x20]
movsx eax, word [ecx + edi*2 - 2]
movsx edx, word [ecx + edi*2]
mov ecx, dword [ebp + 0x20]
sub edx, eax
shl edx, cl
shl edx, 2
mov eax, edx
call fcn.004ee0f0
mov eax, edi
mov dword [ebp + 0x14], esp
shl eax, 2
call fcn.004ee0f0
mov eax, edi
mov dword [ebp - 0x28], esp
shl eax, 2
call fcn.004ee0f0
mov ecx, dword [ebp + 0x28]
xor eax, eax
mov dword [ebp - 0x24], esp
mov edx, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], edx
mov dword [ecx], eax
test edi, edi
jle 0x450f0d
mov ebx, dword [ebp + 0xc]
xor esi, esi
mov ecx, dword [ebp + 0x20]
test ebx, ebx
cmovne esi, ecx
mov dword [ebp - 0x30], esi
jmp 0x450db6
xor eax, eax
mov esi, dword [ebp - 0x20]
and dword [ebp - 0x2c], 0
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0xc], eax
movsx esi, word [eax + edx*2 + 2]
movsx eax, word [eax + edx*2]
sub esi, eax
shl esi, cl
test esi, esi
jle 0x450e01
mov ebx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0xc]
movsx eax, word [edi + edx*2]
shl eax, cl
mov ecx, dword [ebp + 0x18]
add eax, ebx
fld dword [ecx + eax*4]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x20]
fstp dword [eax + ebx*4]
inc ebx
cmp ebx, esi
jl 0x450ddd
mov edi, dword [ebp - 8]
mov ebx, dword [ebp + 0xc]
jmp 0x450e04
mov eax, dword [ebp + 0x14]
cmp dword [ebp + 8], 2
jne 0x450e44
xor edx, edx
test esi, esi
jle 0x450e44
mov edi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0xc]
movsx eax, word [ebx + edi*2]
shl eax, cl
mov ecx, dword [ebp + 0x18]
add eax, edx
add eax, dword [ebp + 0x1c]
movss xmm0, dword [ecx + eax*4]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x20]
addss xmm0, dword [eax + edx*4]
movss dword [eax + edx*4], xmm0
inc edx
cmp edx, esi
jl 0x450e16
mov edi, dword [ebp - 8]
mov ebx, dword [ebp + 0xc]
mov edx, esi
sar edx, cl
mov ecx, eax
push edx
push dword [ebp - 0x30]
mov dword [ebp - 0x34], edx
mov edx, esi
call fcn.00450c4e
and dword [ebp - 0x2c], 0
pop ecx
pop ecx
mov ecx, dword [ebp + 0x20]
test ecx, ecx
jle 0x450ee2
mov edi, dword [ebp - 0x2c]
mov edx, ecx
mov dword [ebp - 0xc], ecx
test ebx, ebx
lea eax, [edi + 1]
lea ecx, [edx - 1]
cmove ecx, eax
mov dword [ebp - 0x2c], ecx
je 0x450e89
xor eax, eax
mov ecx, edx
inc eax
shl eax, cl
mov ecx, dword [ebp - 0xc]
jmp 0x450e90
xor eax, eax
mov ecx, edi
inc eax
shl eax, cl
mov edx, esi
sar edx, cl
mov ecx, dword [ebp + 0x14]
push eax
call fcn.0044e66d
pop ecx
push dword [ebp - 0x34]
mov ecx, dword [ebp + 0x14]
mov edx, esi
push dword [ebp - 0x2c]
call fcn.00450c4e
fst dword [ebp - 0x2c]
fxch st(1)
pop ecx
fcomi st(1)
pop ecx
fstp st(1)
jbe 0x450ed0
movss xmm0, dword [ebp - 0x2c]
lea eax, [edi + 1]
fstp st(0)
movss dword [ebp - 0x2c], xmm0
fld dword [ebp - 0x2c]
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0xc]
inc edi
mov ecx, dword [ebp + 0x20]
dec edx
mov dword [ebp - 0xc], edx
cmp edi, ecx
jl 0x450e6d
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
fstp st(0)
test ebx, ebx
jne 0x450eed
neg eax
mov edx, dword [ebp - 0x14]
mov esi, dword [ebp - 4]
mov dword [esi + edx*4], eax
mov esi, dword [ebp + 0x28]
add dword [esi], eax
inc edx
mov dword [ebp - 0x14], edx
cmp edx, edi
jl 0x450db4
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp + 0xc]
xor eax, eax
mov ecx, ebx
test esi, esi
cmovne ecx, eax
mov dword [ebp + 0x14], ecx
cmp edi, 1
jle 0x450fbb
mov eax, dword [ebp + 0x20]
lea eax, [eax*8 + 0x54eba0]
movsx edx, byte [eax + esi*4]
movsx eax, byte [eax + esi*4 + 1]
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x24]
sub esi, edx
sub dword [ebp - 4], edx
dec edi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], esi
lea eax, [edx + 4]
mov dword [ebp - 0x20], edi
mov dword [ebp + 8], eax
mov edx, dword [ebp - 0x1c]
add ecx, ebx
cmp edx, ecx
mov edi, edx
cmovge edi, ecx
xor eax, eax
cmp edx, ecx
mov ecx, dword [ebp + 8]
setge al
mov dword [esi + ecx], eax
lea ecx, [edx + ebx]
mov edx, dword [ebp + 0x14]
mov esi, ecx
cmp ecx, edx
cmovge esi, edx
xor eax, eax
cmp ecx, edx
mov ecx, dword [ebp + 8]
setge al
add dword [ebp + 8], 4
mov dword [ecx], eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax + ecx]
mov eax, ecx
sub eax, dword [ebp - 0x34]
sub ecx, dword [ebp - 0x30]
cdq
xor eax, edx
sub eax, edx
add eax, edi
mov dword [ebp - 0x1c], eax
mov eax, ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
add ecx, esi
sub dword [ebp - 0x20], 1
mov esi, dword [ebp - 0x2c]
mov dword [ebp + 0x14], ecx
jne 0x450f53
mov edi, dword [ebp - 8]
xor eax, eax
cmp dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 0x10]
setge al
mov dword [ecx + edi*4 - 4], eax
lea eax, [edi - 2]
test eax, eax
js 0x451005
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x28]
cmp dword [ecx + eax*4 + 4], 1
jne 0x450fe4
mov edx, dword [esi + eax*4 + 4]
jmp 0x450fe8
mov edx, dword [edi + eax*4 + 4]
mov dword [ecx + eax*4], edx
sub eax, 1
jns 0x450fd7
jmp 0x451005
mov ecx, dword [ebp + 0x28]
and dword [ecx], 0
test edi, edi
jle 0x451005
mov ecx, edi
mov eax, esi
mov edi, dword [ebp + 0x10]
rep stosd dword es:[edi], eax
xor eax, eax
lea esp, [ebp - 0x40]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret