Function at 0x837ae0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x50
mov dword [ebp - 0x20], ecx
nop
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x8389d0
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
call fcn.00838690
mov dword [ebp - 0x24], eax
movzx eax, byte [0xa35ba0]
cmp al, 0x28
je 0x837baf
mov cl, 0x1c
nop dword [eax]
mov al, 0x6e
lock cmpxchg byte [0xa35ba0], cl
je 0x837b42
cmp al, 0x28
jne 0x837b30
jmp 0x837baf
mov edi, 0xffffffc0
mov ecx, 0x18c199d0
mov ebx, 0xf0f0f0f1
nop word cs:[eax + eax]
mov eax, ecx
mul ebx
shr edx, 6
imul eax, edx, 0xffffffbc
movzx edx, byte [edi + 0xa35ba0]
xor dl, byte [eax + edi + 0x195d0be0]
xor dl, 4
mov byte [edi + 0xa35ba0], dl
movzx edx, byte [edi + 0xa35ba1]
xor dl, byte [eax + edi + 0x195d0be1]
xor dl, 4
mov byte [edi + 0xa35ba1], dl
add ecx, 2
add edi, 2
jne 0x837b60
mov al, 0x28
xchg byte [0xa35ba0], al
mov dword [ebp - 0x10], 0xffffffff
nop
mov dword [ebp - 0x10], 0xffffffff
lea ecx, [ebp - 0x5c]
push 0xa35b60
push esi
call fcn.0084f4a0
mov eax, dword [ebp - 0x20]
lea esi, [eax + 4]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
push esi
call fcn.008d08c0
add esp, 4
cmp eax, 0xf
jbe 0x837c15
nop
mov dword [ebp - 0x10], 2
sub esp, 0xc
movzx ecx, byte [ebp - 0x28]
mov byte [esp + 4], cl
mov dword [esp + 8], esi
mov dword [esp], eax
lea ecx, [ebp - 0x44]
call fcn.0066cb40
jmp 0x837c48
nop
mov dword [ebp - 0x34], eax
mov ecx, dword [0xa360b0]
add ecx, dword [ebp - 0x24]
mov edx, dword [0xa360a4]
add ecx, edx
add ecx, 0xd28e
mov edi, eax
call dword [0xa0535c]
lea eax, [ebp - 0x44]
push edi
push esi
push eax
call ecx
add esp, 0xc
mov byte [ebp + edi - 0x44], 0
nop
mov dword [ebp - 0x10], 4
lea eax, [ebp - 0x44]
lea ecx, [ebp - 0x5c]
push dword [ebp - 0x48]
push eax
call fcn.0084f640
nop
mov eax, dword [ebp - 0x30]
cmp eax, 0x10
jb 0x837ca4
nop
mov ecx, dword [ebp - 0x44]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x837c99
nop
mov edx, dword [ecx - 4]
cmp byte [0xa57038], 0
jne 0x837c92
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x837e02
add eax, 0x24
mov esi, eax
mov ecx, edx
nop
push esi
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx]
mov dword [ecx + 0x34], eax
mov dword [ebp - 0x10], 2
lea eax, [ebp - 0x44]
push eax
call fcn.0078b050
add esp, 4
nop
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x20]
lea edx, [ecx + 0x2c]
mov dword [ecx + 0x38], eax
mov dword [ecx + 0x30], 0xb32199c
lea ecx, [ebp - 0x5c]
push edx
call fcn.0084f8e0
lea ecx, [ebp - 0x5c]
mov eax, dword [ebp - 0x20]
push dword [eax + 0x430]
push dword [eax + 0x42c]
call fcn.0084f9b0
nop
mov dword [0xa36308], 0x56a9b3ad
cmp dword [0xa580c0], 0
jne 0x837d38
nop
push 0x20
call fcn.008ea17d
add esp, 4
nop
mov dword [eax + 0x1c], 0xf
mov dword [eax + 4], 0x920fc0
mov dword [eax], 0
mov dword [eax + 0x18], 0
mov byte [eax + 8], 0
mov dword [0xa580c0], eax
nop
mov eax, dword [0xa580c0]
mov dword [ebp - 0x2c], 0xf
mov dword [ebp - 0x30], 0
mov byte [ebp - 0x40], 0
mov dword [ebp - 0x44], 0x920fc0
mov ecx, dword [eax]
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x837d73
add eax, 4
mov dword [ebp - 0x10], 3
lea ecx, [ebp - 0x44]
push eax
call fcn.0078a100
nop
mov dword [ebp - 0x10], 3
lea ecx, [ebp - 0x5c]
lea eax, [ebp - 0x44]
push eax
push dword [ebp - 0x20]
push 0xb32199c
call fcn.0084f940
nop
mov eax, dword [ebp - 0x2c]
cmp eax, 0x10
jb 0x837dd1
nop
mov ecx, dword [ebp - 0x40]
lea edx, [eax + 1]
cmp edx, 0xfff
ja 0x837db1
nop
test byte [0xa57044], 1
je 0x837dc6
nop
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x837e0f
add eax, 0x24
mov edx, eax
mov ecx, esi
nop
push edx
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov dword [ebp - 0x10], 2
lea ecx, [ebp - 0x5c]
push dword [ebp + 8]
call fcn.0084fbf0
lea ecx, [ebp - 0x5c]
call fcn.0084f520
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret 8
nop
mov dword [ebp - 0x10], 0
call fcn.008cd651
nop
mov dword [ebp - 0x10], 1
call fcn.008cd651
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
nop
mov ecx, dword [ebp - 0x24]
add ecx, dword [0xa360b4]
mov eax, dword [0xa360a8]
lea esi, [eax + ecx]
add esi, 0xd28e
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x44]
call esi
add esp, 0xc
pop ebp
ret