Function at 0x446df0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x38]
test eax, eax
je 0x446e3a
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x446e10
sar ecx, 1
mov edx, ecx
and edx, 0xfffd
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
xor esi, 2
imul esi, edx
add ecx, esi
jmp 0x446e3c
xor ecx, ecx
mov word [esp + 0x14], cx
mov edx, eax
test eax, eax
je 0x446e4c
add ecx, 2
mov edx, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0xc], ecx
mov word [esp + 0x16], dx
mov dword [esp + 0x18], eax
mov dword [esp], 0x34353a3b
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0x2d2e5e76
mov ecx, 0xd2d1a189
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x2d2e5e76]
mov edx, eax
and edx, ebx
add edx, edx
sub edx, ebx
add edx, ecx
and edx, eax
mov esi, edx
and esi, 0x2d2e5e7d
mov ebp, edx
and ebp, 2
mov edi, edx
or edi, 0xfffffffd
inc edi
imul edi, esi
or edx, 2
imul edx, ebp
add edi, ebx
sub edi, edx
add edi, eax
mov edx, edi
and edx, 0x31
add edx, edx
xor edi, 0x4e
sub edx, edi
mov byte [esp + eax - 0x2d2e5e76], dl
inc eax
dec ecx
cmp eax, 0x2d2e5e7d
jne 0x446e80
mov ebx, dword [esp]
mov eax, dword [0x45316c]
test eax, eax
je 0x446f2f
xor ecx, ecx
mov edx, dword [0x453170]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xbbe848dd
je 0x446f00
inc ecx
cmp eax, ecx
jne 0x446ef0
jmp 0x446f2f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x446f2f
lea ecx, [esp + 0x10]
lea edx, [esp + 0x14]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x48]
push 6
push dword [0x453174]
push eax
call fcn.004421f0
add esp, 0x24
mov ebx, eax
mov dword [esp], 0xf7b689a7
mov dword [esp + 4], 0
mov eax, 0xde
mov ecx, 0x21
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0xde]
mov esi, ecx
or esi, edi
mov ebp, eax
and ebp, 0xa5
mov edx, ecx
and edx, 0x1a
or edx, ebp
not esi
xor edx, 0xa5
and edx, edi
or edx, esi
add dl, 0xaa
mov byte [esp + eax - 0xde], dl
inc eax
dec ecx
cmp eax, 0xe6
jne 0x446f50
cmp ebx, dword [esp]
jne 0x44711b
push dword [esp + 0x10]
call fcn.0043f350
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov dword [esp], 0x34353a3b
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov ebp, 0x2d2e5e76
mov edi, 0xd2d1a189
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebp - 0x2d2e5e76]
mov edx, ebp
and edx, eax
add edx, edx
sub edx, eax
add edx, edi
and edx, ebp
mov ecx, edx
and ecx, 0x2d2e5e7d
mov ebx, edx
and ebx, 2
mov esi, edx
or esi, 0xfffffffd
inc esi
imul esi, ecx
or edx, 2
imul edx, ebx
add esi, eax
sub esi, edx
add esi, ebp
mov edx, esi
and edx, 0x31
add edx, edx
xor esi, 0x4e
sub edx, esi
mov byte [esp + ebp - 0x2d2e5e76], dl
inc ebp
dec edi
cmp ebp, 0x2d2e5e7d
jne 0x446fd0
mov ebx, dword [esp]
mov edx, dword [0x45316c]
test edx, edx
je 0x447050
xor esi, esi
mov edi, dword [0x453170]
mov ebp, dword [esp + 0x44]
nop
nop
nop
nop
cmp dword [edi + esi*8], 0xbbe848dd
je 0x447056
inc esi
cmp edx, esi
jne 0x447040
jmp 0x44708a
mov ebp, dword [esp + 0x44]
jmp 0x44708a
mov edx, dword [edi + esi*8 + 4]
cmp edx, ebx
je 0x44708a
lea eax, [esp + 0x10]
lea ecx, [esp + 0x14]
push eax
push dword [esp + 0x20]
mov eax, dword [esp + 0x10]
push eax
push 2
push ecx
push dword [esp + 0x48]
push 6
push dword [0x453174]
push edx
call fcn.004421f0
add esp, 0x24
mov ebx, eax
test ebx, ebx
mov ecx, dword [esp + 0x40]
js 0x44710f
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x4470a3
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
mov dword [edx], eax
test ebp, ebp
je 0x44710f
test ecx, ecx
je 0x447105
mov edx, dword [ebp]
mov eax, dword [esp + 8]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x4470bb
mov edx, ecx
mov eax, dword [esp + 8]
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, dword [esp + 0x40]
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, edx
and ecx, 0xfffffffc
add dword [esp + 0xc], ecx
lea esi, [eax + ecx]
add esi, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov eax, esi
mov edi, dword [esp + 0xc]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [esp + 0xc]
test dl, 1
je 0x447105
and edx, 2
movzx eax, byte [esi + edx]
mov byte [ecx + edx], al
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov dword [ebp], eax
push dword [esp + 8]
call fcn.0043f400
add esp, 4
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret