Function at 0x445950
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov eax, dword [esp + 0x2c]
xor ecx, ecx
test eax, eax
je 0x445983
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx], 0
lea ecx, [ecx + 2]
jne 0x445970
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 8], cx
mov edx, eax
test eax, eax
je 0x445993
add ecx, 2
mov edx, ecx
mov word [esp + 0xa], dx
mov dword [esp + 0xc], eax
mov dword [esp], 0x2c2d2e2f
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax]
lea edx, [ecx + ecx]
not edx
add edx, ecx
and edx, 0x69
and ecx, 0xffffff96
or ecx, edx
mov edx, eax
and edx, 1
xor edx, 0x230c01
mov edi, eax
xor edi, 0x2ce74c11
mov ebp, eax
or ebp, 0x2cc44012
and ebp, edi
mov ebx, edx
xor ebx, ebp
not ebp
and ebp, edx
add ebx, edx
sub ebx, ebp
xor ebx, ecx
add bl, 0xa8
mov byte [esp + eax], bl
inc eax
cmp eax, 4
jne 0x4459b0
mov ebx, dword [esp]
mov eax, dword [0x450d3c]
test eax, eax
je 0x445a4f
xor ecx, ecx
mov edx, dword [0x450d40]
nop
nop
cmp dword [edx + ecx*8], 0xbbe848dd
je 0x445a20
inc ecx
cmp eax, ecx
jne 0x445a10
jmp 0x445a4f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x445a4f
lea ecx, [esp + 4]
lea edx, [esp + 8]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x3c]
push 6
push dword [0x450d44]
push eax
call fcn.00441410
add esp, 0x24
mov ebx, eax
mov dword [esp], 0xdf1e197f
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
and cl, 0xfe
mov edx, eax
and dl, 1
sub cl, dl
movzx edx, cl
mov ecx, eax
xor ecx, 0xba
add ecx, eax
add ecx, edx
xor cl, byte [esp + eax]
add cl, 0x5e
mov byte [esp + eax], cl
inc eax
cmp eax, 4
jne 0x445a60
cmp ebx, dword [esp]
jne 0x445bf4
push dword [esp + 4]
call fcn.0043e6c0
add esp, 4
mov ecx, dword [esp + 4]
mov dword [esp], 0x2c2d2e2f
xor esi, esi
nop
nop
nop
nop
movzx ebx, byte [esp + esi]
lea edx, [ebx + ebx]
not edx
add edx, ebx
and edx, 0x69
and ebx, 0xffffff96
or ebx, edx
mov ebp, esi
and ebp, 1
xor ebp, 0x230c01
mov edx, esi
xor edx, 0x2ce74c11
mov edi, esi
or edi, 0x2cc44012
and edi, edx
mov edx, ebp
xor edx, edi
not edi
and edi, ebp
add edx, ebp
sub edx, edi
xor edx, ebx
add dl, 0xa8
mov byte [esp + esi], dl
inc esi
cmp esi, 4
jne 0x445ab0
mov ebx, dword [esp]
mov edx, dword [0x450d3c]
test edx, edx
je 0x445b31
xor edi, edi
mov ebp, dword [0x450d40]
mov esi, dword [esp + 0x38]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + edi*8], 0xbbe848dd
je 0x445b37
inc edi
cmp edx, edi
jne 0x445b20
jmp 0x445b6c
mov esi, dword [esp + 0x38]
jmp 0x445b6c
mov edx, dword [ebp + edi*8 + 4]
cmp edx, ebx
je 0x445b6c
lea esi, [esp + 4]
lea edi, [esp + 8]
push esi
mov esi, dword [esp + 0x3c]
push ecx
push eax
push 2
push edi
push dword [esp + 0x3c]
push 6
push dword [0x450d44]
push edx
mov edi, eax
call fcn.00441410
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
js 0x445beb
mov edx, dword [esp + 0x30]
test edx, edx
je 0x445b7d
mov ecx, dword [eax + 4]
mov dword [edx], ecx
test esi, esi
je 0x445beb
cmp dword [esp + 0x34], 0
je 0x445be6
mov edx, dword [esi]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x445b93
mov edx, ecx
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov ebp, dword [esp + 0x34]
mov edi, ebp
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, edx
xor ecx, 3
mov esi, edx
or esi, 0xfffffffc
and esi, ecx
add ebp, esi
add esi, eax
add esi, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 0x10], esi
mov edi, ebp
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
test dl, 1
mov esi, dword [esp + 0x38]
je 0x445be6
and edx, 2
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx + edx]
mov byte [ebp + edx], cl
mov ecx, dword [eax + 8]
mov dword [esi], ecx
push eax
call fcn.0043e770
add esp, 4
mov eax, ebx
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret