Function at 0x84b690
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xb0
mov dword [ebp - 0x3c], ecx
nop
mov eax, dword [ebp + 8]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x84c090
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
call fcn.0084c060
mov edi, eax
movzx esi, byte [0xa56fc2]
mov eax, dword [0xa384d0]
mov ecx, dword [0xa384b0]
sub ecx, esi
lea edx, [edi - 0x8311]
mov dword [ebp - 0x50], edx
add ecx, eax
add ecx, edi
add ecx, 0xffff7cef
call dword [0xa0535c]
call ecx
mov ebx, eax
mov eax, dword [ebp - 0x3c]
mov dword [eax], 0
mov eax, dword [0xa384c4]
mov ecx, dword [0xa384a4]
mov dword [ebp - 0x28], esi
sub ecx, esi
add ecx, eax
mov esi, ebx
xor esi, 0x7317dee
mov dword [ebp - 0x4c], edi
add ecx, edi
add ecx, 0xffff7cef
call dword [0xa0535c]
push esi
call ecx
mov ecx, eax
mov eax, ebx
xor eax, 0x15b8ae38
lea edi, [eax + ebp]
add edi, 0xffffff5c
mov esi, ebx
xor esi, 0x15b8ae27
mov dword [ebp - 0x20], ebx
mov eax, ebx
xor al, 0x1d
mov byte [ebp - 0x24], al
xor ebx, ebx
nop
mov eax, ecx
xor edx, edx
div esi
or dl, byte [ebp - 0x24]
mov byte [edi - 1], dl
dec edi
inc ebx
cmp ecx, esi
mov ecx, eax
jae 0x84b760
mov ecx, 0x8311
mov edx, dword [ebp - 0x4c]
sub ecx, edx
mov dword [ebp - 0x7c], 0
mov eax, dword [ebp - 0x20]
xor eax, 0x15b8ae22
mov dword [ebp - 0x78], eax
mov byte [ebp - 0x8c], 0
mov dword [ebp - 0x24], eax
cmp ebx, eax
mov dword [ebp - 0x10], 0xffffffff
nop
mov dword [ebp - 0x30], ecx
jbe 0x84b7e3
nop
mov eax, dword [0xa384d4]
mov esi, dword [0xa384b4]
xor esi, dword [ebp - 0x28]
sub esi, ecx
add esi, eax
mov ecx, esi
call dword [0xa0535c]
sub esp, 0xc
movzx eax, byte [ebp - 0xbc]
mov byte [esp + 4], al
mov dword [esp + 8], edi
mov dword [esp], ebx
lea ecx, [ebp - 0x8c]
call esi
jmp 0x84b81b
nop
mov dword [ebp - 0x7c], ebx
mov eax, dword [0xa384c8]
mov ecx, dword [0xa384ac]
sub ecx, dword [ebp - 0x28]
add ecx, eax
add ecx, edx
add ecx, 0xffff7cef
call dword [0xa0535c]
lea eax, [ebp - 0x8c]
push ebx
push edi
push eax
call ecx
add esp, 0xc
mov byte [ebp + ebx - 0x8c], 0
nop
mov edx, dword [ebp + 8]
mov esi, dword [edx + 0x10]
mov ecx, dword [ebp - 0x20]
mov eax, ecx
xor eax, 0x6a4751d9
cmp esi, eax
jg 0x84bd12
nop
mov eax, dword [edx]
mov dword [ebp - 0x34], eax
mov eax, dword [edx + 0x14]
mov dword [ebp - 0x44], eax
xor ecx, 0x15b8ae26
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x74], ecx
add ecx, esi
mov eax, ecx
mov dword [ebp - 0x38], ecx
cmp ecx, dword [ebp - 0x24]
ja 0x84b86f
nop
test byte [0xa57014], 1
jne 0x84b86f
mov edx, 0xf
lea ecx, [ebp - 0x6c]
jmp 0x84b908
mov ecx, dword [ebp - 0x20]
mov eax, ecx
xor eax, 0xea4751d8
cmp dword [ebp - 0x54], eax
jge 0x84b88c
mov dword [ebp - 0x2c], 0x7fffffff
mov eax, 0x80000000
jmp 0x84b8ae
nop
mov eax, dword [ebp - 0x38]
or eax, dword [ebp - 0x24]
cmp eax, 0x17
mov edx, 0x16
cmovae edx, eax
xor ecx, 0x15b8a1d3
cmp eax, ecx
mov dword [ebp - 0x2c], edx
lea eax, [edx + 1]
jbe 0x84b8ed
nop
mov ecx, dword [ebp - 0x20]
xor ecx, 0x15b8ae0e
mov dword [ebp - 0x70], ecx
add eax, ecx
mov dword [ebp - 0x10], 4
push eax
call fcn.008ea17d
add esp, 4
nop
mov edx, dword [ebp - 0x70]
add edx, eax
mov ecx, dword [ebp - 0x20]
xor ecx, 0xea4751cd
and ecx, edx
mov dword [0xa38544], 0xc280373b
mov dword [ecx - 4], eax
jmp 0x84b900
nop
mov dword [ebp - 0x10], 4
push eax
call fcn.008ea17d
add esp, 4
mov ecx, eax
nop
mov dword [ebp - 0x6c], ecx
nop
mov edx, dword [ebp - 0x2c]
nop
mov dword [ebp - 0x2c], ecx
mov eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x40]
cmova eax, dword [ebp - 0x34]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], edx
movzx eax, byte [0xa3843c]
mov ecx, dword [ebp - 0x20]
xor cl, 0x36
mov byte [ebp - 0x34], cl
cmp al, cl
je 0x84b9e5
mov eax, dword [ebp - 0x20]
mov ecx, eax
xor cl, 0x7e
mov edx, eax
xor dl, 0xdb
nop word [eax + eax]
mov eax, ecx
lock cmpxchg byte [0xa3843c], dl
je 0x84b966
cmp al, byte [ebp - 0x34]
jne 0x84b950
jmp 0x84b9e5
nop
mov eax, dword [ebp - 0x20]
mov edi, eax
xor edi, 0x54cafe6
mov ebx, eax
xor ebx, 0x15b8ae21
mov ecx, eax
xor cl, 0xb7
mov ch, al
xor ch, 0x48
cmp ebx, 2
mov eax, 1
cmovge eax, ebx
mov dword [ebp - 0x44], eax
xor esi, esi
xor ch, cl
nop word cs:[eax + eax]
mov eax, esi
xor eax, edi
mov edx, esi
and edx, edi
lea eax, [eax + edx*2]
xor edx, edx
div ebx
not edx
movzx eax, byte [ebx + edx + 0x9b7760]
and al, ch
xor al, cl
add byte [esi + 0xa38430], al
mov dword [0xa38548], 0xaeae11e8
inc esi
cmp dword [ebp - 0x44], esi
jne 0x84b9a0
nop
movzx eax, byte [ebp - 0x34]
xchg byte [0xa3843c], al
mov dword [ebp - 0x10], 0xffffffff
nop
mov eax, dword [0xa384cc]
mov ecx, dword [0xa384a8]
mov esi, dword [ebp - 0x28]
or ecx, esi
sub ecx, dword [ebp - 0x30]
add ecx, eax
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa0535c]
mov edi, dword [ebp - 0x74]
push edi
push 0xa38430
mov ebx, dword [ebp - 0x2c]
push ebx
call ecx
add esp, 0xc
add edi, ebx
mov ecx, dword [0xa384cc]
add ecx, dword [ebp - 0x50]
add ecx, esi
add ecx, dword [0xa384a8]
call dword [0xa0535c]
push dword [ebp - 0x54]
push dword [ebp - 0x40]
push edi
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x38]
mov byte [ebx + eax], 0
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x58]
cmp ecx, eax
jne 0x84ba8c
nop
mov dword [ebp - 0x10], 5
sub esp, 0x10
movzx eax, byte [ebp - 0xa4]
mov byte [esp + 4], al
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x9a5496
mov dword [esp], 1
lea ecx, [ebp - 0x6c]
call fcn.0066d8c0
mov esi, eax
mov ebx, dword [ebp - 0x20]
jmp 0x84baaa
lea edx, [eax + 1]
mov dword [ebp - 0x5c], edx
lea esi, [ebp - 0x6c]
mov edx, esi
cmp ecx, dword [ebp - 0x24]
jbe 0x84ba9f
mov edx, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x20]
mov byte [edx + eax], bl
mov byte [edx + eax + 1], 0
nop
mov eax, dword [0xa384cc]
mov ecx, dword [0xa384a8]
or ecx, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x30]
add ecx, eax
xor ebx, 0x15b8ae35
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa0535c]
lea edi, [ebp - 0xbc]
push ebx
push esi
push edi
call ecx
add esp, 0xc
mov dword [esi + 0x10], 0
mov eax, dword [ebp - 0x24]
mov dword [esi + 0x14], eax
mov byte [esi], 0
mov dword [ebp - 0x10], 6
sub esp, 0xc
movzx eax, byte [ebp - 0x48]
mov byte [esp], al
lea eax, [ebp - 0x8c]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
lea ecx, [ebp - 0xa4]
call fcn.0076d480
nop
mov eax, dword [ebp - 0xa8]
cmp eax, dword [ebp - 0x24]
jbe 0x84bb90
nop
mov edx, dword [ebp - 0xbc]
mov ecx, eax
xor ecx, 1
mov esi, eax
and esi, 1
lea esi, [ecx + esi*2]
mov edi, dword [ebp - 0x20]
mov ecx, edi
xor ecx, 0x15b8a1d2
cmp esi, ecx
jbe 0x84bb85
nop
mov ecx, dword [edx - 4]
mov esi, edi
xor esi, 0xea4751d1
add esi, edx
sub esi, ecx
mov edx, edi
xor edx, 0x15b8ae0d
cmp esi, edx
jae 0x84bd1f
mov edx, edi
xor edx, 0x15b8ae09
mov esi, edi
xor esi, edx
xor esi, 0xea4751f6
and esi, eax
xor esi, edx
and edx, eax
lea esi, [esi + edx*2]
mov edx, ecx
nop
push esi
push edx
call fcn.008ea1ad
add esp, 8
nop
mov dword [ebp - 0xac], 0
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0xa8], ecx
mov byte [ebp - 0xbc], 0
mov eax, dword [ebp - 0x58]
cmp eax, ecx
jbe 0x84bc01
nop
mov ecx, dword [ebp - 0x6c]
lea esi, [eax + 1]
mov edi, dword [ebp - 0x20]
mov edx, edi
xor edx, 0x15b8a1d2
cmp esi, edx
jbe 0x84bbf6
nop
mov edx, dword [ecx - 4]
mov esi, edi
xor esi, 0xea4751d1
add esi, ecx
sub esi, edx
mov ecx, edi
xor ecx, 0x15b8ae0d
cmp esi, ecx
jae 0x84bd2c
mov ecx, edi
xor ecx, 0x15b8ae09
add eax, ecx
mov esi, eax
mov ecx, edx
nop
push esi
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov eax, dword [ebp - 0x78]
cmp eax, dword [ebp - 0x24]
jbe 0x84bc5c
nop
mov ecx, dword [ebp - 0x8c]
lea esi, [eax + 1]
mov edi, dword [ebp - 0x20]
mov edx, edi
xor edx, 0x15b8a1d2
cmp esi, edx
jbe 0x84bc51
nop
mov edx, dword [ecx - 4]
mov esi, edi
xor esi, 0xea4751d1
add esi, ecx
sub esi, edx
mov ecx, edi
xor ecx, 0x15b8ae0d
cmp esi, ecx
jae 0x84bd39
mov ecx, edi
xor ecx, 0x15b8ae09
add eax, ecx
mov esi, eax
mov ecx, edx
nop
push esi
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov eax, dword [ebp - 0x24]
cmp dword [ebp - 0x90], eax
mov eax, dword [ebp - 0xa4]
lea ecx, [ebp - 0xa4]
cmova ecx, eax
cmp byte [0xa56fc2], 0
cmovne ecx, eax
mov dword [ebp - 0x10], 7
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
nop
mov ecx, dword [ebp - 0x3c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x90]
cmp eax, dword [ebp - 0x24]
jbe 0x84bcf8
nop
mov ecx, dword [ebp - 0xa4]
mov edx, eax
xor edx, 1
mov esi, eax
and esi, 1
lea esi, [edx + esi*2]
mov edi, dword [ebp - 0x20]
mov edx, edi
xor edx, 0x15b8a1d2
cmp esi, edx
jbe 0x84bced
nop
mov edx, dword [ecx - 4]
mov esi, edi
xor esi, 0xea4751d1
add esi, ecx
sub esi, edx
mov ecx, edi
xor ecx, 0x15b8ae0d
cmp esi, ecx
jae 0x84bd46
xor edi, 0x15b8ae09
add eax, edi
mov esi, eax
mov ecx, edx
nop
push esi
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, dword [ebp - 0x3c]
add esp, 0xb0
pop esi
pop edi
pop ebx
pop ebp
ret 4
nop
mov dword [ebp - 0x10], 4
call fcn.0066ab60
nop
mov dword [ebp - 0x10], 0
call fcn.008cd651
nop
mov dword [ebp - 0x10], 1
call fcn.008cd651
nop
mov dword [ebp - 0x10], 2
call fcn.008cd651
nop
mov dword [ebp - 0x10], 3
call fcn.008cd651
nop word cs:[eax + eax]
push ebp
sub esp, 0x10
add ebp, 0xc
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0x10
add ebp, 0xc
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0x10
add ebp, 0xc
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0x10
add ebp, 0xc
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0x10
add ebp, 0xc
nop
mov eax, dword [0xa384c0]
mov esi, dword [0xa384a0]
or esi, dword [ebp - 0x28]
sub esi, dword [ebp - 0x30]
add esi, eax
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0xbc]
call esi
add esp, 0x10
pop ebp
ret