Function at 0x403828
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
push ebx
push esi
mov dword [ebp - 8], ecx
xor esi, esi
mov eax, dword [edx + esi*8]
mov dword [ebp + esi*4 - 0x44], eax
inc esi
cmp esi, 0xa
jl 0x403835
push 2
pop eax
mov dword [ebp - 4], eax
mov ebx, eax
push edi
xor ecx, ecx
mov esi, dword [ebp + ecx*4 - 0x44]
mov edi, esi
mov edx, dword [ebp + ecx*4 - 0x40]
mov eax, esi
sar edi, 0x1f
test cl, 1
je 0x40386f
sar eax, 0x19
and eax, edi
neg eax
sub edx, eax
shl eax, 0x19
jmp 0x40387b
sar eax, 0x1a
and eax, edi
neg eax
sub edx, eax
shl eax, 0x1a
add eax, esi
mov dword [ebp + ecx*4 - 0x40], edx
mov dword [ebp + ecx*4 - 0x44], eax
inc ecx
cmp ecx, 9
jl 0x40384d
mov ecx, dword [ebp - 0x20]
mov edx, ecx
sar edx, 0x1f
mov eax, ecx
sar eax, 0x19
and edx, eax
imul eax, edx, 0xfe000000
imul edx, edx, 0x13
add ecx, eax
add edx, dword [ebp - 0x44]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x44], edx
sub ebx, 1
jne 0x40384b
mov ecx, edx
mov eax, edx
sar eax, 0x1a
sar ecx, 0x1f
and ecx, eax
neg ecx
sub dword [ebp - 0x40], ecx
mov eax, ecx
shl eax, 0x1a
add eax, edx
inc ebx
mov dword [ebp - 0x44], eax
xor esi, esi
mov ecx, dword [ebp + esi*4 - 0x44]
mov edx, esi
and edx, ebx
mov eax, edx
xor eax, ebx
shl eax, 0x19
add eax, 0x1ffffff
and eax, ecx
mov dword [ebp + esi*4 - 0x44], eax
mov eax, ecx
sar eax, 0x1a
sar ecx, 0x19
test edx, edx
cmove ecx, eax
add dword [ebp + esi*4 - 0x40], ecx
inc esi
cmp esi, 9
jl 0x4038d1
mov eax, dword [ebp - 0x20]
mov ecx, eax
sar ecx, 0x19
and eax, 0x1ffffff
imul edi, ecx, 0x13
mov dword [ebp - 0x20], eax
add edi, dword [ebp - 0x44]
sub dword [ebp - 4], 1
mov dword [ebp - 0x44], edi
jne 0x4038cf
lea esi, [edi - 0x3ffffed]
mov edi, ebx
sar esi, 0x1f
not esi
mov ecx, dword [ebp + edi*4 - 0x44]
mov edx, edi
not edx
and edx, ebx
shl edx, 0x19
add edx, 0x1ffffff
call fcn.004037fc
mov edx, eax
and edx, esi
inc edi
mov esi, edx
cmp edi, 0xa
jl 0x40392e
mov eax, edx
and eax, 0x3ffffed
sub dword [ebp - 0x44], eax
pop edi
mov ecx, dword [ebp + ebx*4 - 0x44]
mov eax, edx
test bl, 1
je 0x40396f
and eax, 0x1ffffff
jmp 0x403974
and eax, 0x3ffffff
sub ecx, eax
mov dword [ebp + ebx*4 - 0x44], ecx
inc ebx
cmp ebx, 0xa
jl 0x40395d
mov eax, dword [ebp - 0x38]
shl eax, 5
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x34]
shl eax, 6
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 8]
add eax, eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x28]
shl eax, 3
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x44]
shl eax, 4
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x20]
shl eax, 6
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x1c], eax
mov eax, ecx
sar eax, 8
mov byte [esi + 1], al
mov eax, ecx
mov ebx, dword [ebp - 0x3c]
sar eax, 0x10
mov byte [esi + 2], al
shl edx, 2
mov eax, edx
shl ebx, 3
sar eax, 8
mov byte [esi + 4], al
mov eax, edx
sar eax, 0x10
mov byte [esi + 5], al
mov eax, ebx
sar eax, 8
mov byte [esi + 7], al
mov eax, ebx
sar eax, 0x10
mov byte [esi], cl
mov byte [esi + 8], al
sar ecx, 0x18
or cl, dl
sar edx, 0x18
mov byte [esi + 3], cl
or dl, bl
mov ecx, dword [ebp - 4]
mov eax, ecx
sar eax, 8
mov byte [esi + 0xa], al
mov eax, ecx
sar eax, 0x10
mov byte [esi + 0xb], al
mov byte [esi + 6], dl
mov edx, dword [ebp - 0xc]
mov eax, edx
sar eax, 8
mov byte [esi + 0xd], al
mov eax, edx
sar ebx, 0x18
or bl, cl
sar eax, 0x10
sar ecx, 0x18
or cl, dl
mov byte [esi + 0xe], al
mov byte [esi + 0xc], cl
mov ecx, dword [ebp - 0x30]
mov eax, ecx
sar eax, 8
mov byte [esi + 0x11], al
mov eax, ecx
sar edx, 0x18
sar eax, 0x10
mov byte [esi + 0xf], dl
mov edx, dword [ebp - 0x10]
mov byte [esi + 0x10], cl
mov byte [esi + 9], bl
mov byte [esi + 0x12], al
sar ecx, 0x18
mov eax, edx
or cl, dl
sar eax, 8
mov byte [esi + 0x14], al
mov eax, edx
sar eax, 0x10
mov byte [esi + 0x15], al
mov byte [esi + 0x13], cl
mov ecx, dword [ebp - 0x14]
mov eax, ecx
sar eax, 8
mov byte [esi + 0x17], al
mov eax, ecx
sar eax, 0x10
sar edx, 0x18
or dl, cl
mov byte [esi + 0x18], al
mov byte [esi + 0x16], dl
mov edx, dword [ebp - 0x18]
mov eax, edx
sar eax, 8
mov byte [esi + 0x1a], al
mov eax, edx
sar ecx, 0x18
or cl, dl
sar eax, 0x10
mov byte [esi + 0x1b], al
mov byte [esi + 0x19], cl
mov ecx, dword [ebp - 0x1c]
mov eax, ecx
sar eax, 8
mov byte [esi + 0x1d], al
mov eax, ecx
sar edx, 0x18
or dl, cl
sar eax, 0x10
sar ecx, 0x18
mov byte [esi + 0x1c], dl
mov byte [esi + 0x1e], al
mov byte [esi + 0x1f], cl
pop esi
pop ebx
leave
ret