Function at 0x403989
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
mov al, 1
push esi
push ebx
xor ebx, ebx
sub esp, 0x414
movzx edx, al
mov byte [esp + ebx + 0x114], al
mov byte [esp + edx + 0x14], bl
mov dword [esp + 4], 3
inc ebx
mov dword [esp], edx
call fcn.00403962
cmp ebx, 0xff
jne 0x403997
xor ebx, ebx
xor edx, edx
xor eax, eax
xor esi, esi
lea ecx, [eax + 4]
mov ebp, edx
mov edi, edx
xor edi, 0x63
and ecx, 7
sar ebp, cl
mov cl, al
sar edi, cl
lea ecx, [eax + 5]
xor ebp, edi
mov edi, edx
and ecx, 7
sar edi, cl
lea ecx, [eax + 6]
xor ebp, edi
mov edi, edx
and ecx, 7
sar edi, cl
lea ecx, [eax + 7]
xor ebp, edi
mov edi, edx
and ecx, 7
sar edi, cl
mov cl, al
inc eax
xor ebp, edi
and ebp, 1
shl ebp, cl
or esi, ebp
cmp eax, 8
jne 0x4039c6
mov eax, esi
movzx esi, al
mov byte [esp + ebx + 0x214], al
mov byte [esp + esi + 0x314], bl
inc ebx
cmp ebx, 0x100
je 0x403a40
movzx eax, byte [esp + ebx + 0x14]
mov esi, 0xff
sub esi, eax
movzx edx, byte [esp + esi + 0x114]
jmp 0x4039c2
mov byte [esp + 0x215], 0x7c
mov byte [esp + 0x390], 1
xor ebx, ebx
mov byte [esp + 0x377], 0
movzx ebp, byte [esp + ebx + 0x214]
mov dword [esp + 4], 2
mov dword [esp], ebp
call fcn.00403962
mov dword [esp], ebp
mov dword [esp + 4], 1
movzx esi, al
call fcn.00403962
movzx edi, al
mov dword [esp], ebp
mov dword [esp + 4], 3
mov eax, edi
shl eax, 0x10
mov dword [esp + 0xc], eax
mov eax, esi
shl eax, 0x18
or eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov eax, edi
shl eax, 8
mov dword [esp + 8], eax
call fcn.00403962
mov ebp, dword [esp + 0x10]
movzx eax, al
mov edx, edi
mov ecx, eax
shl edx, 0x18
shl ecx, 0x18
or ecx, dword [esp + 8]
or ebp, eax
or ebp, dword [esp + 8]
or ecx, edi
mov dword [ebx*4 + 0x42da00], ebp
mov ebp, esi
shl ebp, 0x10
or ecx, ebp
mov ebp, esi
mov dword [ebx*4 + 0x42ce00], ecx
mov ecx, eax
shl ebp, 8
shl ecx, 0x10
shl eax, 8
or ecx, edx
or esi, eax
or ecx, edi
or edi, dword [esp + 8]
or ecx, ebp
movzx ebp, byte [esp + ebx + 0x314]
mov dword [esp + 4], 0xe
mov dword [ebx*4 + 0x42d600], ecx
mov ecx, dword [esp + 0xc]
or ecx, edx
mov dword [esp], ebp
or esi, ecx
or edi, ecx
mov dword [ebx*4 + 0x42de00], esi
mov dword [ebx*4 + 0x42c600], edi
call fcn.00403962
mov dword [esp + 4], 9
movzx esi, al
mov dword [esp], ebp
call fcn.00403962
mov edi, esi
movzx eax, al
mov dword [esp + 4], 0xd
mov dword [esp + 8], eax
shl edi, 0x18
shl eax, 0x10
mov dword [esp], ebp
or edi, eax
call fcn.00403962
mov dword [esp + 4], 0xb
movzx edx, al
mov dword [esp], ebp
mov dword [esp + 0xc], edx
call fcn.00403962
mov edx, dword [esp + 0xc]
movzx ecx, al
or edi, ecx
mov eax, edx
shl eax, 8
or edi, eax
mov eax, esi
mov dword [ebx*4 + 0x42d200], edi
mov edi, ecx
shl eax, 0x10
shl edi, 0x18
or eax, edi
mov edi, dword [esp + 8]
or eax, edx
shl edi, 8
or eax, edi
mov edi, edx
shl edx, 0x10
mov dword [ebx*4 + 0x42be00], eax
mov eax, ecx
shl edi, 0x18
shl eax, 0x10
shl ecx, 8
mov dword [esp + 4], 1
or eax, edi
or eax, dword [esp + 8]
mov edi, esi
shl edi, 8
mov dword [esp], ebp
or eax, edi
mov dword [ebx*4 + 0x42c200], eax
mov eax, dword [esp + 8]
shl eax, 0x18
or edx, eax
or esi, edx
or esi, ecx
mov dword [ebx*4 + 0x42ba00], esi
call fcn.00403962
movzx eax, al
mov ecx, eax
mov edx, eax
shl ecx, 0x18
shl edx, 0x10
or edx, ecx
or edx, eax
shl eax, 8
or eax, edx
mov dword [ebx*4 + 0x42ca00], eax
inc ebx
cmp ebx, 0x100
jne 0x403a5a
add esp, 0x414
pop ebx
pop esi
pop edi
pop ebp
ret