Function at 0x44e4f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xd4
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
cmp dword [edi + 2], 0xffffffff
lea esi, [edi + 2]
je 0x44eefc
add edi, 6
cmp dword [edi], 0xffffffff
je 0x44eefc
push 0x8340
push 0
push 0x6c32f8
mov dword [0x6c32ec], 0
mov dword [0x6c32f4], 0
call fcn.004e4d50
push 0x15ee
push 0
push 0x6cb638
mov dword [0x6c32f0], 0
call fcn.004e4d50
movsx eax, byte [0x5cf497]
imul eax, eax, 0xd26
push edi
push esi
mov byte [esp + 0xfd], 1
movsx eax, word [eax + 0x5cff3c]
mov dword [esp + 0xb0], eax
call fcn.004505b0
movzx eax, ax
push edi
push esi
mov dword [esp + 0xbc], eax
call fcn.004a7620
movzx edi, word [esp + 0xb8]
movzx ebx, word [esp + 0xbc]
mov dword [esp + 0xc0], eax
mov eax, edi
and eax, 0x7ff
push eax
push dword [esp + 0xc0]
call fcn.00498140
add esp, 0x30
test al, al
je 0x44e5d2
mov byte [esp + 0xdc], 0
jmp 0x44e61d
lea eax, [edi + 0x200]
and eax, 0x7ff
push eax
push ebx
call fcn.00498140
add esp, 8
test al, al
je 0x44e5f5
mov byte [esp + 0xdc], 1
jmp 0x44e61d
lea eax, [edi - 0x400]
mov ecx, 0x7ff
and ax, cx
movzx eax, ax
push eax
push ebx
call fcn.00498140
add esp, 8
neg al
sbb al, al
add al, 3
mov byte [esp + 0xdc], al
push dword [esp + 0x98]
lea eax, [esp + 0x74]
push dword [esp + 0x98]
push dword [esp + 0x98]
push esi
push eax
call fcn.00497d80
push dword [esp + 0xa4]
lea eax, [esp + 0x98]
push eax
lea eax, [esp + 0x8c]
push eax
call fcn.00497c10
lea eax, [esp + 0x60]
push eax
call fcn.004503e0
movsx eax, byte [esp + 0x100]
movaps xmm0, xmmword [0x55a8d0]
movaps xmm1, xmm0
movaps xmmword [esp + 0x54], xmm0
movd xmm0, eax
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
psrad xmm0, 0x18
psubd xmm1, xmm0
pand xmm1, xmmword [0x55a8e0]
movaps xmm0, xmm1
movd esi, xmm1
psrldq xmm0, 4
movd edx, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
movd ecx, xmm0
psrldq xmm1, 0xc
mov dword [esp + esi*4 + 0xe0], 0x200
movd eax, xmm1
mov dword [esp + edx*4 + 0xe0], 0x400
mov dword [esp + ecx*4 + 0xe0], 0x800
mov dword [esp + eax*4 + 0xe0], 0x100
mov dword [esp + esi*4 + 0xf0], 0x1300
mov esi, dword [0x6c32ec]
mov dword [esp + edx*4 + 0xf0], 0x2600
mov dword [esp + ecx*4 + 0xf0], 0x4c00
mov dword [esp + eax*4 + 0xf0], 0x8900
lea eax, [esp + 0x94]
push dword [esp + 0xf0]
push 0
push eax
lea eax, [esp + 0x70]
push eax
call fcn.0044feb0
push dword [esp + 0x104]
lea eax, [esp + 0xac]
push 0
push eax
lea eax, [esp + 0x80]
push eax
call fcn.0044feb0
add esp, 0x44
lea eax, [esp + 0x78]
push dword [esp + 0xd4]
push 0
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.0044feb0
push dword [esp + 0xe8]
lea eax, [esp + 0x90]
push 0
push eax
lea eax, [esp + 0x5c]
push eax
call fcn.0044feb0
movaps xmm1, xmmword [0x55a8c0]
paddd xmm1, xmmword [esp + 0x50]
movd xmm0, esi
pshufd xmm0, xmm0, 0
paddd xmm1, xmm0
push dword [esp + 0xdc]
lea eax, [esp + 0x98]
push eax
lea eax, [esp + 0x98]
push eax
lea eax, [esp + 0x6c]
push eax
movups xmmword [esp + 0xdc], xmm1
call fcn.0044f8b0
push dword [esp + 0xf0]
lea eax, [esp + 0xac]
push eax
lea eax, [esp + 0xac]
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.0044f8b0
add esp, 0x40
lea eax, [esp + 0x7c]
push dword [esp + 0xc4]
push eax
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.0044f8b0
push dword [esp + 0xd8]
lea eax, [esp + 0x84]
push eax
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0x5c]
push eax
call fcn.0044f8b0
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0x94]
push eax
call fcn.004a76f0
add esp, 0x28
cmp eax, 0x400
jle 0x44e874
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0x78]
push eax
call fcn.004a76f0
add esp, 8
cmp eax, 0x400
jg 0x44e87c
mov byte [esp + 0xdd], 0
call fcn.0044f640
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x98]
sub ecx, edx
sub ecx, 0x200
mov dword [esp + 0x14], eax
and ecx, 0x7ff
mov dword [esp + 0x1c], edx
mov eax, dword [ecx*4 + 0x596de0]
mov dword [esp + 0x10], eax
mov eax, dword [ecx*4 + 0x5975e0]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x18]
shl edx, 0x10
shr eax, 0x10
or eax, edx
mov ecx, eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x10]
shl edx, 0x10
shr eax, 0x10
or eax, edx
mov esi, eax
mov eax, ecx
cdq
mov ecx, eax
mov eax, esi
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
mov dword [esp + 0xa4], ecx
sub eax, edx
mov dword [esp + 0xa8], eax
movzx eax, word [esp + 0x44]
mov word [esp + 0x20], ax
movzx eax, word [esp + 0x48]
mov word [esp + 0x22], ax
test ecx, ecx
je 0x44ea06
mov ebx, dword [0x6c32ec]
test ebx, ebx
jle 0x44ea06
mov edi, 0xaf86d4
mov ax, word [edi - 0xc]
movzx ecx, word [edi - 0x14]
mov word [esp + 0x2a], ax
mov eax, dword [esp + 0x2a]
sub eax, dword [esp + 0x22]
movzx eax, ax
mov word [esp + 0x28], cx
sub ecx, dword [esp + 0x20]
cmp eax, 0x8000
movzx edx, cx
lea ecx, [eax - 0x10000]
cmovb ecx, eax
neg ecx
cmp edx, 0x8000
lea eax, [edx - 0x10000]
push ecx
cmovb eax, edx
push eax
call fcn.005510b4
mov si, ax
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x2c]
and esi, 0x7ff
push eax
call fcn.004a7620
sub esi, dword [esp + 0x2c]
add esp, 0x10
sub esi, 0x200
mov dword [esp + 0x14], eax
and esi, 0x7ff
mov eax, dword [esi*4 + 0x596de0]
mov dword [esp + 0x10], eax
mov eax, dword [esi*4 + 0x5975e0]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x18]
shl edx, 0x10
shr eax, 0x10
or eax, edx
mov ecx, eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x10]
shl edx, 0x10
shr eax, 0x10
or eax, edx
mov esi, eax
lea edi, [edi + 0x20]
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [edi - 0x20], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [edi - 0x18], eax
sub ebx, 1
jne 0x44e933
mov eax, dword [0xaf4ef8]
mov esi, 0xaf86c0
mov edi, dword [0x6c32ec]
movzx ecx, word [eax + 0x24]
movzx eax, word [eax + 0x26]
mov dword [esp + 0x1c], eax
test edi, edi
jle 0x44ea96
mov ebx, ecx
movzx ecx, word [esi]
sub ecx, ebx
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
test eax, 0x8000
je 0x44ea4e
test ecx, ecx
jle 0x44ea47
lea ecx, [eax - 0x10000]
jmp 0x44ea4e
mov ecx, 0x10000
sub ecx, eax
mov edx, dword [esp + 0x1c]
sar ecx, 1
movzx eax, dx
mov dword [esi], ecx
movzx ecx, word [esi + 8]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
test eax, 0x8000
je 0x44ea80
test ecx, ecx
jle 0x44ea79
lea ecx, [eax - 0x10000]
jmp 0x44ea80
mov ecx, 0x10000
sub ecx, eax
sar ecx, 1
push esi
mov dword [esi + 8], ecx
call fcn.0048aa50
add esp, 4
add esi, 0x20
sub edi, 1
jne 0x44ea28
push dword [0x6c32e8]
lea eax, [esp + 0x44]
push eax
call fcn.0044ef20
mov eax, dword [0x6c32f0]
add esp, 8
xor edx, edx
mov dword [esp + 0x10], eax
test eax, eax
mov eax, dword [0x6c32f4]
jle 0x44ec16
mov edi, 0x6cb650
xor ecx, ecx
cmp word [edi + ecx*2 - 0xa], 0
je 0x44ead6
inc ecx
cmp ecx, 7
jl 0x44eac8
lea ebx, [ecx - 2]
xor esi, esi
test ebx, ebx
jle 0x44eb10
nop
test edx, edx
jne case.default.0x44eb22
or ecx, 0xffffffff
cmp eax, 0x15df
jge 0x44eafb
movzx ecx, ax
inc eax
mov dword [0x6c32f4], eax
test cx, cx
mov word [esp + esi*2 + 0x30], cx
mov ecx, 1
cmovs edx, ecx
inc esi
cmp esi, ebx
jl 0x44eae0
test edx, edx
jne case.default.0x44eb22
dec ebx
cmp ebx, 4
ja case.default.0x44eb22
jmp dword [ebx*4 + 0x44ef04]
movsx eax, word [esp + 0x36]
lea ecx, [eax + eax*2]
movzx eax, word [edi - 0xa]
mov word [ecx*2 + 0x6c32f8], ax
movzx eax, word [edi]
mov word [ecx*2 + 0x6c32fa], ax
movzx eax, word [edi + 2]
mov word [ecx*2 + 0x6c32fc], ax
movsx eax, word [esp + 0x36]
lea ecx, [eax + eax*2]
movzx eax, word [edi - 0xa]
mov word [ecx*2 + 0x6c32f8], ax
movzx eax, word [edi - 2]
mov word [ecx*2 + 0x6c32fa], ax
movzx eax, word [edi]
mov word [ecx*2 + 0x6c32fc], ax
movsx eax, word [esp + 0x34]
lea ecx, [eax + eax*2]
movzx eax, word [edi - 0xa]
mov word [ecx*2 + 0x6c32f8], ax
movzx eax, word [edi - 4]
mov word [ecx*2 + 0x6c32fa], ax
movzx eax, word [edi - 2]
mov word [ecx*2 + 0x6c32fc], ax
movsx eax, word [esp + 0x32]
lea ecx, [eax + eax*2]
movzx eax, word [edi - 0xa]
mov word [ecx*2 + 0x6c32f8], ax
movzx eax, word [edi - 6]
mov word [ecx*2 + 0x6c32fa], ax
movzx eax, word [edi - 4]
mov word [ecx*2 + 0x6c32fc], ax
movsx eax, word [esp + 0x30]
lea ecx, [eax + eax*2]
movzx eax, word [edi - 0xa]
mov word [ecx*2 + 0x6c32f8], ax
movzx eax, word [edi - 8]
mov word [ecx*2 + 0x6c32fa], ax
movzx eax, word [edi - 6]
mov word [ecx*2 + 0x6c32fc], ax
mov eax, dword [0x6c32f4]
add edi, 0xe
sub dword [esp + 0x10], 1
jne 0x44eac6
push eax
lea eax, [esp + 0x44]
push eax
call fcn.0044ef20
mov edi, dword [esp + 0xb4]
add esp, 8
mov esi, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb8]
shl edi, 5
shl esi, 5
add edi, 0xaf86a0
add esi, 0xaf86a0
shl edx, 5
shl ecx, 5
add edx, 0xaf86a0
add ecx, 0xaf86a0
movss xmm2, dword [edi + 0xc]
movss xmm1, dword [esi + 0xc]
ucomiss xmm2, xmm1
lahf
test ah, 0x44
jp 0x44ec93
movss xmm0, dword [edx + 0xc]
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jp 0x44ec93
ucomiss xmm0, dword [ecx + 0xc]
lahf
test ah, 0x44
jnp 0x44eefc
movss xmm3, dword [0xc276e8]
comiss xmm2, xmm3
mov bx, word [0x5cf476]
jbe 0x44ece2
movups xmm3, xmmword [edi]
movsx eax, bx
movups xmmword [0xc276dc], xmm3
movups xmm0, xmmword [edi + 0x10]
shufps xmm3, xmm3, 0xff
movups xmmword [0xc276ec], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0xc276e8], xmm3
comiss xmm3, xmm0
jbe 0x44ece2
movaps xmm3, xmm0
movss dword [0xc276e8], xmm3
movss xmm2, dword [0xc27708]
xorps xmm4, xmm4
comiss xmm2, dword [edi + 0xc]
jbe 0x44ed24
movups xmm2, xmmword [edi]
movups xmmword [0xc276fc], xmm2
movups xmm0, xmmword [edi + 0x10]
shufps xmm2, xmm2, 0xff
comiss xmm4, xmm2
movups xmmword [0xc2770c], xmm0
movss dword [0xc27708], xmm2
jbe 0x44ed24
xorps xmm2, xmm2
movss dword [0xc27708], xmm2
movss xmm0, dword [esi + 0xc]
comiss xmm0, xmm3
jbe 0x44ed6c
movups xmm1, xmmword [esi]
movsx eax, bx
movups xmmword [0xc276dc], xmm1
movups xmm0, xmmword [esi + 0x10]
shufps xmm1, xmm1, 0xff
movups xmmword [0xc276ec], xmm0
movd xmm0, eax
movaps xmm3, xmm1
cvtdq2ps xmm0, xmm0
movss dword [0xc276e8], xmm3
comiss xmm3, xmm0
jbe 0x44ed6c
movaps xmm3, xmm0
movss dword [0xc276e8], xmm3
comiss xmm2, dword [esi + 0xc]
jbe 0x44eda6
movups xmm1, xmmword [esi]
movups xmmword [0xc276fc], xmm1
movups xmm0, xmmword [esi + 0x10]
shufps xmm1, xmm1, 0xff
movaps xmm2, xmm1
comiss xmm4, xmm2
movups xmmword [0xc2770c], xmm0
movss dword [0xc27708], xmm2
jbe 0x44eda6
xorps xmm2, xmm2
movss dword [0xc27708], xmm2
movss xmm0, dword [edx + 0xc]
comiss xmm0, xmm3
jbe 0x44edee
movups xmm1, xmmword [edx]
movsx eax, bx
movups xmmword [0xc276dc], xmm1
movups xmm0, xmmword [edx + 0x10]
shufps xmm1, xmm1, 0xff
movups xmmword [0xc276ec], xmm0
movd xmm0, eax
movaps xmm3, xmm1
cvtdq2ps xmm0, xmm0
movss dword [0xc276e8], xmm3
comiss xmm3, xmm0
jbe 0x44edee
movaps xmm3, xmm0
movss dword [0xc276e8], xmm3
comiss xmm2, dword [edx + 0xc]
jbe 0x44ee28
movups xmm1, xmmword [edx]
movups xmmword [0xc276fc], xmm1
movups xmm0, xmmword [edx + 0x10]
shufps xmm1, xmm1, 0xff
movaps xmm2, xmm1
comiss xmm4, xmm2
movups xmmword [0xc2770c], xmm0
movss dword [0xc27708], xmm2
jbe 0x44ee28
xorps xmm2, xmm2
movss dword [0xc27708], xmm2
movss xmm0, dword [ecx + 0xc]
comiss xmm0, xmm3
jbe 0x44ee6a
movups xmm1, xmmword [ecx]
movsx eax, bx
movups xmmword [0xc276dc], xmm1
movups xmm0, xmmword [ecx + 0x10]
shufps xmm1, xmm1, 0xff
movups xmmword [0xc276ec], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0xc276e8], xmm1
comiss xmm1, xmm0
jbe 0x44ee6a
movss dword [0xc276e8], xmm0
comiss xmm2, dword [ecx + 0xc]
jbe 0x44eea0
movups xmm1, xmmword [ecx]
movups xmmword [0xc276fc], xmm1
movups xmm0, xmmword [ecx + 0x10]
shufps xmm1, xmm1, 0xff
comiss xmm4, xmm1
movups xmmword [0xc2770c], xmm0
movss dword [0xc27708], xmm1
jbe 0x44eea0
mov dword [0xc27708], 0
movsx eax, word [0x5cf478]
movss xmm0, dword [0xc2770c]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x44eec6
movaps xmm0, xmm1
movss dword [0xc2770c], xmm0
comiss xmm4, xmm0
jbe 0x44eed5
mov dword [0xc2770c], 0
movss xmm0, dword [0xc276ec]
comiss xmm0, xmm1
jbe 0x44eeed
movaps xmm0, xmm1
movss dword [0xc276ec], xmm0
comiss xmm4, xmm0
jbe 0x44eefc
mov dword [0xc276ec], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret