Function at 0x44ae50
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x81c
push ebx
push ebp
mov ebp, dword [esp + 0x828]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
push esi
push edi
xor edi, edi
mov dword [esp + 0x48], eax
push edi
lea eax, [esp + 0x44]
lea esi, [esp + 0x1c]
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x50], ecx
call fcn.004793d0
lea edx, [esp + 0x50]
push edx
call fcn.004c6be0
fld1
fcom dword [esp + 0x834]
fnstsw ax
test ah, 5
jp 0x44aeaa
fstp dword [esp + 0x834]
jmp 0x44aeac
fstp st(0)
fld dword [esp + 0x834]
fld qword [0x6c0b80]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
or eax, 0xc00
cmp dword [esp + 0x24], edi
mov dword [esp + 0x14], eax
fsubrp st(1)
fldcw word [esp + 0x14]
fistp qword [esp + 0x40]
mov esi, dword [esp + 0x40]
fldcw word [esp + 0x10]
jbe 0x44af95
mov eax, dword [esp + 0x20]
xor edx, edx
test eax, eax
jbe 0x44af88
mov eax, dword [esp + 0x50]
add eax, eax
add eax, eax
mov ecx, dword [esp + eax + 0x440]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x54]
add ecx, ecx
add ecx, ecx
mov ebx, dword [esp + ecx + 0x440]
mov dword [esp + 0x54], ebx
mov ecx, dword [esp + ecx + 0x58]
xor dword [esp + eax + 0x58], ecx
lea eax, [esp + eax + 0x58]
mov eax, dword [eax]
or eax, 0xff000000
mov ecx, eax
and ecx, 0xff00ff
mov ebx, 0x7f007f
sub ebx, ecx
imul ebx, esi
and eax, 0xff00
shr ebx, 8
add ebx, ecx
mov ecx, 0x7f00
sub ecx, eax
imul ecx, esi
shr ecx, 8
add ecx, eax
mov eax, dword [esp + 0x1c]
imul eax, edi
and ecx, 0xff00
and ebx, 0xff00ff
or ebx, ecx
mov ecx, dword [esp + 0x28]
add eax, edx
mov dword [ecx + eax*4], ebx
mov eax, dword [esp + 0x20]
add edx, 1
cmp edx, eax
jb 0x44aef7
add edi, 1
cmp edi, dword [esp + 0x24]
jb 0x44aeed
lea edx, [esp + 0x18]
push edx
call fcn.004c00d0
lea eax, [esp + 0x1c]
add esp, 4
push eax
call fcn.004c00d0
lea ecx, [esp + 0x1c]
add esp, 4
push ecx
call fcn.004c00d0
xor ebx, ebx
add esp, 4
cmp dword [esp + 0x24], ebx
jbe 0x44b08a
mov eax, dword [esp + 0x20]
xor esi, esi
test eax, eax
jbe 0x44b07d
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
add eax, eax
add eax, eax
mov edx, dword [esp + eax + 0x440]
mov dword [esp + 0x50], edx
add ecx, ecx
add ecx, ecx
mov edx, dword [esp + ecx + 0x440]
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + ecx + 0x58]
imul edx, ebx
xor dword [esp + eax + 0x58], ecx
lea eax, [esp + eax + 0x58]
mov eax, dword [eax]
or eax, 0xff000000
mov ecx, eax
mov eax, dword [esp + 0x28]
add edx, esi
lea edi, [eax + edx*4]
mov eax, dword [edi]
mov ebp, eax
and ebp, 0xff00ff
and eax, 0xff00
mov edx, ecx
and edx, 0xff00ff
sub ebp, edx
and ecx, 0xff00
imul ebp, ebp, 0xd2
sub eax, ecx
imul eax, eax, 0xd2
shr ebp, 8
shr eax, 8
add ebp, edx
add eax, ecx
and eax, 0xff00
and ebp, 0xff00ff
or ebp, eax
mov dword [edi], ebp
mov eax, dword [esp + 0x20]
add esi, 1
cmp esi, eax
jb 0x44afd6
mov ebp, dword [esp + 0x830]
add ebx, 1
cmp ebx, dword [esp + 0x24]
jb 0x44afcc
or ecx, 0xffffffff
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
or edx, ecx
or esi, ecx
or edi, ecx
mov dword [eax + 4], edx
lea ecx, [esp + 0x28]
mov dword [eax + 8], esi
push ecx
mov ebx, 0xc8
mov dword [eax + 0xc], edi
call fcn.00479bd0
xor eax, eax
cmp dword [esp + 0x24], eax
mov dword [esp + 0x14], eax
jbe 0x44b1fa
mov edx, dword [esp + 0x20]
xor ecx, ecx
test edx, edx
mov dword [esp + 0x10], ecx
jbe 0x44b1e9
jmp 0x44b0e4
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
imul edx, eax
mov esi, dword [esp + 0x28]
add edx, ecx
lea edi, [esi + edx*4]
mov edx, dword [ebp + 4]
imul edx, eax
mov eax, dword [ebp + 0x10]
add edx, ecx
movzx esi, byte [eax + edx*4 + 2]
lea ebx, [eax + edx*4]
movzx ebp, byte [ebx + 1]
mov eax, 0x80
sub eax, esi
cdq
xor eax, edx
sub eax, edx
movzx edx, byte [edi + 2]
sub edx, 0x80
mov ecx, 0xa0
sub ecx, eax
imul ecx, edx
mov eax, 0x80
sub eax, ebp
cdq
xor eax, edx
sub eax, edx
sar ecx, 8
add ecx, esi
mov esi, 0xa0
sub esi, eax
movzx eax, byte [edi + 1]
sub eax, 0x80
imul esi, eax
sar esi, 8
add esi, ebp
movzx ebp, byte [ebx]
mov eax, 0x80
sub eax, ebp
cdq
xor eax, edx
sub eax, edx
mov edx, eax
mov eax, 0xa0
sub eax, edx
movzx edx, byte [edi]
sub edx, 0x80
imul eax, edx
sar eax, 8
add eax, ebp
test ecx, ecx
jge 0x44b183
xor ecx, ecx
test esi, esi
jge 0x44b189
xor esi, esi
test eax, eax
jge 0x44b18f
xor eax, eax
cmp ecx, 0xff
jle 0x44b19c
mov ecx, 0xff
cmp esi, 0xff
jle 0x44b1a9
mov esi, 0xff
cmp eax, 0xff
jle 0x44b1b5
mov eax, 0xff
mov ebp, dword [esp + 0x830]
or ecx, 0xffffff00
shl ecx, 8
or ecx, esi
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x10]
add eax, 1
mov dword [ebx], ecx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x10], eax
cmp eax, edx
mov eax, dword [esp + 0x14]
jb 0x44b0e0
add eax, 1
cmp eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
jb 0x44b0c6
lea eax, [esp + 0x18]
call fcn.00479430
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x81c
ret