Function at 0x401b70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x814
mov eax, dword [0x44e414]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 8]
mov eax, edx
shr eax, 0x18
mov byte [ebp - 0x804], al
mov eax, edx
shr eax, 0x10
push ebx
mov ebx, dword [ebp + 0xc]
mov byte [ebp - 0x803], al
mov eax, edx
shr eax, 8
push esi
mov esi, dword [ebp + 0x10]
mov byte [ebp - 0x802], al
lea eax, [ebx + 8]
push edi
push eax
mov dword [ebp - 0x814], ecx
mov dword [ebp - 0x80c], ebx
mov byte [ebp - 0x801], dl
call fcn.004395d8
mov ecx, ebx
add esp, 4
mov edi, eax
mov dword [ebp - 0x810], edi
and ecx, 0x80000003
jns 0x401be7
dec ecx
or ecx, 0xfffffffc
add ecx, 1
push dword [ebp - 0x80c]
push esi
push edi
jne 0x401c9d
lea eax, [ebx - 1]
mov dword [ebp - 0x808], eax
mov bl, al
call fcn.0043a372
mov eax, dword [ebp - 0x808]
add esp, 0xc
movzx edi, al
xor ecx, ecx
lea edx, [edi + 1]
test edx, edx
je 0x401c82
cmp edx, 0x20
jb 0x401c82
mov eax, edx
xorps xmm1, xmm1
and eax, 0xffffffe0
xorps xmm2, xmm2
nop word [eax + eax]
movups xmm0, xmmword [esi + ecx]
pxor xmm1, xmm0
movups xmm0, xmmword [esi + ecx + 0x10]
add ecx, 0x20
pxor xmm2, xmm0
cmp ecx, eax
jl 0x401c30
pxor xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
pxor xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
pxor xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 2
pxor xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 1
pxor xmm1, xmm0
movd eax, xmm1
xor bl, al
cmp ecx, edx
jge 0x401d6e
nop word [eax + eax]
xor bl, byte [esi + ecx]
inc ecx
cmp ecx, edx
jl 0x401c90
jmp 0x401d6e
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
shl al, 2
add al, 3
mov dword [ebp - 0x808], eax
mov bl, al
call fcn.0043a372
mov edx, dword [ebp - 0x80c]
add esp, 0xc
xor ecx, ecx
test edx, edx
jle 0x401d3e
cmp edx, 0x20
jb 0x401d36
mov eax, edx
xorps xmm1, xmm1
and eax, 0xffffffe0
xorps xmm2, xmm2
nop dword [eax]
movups xmm0, xmmword [esi + ecx]
pxor xmm1, xmm0
movups xmm0, xmmword [esi + ecx + 0x10]
add ecx, 0x20
pxor xmm2, xmm0
cmp ecx, eax
jl 0x401ce0
pxor xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
pxor xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
pxor xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 2
pxor xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 1
pxor xmm1, xmm0
movd eax, xmm1
xor bl, al
cmp ecx, edx
jge 0x401d3e
xor bl, byte [esi + ecx]
inc ecx
cmp ecx, edx
jl 0x401d36
mov eax, dword [ebp - 0x808]
movzx edi, al
cmp edx, edi
jg 0x401d6e
mov ecx, dword [ebp - 0x810]
mov esi, edi
sub esi, edx
add ecx, edx
inc esi
push esi
push 0xff
push ecx
call fcn.0043a378
add esp, 0xc
not bl
sub esi, 1
jne 0x401d67
mov esi, dword [ebp - 0x810]
mov edx, dword [ebp - 0x808]
push 0x31
mov byte [edi + esi + 1], bl
mov ebx, dword [ebp - 0x814]
mov byte [ebp - 0x800], dl
mov ecx, dword [ebx + 0xc]
call fcn.0042a130
mov ecx, dword [ebx + 0xc]
lea edx, [ebp - 0x804]
push edx
push 5
mov eax, dword [ecx]
call dword [eax + 0x30]
push 0x400
lea eax, [ebp - 0x404]
push 0
push eax
call fcn.0043a378
mov ecx, dword [ebx + 0xc]
lea edx, [ebp - 0x404]
add esp, 0xc
mov eax, dword [ecx]
push edx
push 1
call dword [eax + 0x38]
mov al, byte [ebp - 0x404]
cmp al, 0x1f
jne 0x401deb
pop edi
pop esi
mov al, 0x24
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004395e6
mov esp, ebp
pop ebp
ret 0x10
cmp al, 0x79
jne 0x401e7c
mov ecx, dword [ebx + 0xc]
push 4
call fcn.0042a130
mov ecx, dword [ebx + 0xc]
lea eax, [edi + 2]
push esi
push eax
mov edx, dword [ecx]
call dword [edx + 0x30]
test esi, esi
je 0x401e17
push esi
call fcn.004395e1
add esp, 4
mov ecx, dword [ebx + 0xc]
lea edx, [ebp - 0x404]
push edx
push 1
xor edi, edi
xor esi, esi
mov eax, dword [ecx]
call dword [eax + 0x38]
nop dword [eax]
cmp eax, 1
jne 0x401e5e
mov al, byte [ebp - 0x404]
cmp al, 0x79
jne 0x401e5a
inc esi
cmp esi, 2
jne 0x401e5e
pop edi
pop esi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004395e6
mov esp, ebp
pop ebp
ret 0x10
cmp al, 0x1f
je 0x401e7c
mov ecx, dword [ebx + 0xc]
lea edx, [ebp - 0x404]
mov byte [ebp - 0x404], 0xff
inc edi
push edx
push 1
mov eax, dword [ecx]
call dword [eax + 0x38]
cmp edi, 0x32
jl 0x401e30
mov ecx, dword [ebp - 4]
mov al, 0x14
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004395e6
mov esp, ebp
pop ebp
ret 0x10