Function at 0x8a0630
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x13c
nop
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x8ab180
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
call fcn.008aa8a0
mov esi, eax
mov eax, dword [0xa58500]
mov ecx, dword [0xa587a8]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 0x26828]
jg 0x8a069a
nop
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
add esp, 0x13c
pop esi
pop edi
pop ebx
pop ebp
ret
nop
mov eax, dword [0xa570cc]
mov dword [ebp - 0x30], eax
push 0xa58500
call fcn.008ea32a
add esp, 4
cmp dword [0xa58500], 0xffffffff
jne 0x8a0685
nop
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x58], 2
movzx eax, byte [0xa42d3e]
cmp al, 0xae
je 0x8a074c
mov cl, 0xf4
mov al, 0x4c
lock cmpxchg byte [0xa42d3e], cl
je 0x8a06e3
cmp al, 0xae
jne 0x8a06d1
jmp 0x8a074c
xor ebx, ebx
mov ecx, 0x439ef498
mov esi, 0x439ef497
mov eax, ecx
mov edx, 0x4ec4ec4f
mul edx
mov edi, edx
mov eax, esi
mov edx, 0x4ec4ec4f
mul edx
shr edx, 2
imul eax, edx, 0xfffffff3
movzx eax, byte [eax + ebx + 0x443a9697]
xor al, 0x24
add byte [ebx + 0xa42d30], al
shr edi, 2
imul eax, edi, 0xfffffff3
movzx eax, byte [eax + ebx + 0x443a9698]
xor al, 0x24
add byte [ebx + 0xa42d31], al
add ebx, 2
add ecx, 2
add esi, 2
cmp ebx, 0xe
jne 0x8a06ef
mov al, 0xae
xchg byte [0xa42d3e], al
mov dword [ebp - 0x10], 0
lea eax, [ebp - 0x148]
mov dword [ebp - 0x48], eax
mov byte [ebp - 0x21], 1
mov dword [ebp - 0x10], 0
lea ecx, [ebp - 0xc8]
push 0xa42d30
call fcn.0076f010
nop
mov dword [ebp - 0xb0], 0xa
lea ecx, [ebp - 0x148]
mov dword [ebp - 0x3c], ecx
mov byte [ebp - 0x1f], 1
mov dword [ebp - 0x10], 1
lea eax, [ebp - 0x58]
lea edx, [ebp - 0xc8]
push edx
push eax
call fcn.008a8620
nop
mov dword [ebp - 0x54], 1
movzx eax, byte [0xa42d4f]
cmp al, 0xdc
je 0x8a085a
mov cl, 0x2c
mov al, 0x77
lock cmpxchg byte [0xa42d4f], cl
je 0x8a07cd
cmp al, 0xdc
jne 0x8a07b8
jmp 0x8a085a
mov ebx, 0xfffffff2
lea eax, [0x4bab2e85]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x2c], 0xb4f07395
lea eax, [0x4bab2e86]
mov dword [ebp - 0x44], eax
mov esi, 0xb4f07394
nop
mov eax, dword [ebp - 0x2c]
mov ecx, 0xba2e8ba3
mul ecx
mov edi, edx
mov eax, esi
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea eax, [edx + eax*2]
mov ecx, dword [ebp - 0x44]
movzx eax, byte [ecx + eax]
xor al, 0x42
add byte [ebx + 0xa42d4e], al
test ebx, ebx
je 0x8a084b
shr edi, 3
lea eax, [edi + edi*4]
lea eax, [edi + eax*2]
mov edx, dword [ebp - 0x40]
movzx eax, byte [edx + eax]
xor al, 0x42
add byte [ebx + 0xa42d4f], al
add ebx, 2
add edx, 0xfffffffe
mov dword [ebp - 0x40], edx
add dword [ebp - 0x2c], 2
add dword [ebp - 0x44], 0xfffffffe
add esi, 2
jmp 0x8a07f0
mov al, 0xdc
xchg byte [0xa42d4f], al
mov dword [ebp - 0x10], 1
lea eax, [ebp - 0x128]
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x1f], 1
mov dword [ebp - 0x10], 1
lea ecx, [ebp - 0xac]
push 0xa42d40
call fcn.0076f010
nop
mov dword [ebp - 0x94], 0xa
lea ecx, [ebp - 0x128]
mov dword [ebp - 0x38], ecx
mov byte [ebp - 0x1e], 1
mov dword [ebp - 0x10], 2
lea eax, [ebp - 0x54]
lea edx, [ebp - 0xac]
push edx
push eax
call fcn.008a8620
nop
mov dword [ebp - 0x50], 0xd
movzx eax, byte [0xa42d5e]
cmp al, 0x36
je 0x8a091b
mov cl, 0xac
mov al, 0x28
lock cmpxchg byte [0xa42d5e], cl
je 0x8a08d4
cmp al, 0x36
jne 0x8a08c2
jmp 0x8a091b
nop
movq xmm0, qword [0xa42d50]
paddb xmm0, xmmword [0x9b9c30]
movq qword [0xa42d50], xmm0
add byte [0xa42d58], 5
movd xmm0, dword [0xa42d5a]
paddb xmm0, xmmword [0x9b9c40]
movd dword [0xa42d5a], xmm0
mov al, 0x36
xchg byte [0xa42d5e], al
mov dword [ebp - 0x10], 2
lea eax, [ebp - 0x108]
mov dword [ebp - 0x38], eax
mov byte [ebp - 0x1e], 1
mov dword [ebp - 0x10], 2
lea ecx, [ebp - 0x90]
push 0xa42d50
call fcn.0076f010
nop
mov dword [ebp - 0x78], 0xa
lea ecx, [ebp - 0x108]
mov dword [ebp - 0x34], ecx
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 3
lea eax, [ebp - 0x50]
lea edx, [ebp - 0x90]
push edx
push eax
call fcn.008a8620
nop
mov dword [ebp - 0x4c], 0x13
movzx eax, byte [0xa42d6d]
cmp al, 0xc5
je 0x8a0a1a
mov cl, 0x7b
mov al, 0x4b
lock cmpxchg byte [0xa42d6d], cl
je 0x8a0999
cmp al, 0xc5
jne 0x8a0984
jmp 0x8a0a1a
xor ebx, ebx
mov dword [ebp - 0x2c], 0x5a6059a2
mov esi, 0x5a6059a1
mov ecx, 0x38e38e39
nop
mov eax, dword [ebp - 0x2c]
mul ecx
mov edi, edx
mov eax, esi
mul ecx
shr edx, 1
lea eax, [edx + edx*8]
movzx edx, byte [ebx + 0xa42d60]
neg eax
xor dl, byte [ebx + eax + 0x5afbfbc1]
xor dl, 0xcc
mov byte [ebx + 0xa42d60], dl
cmp ebx, 0xc
je 0x8a0a0b
shr edi, 1
lea eax, [edi + edi*8]
mov edx, 0x9ba220
sub edx, eax
add edx, 0x5a6059a2
movzx eax, byte [ebx + 0xa42d61]
xor al, byte [edx + ebx]
xor al, 0xcc
mov byte [ebx + 0xa42d61], al
add ebx, 2
add dword [ebp - 0x2c], 2
add esi, 2
jmp 0x8a09ac
mov al, 0xc5
xchg byte [0xa42d6d], al
mov dword [ebp - 0x10], 3
lea eax, [ebp - 0xe8]
mov dword [ebp - 0x34], eax
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 3
lea ecx, [ebp - 0x74]
push 0xa42d60
call fcn.0076f010
nop
mov dword [ebp - 0x5c], 0xa
mov byte [ebp - 0x20], 1
mov dword [ebp - 0x10], 4
lea eax, [ebp - 0x4c]
lea ecx, [ebp - 0xe8]
lea edx, [ebp - 0x74]
push edx
push eax
call fcn.008a8620
lea eax, [ebp - 0xc8]
mov dword [ebp - 0x10], 5
mov ecx, 0xa584e0
push eax
lea eax, [ebp - 0x148]
push eax
call fcn.008a8840
nop
mov eax, dword [0xa432e0]
mov ecx, dword [0xa432d4]
mov ebx, dword [ebp - 0x30]
sub ecx, ebx
mov edx, 0xffff198a
mov edi, dword [ebp - 0x28]
sub edx, edi
mov dword [ebp - 0x2c], edx
add ecx, eax
lea esi, [edi + ecx]
add esi, 0xe676
mov dword [ebp - 0x10], 0xffffffff
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0xe8]
call esi
mov eax, dword [0xa432e0]
add eax, edi
mov ecx, dword [0xa432d4]
add eax, ebx
lea esi, [ecx + eax]
add esi, 0xe676
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x108]
call esi
mov eax, dword [0xa432e0]
mov esi, dword [0xa432d4]
or esi, ebx
mov edi, dword [ebp - 0x2c]
sub esi, edi
add esi, eax
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x128]
call esi
mov eax, dword [0xa432e0]
mov esi, dword [0xa432d4]
xor esi, ebx
sub esi, edi
add esi, eax
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x148]
call esi
mov eax, dword [0xa432e4]
mov ecx, dword [0xa432d0]
sub ecx, ebx
add ecx, eax
mov edi, dword [ebp - 0x28]
lea esi, [edi + ecx]
add esi, 0xe676
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x74]
call esi
mov eax, dword [0xa432e4]
mov ecx, dword [0xa432d0]
sub ecx, ebx
add ecx, eax
lea esi, [edi + ecx]
add esi, 0xe676
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x90]
call esi
mov eax, dword [0xa432e4]
mov esi, dword [0xa432d0]
or esi, ebx
mov edi, dword [ebp - 0x2c]
sub esi, edi
add esi, eax
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0xac]
call esi
mov eax, dword [0xa432e4]
xor ebx, dword [0xa432d0]
sub ebx, edi
add ebx, eax
mov ecx, ebx
call dword [0xa0535c]
lea ecx, [ebp - 0xc8]
call ebx
push 0x8a8b10
call fcn.008ea168
add esp, 4
push 0xa58500
call fcn.008ea2e0
add esp, 4
jmp 0x8a0685