Function at 0x83bde0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1a8
mov edi, ecx
nop
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x83ebc0
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
call fcn.0083eb90
mov edx, 0x9b7500
add edx, dword [0x9b7500]
mov ebx, dword [0x9b74f8]
mov ecx, 0x9b750c
add ecx, dword [0x9b750c]
cmp byte [edi], 0
jne 0x83c62d
nop
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x30], edi
mov edx, dword [0xa36a58]
mov eax, edx
xor eax, 1
mov ecx, edx
and ecx, 1
lea eax, [eax + ecx*2]
mov dword [0xa36a58], eax
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x4c], eax
test eax, edx
je 0x83c069
mov dword [ebp - 0x20], 0
nop
mov eax, dword [0xa369c0]
mov esi, dword [0xa369ac]
mov ecx, 0xffffa5c9
sub ecx, dword [ebp - 0x48]
mov dword [ebp - 0x28], ecx
sub esi, ecx
add esi, eax
mov dword [ebp - 0x10], 0xffffffff
mov ecx, esi
call dword [0xa0535c]
mov ecx, 0x58b8df35
call esi
mov ecx, dword [ebp - 0x30]
add ecx, 0x54
push eax
push ecx
call fcn.0084c1f0
add esp, 8
test al, al
jne 0x83bee0
nop
mov eax, dword [0xa580cc]
mov esi, dword [eax + 0x1e0]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov edi, eax
mov ecx, esi
call dword [0xa0535c]
push 0x3e8
push edi
call esi
call fcn.0084cd10
mov edi, eax
mov eax, dword [0xa369cc]
mov ebx, dword [0xa369a0]
sub ebx, dword [ebp - 0x28]
add ebx, eax
mov ecx, ebx
call dword [0xa0535c]
lea esi, [ebp - 0x1b4]
mov ecx, esi
push edi
call ebx
movzx eax, byte [0x9b74ec]
sub al, byte [ebp - 0x20]
xor ecx, ecx
mov edx, dword [ebp - 0x4c]
test dword [ebp - 0x50], edx
movzx eax, al
cmovne eax, ecx
add dword [0xa56ff4], eax
mov dword [ebp - 0x10], 0xa
mov ecx, esi
call fcn.0084c0c0
lea ecx, [ebp - 0x1b4]
call fcn.0084c180
test al, al
jne 0x83bf7b
nop
mov eax, dword [0xa580cc]
mov eax, dword [eax + 0x1e0]
mov dword [ebp - 0x20], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov esi, eax
mov dword [ebp - 0x10], 0xffffffff
mov ecx, dword [ebp - 0x20]
call dword [0xa0535c]
mov dword [ebp - 0x10], 0xa
push 0x3e9
push esi
call ecx
call fcn.0084cd10
nop
mov ecx, dword [0xa56ff4]
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x1ac]
test edx, edx
je 0x83bf9a
mov edx, dword [ebp - 0x1b0]
mov ecx, dword [ebp - 0x2c]
add ecx, dword [eax + 8]
mov dword [ebp - 0x2c], ecx
xor eax, eax
nop
cmp eax, dword [ebp - 0x2c]
jge 0x83bfe2
nop dword [eax + eax]
nop
mov ecx, dword [ebp - 0x30]
push edx
mov dword [ebp - 0x20], eax
push dword [eax*4 + 0x9b7370]
mov dword [ebp - 0x24], edx
call fcn.0083c7e0
nop
mov esi, dword [ebp - 0x24]
push esi
call fcn.008d08c0
add esp, 4
lea edx, [eax + esi]
inc edx
mov eax, dword [ebp - 0x20]
inc eax
nop
cmp eax, dword [ebp - 0x2c]
jl 0x83bfb0
lea eax, [ebp - 0x18c]
mov dword [ebp - 0x10], 0
push eax
call fcn.00795bd0
add esp, 4
nop
mov eax, dword [0xa369c4]
mov esi, dword [0xa369b0]
sub esi, dword [ebp - 0x28]
add esi, eax
mov dword [ebp - 0x10], 0xffffffff
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x1b4]
call esi
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
movzx eax, byte [0xa36911]
cmp al, 0xc7
je 0x83c246
mov cl, 0x21
nop word cs:[eax + eax]
mov al, 0xeb
lock cmpxchg byte [0xa36911], cl
je 0x83c1aa
cmp al, 0xc7
jne 0x83c050
jmp 0x83c246
nop
mov ecx, dword [ebp - 0x44]
mov edi, dword [ecx]
mov eax, ebx
xor ebx, ebx
mov dword [ebp - 0x28], eax
test eax, eax
jle 0x83be70
add edi, ecx
mov eax, dword [0xa36a74]
mov dword [ebp - 0x54], eax
mov eax, dword [0xa36a7c]
mov dword [ebp - 0x58], eax
nop
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x40], 0
jmp 0x83c0c0
xor dl, byte [ebp - 0x20]
mov dword [ebp - 0x20], edx
inc ebx
cmp ebx, dword [ebp - 0x28]
jge 0x83be77
nop
mov esi, dword [ebp - 0x2c]
lea edx, [esi + ebx]
mov eax, edi
sub eax, edx
mov edx, dword [ebp - 0x24]
sbb edx, 0
mov ecx, eax
add ecx, 0x9a197d7d
adc edx, 0xb3a64021
cmp ecx, 0x9a197d7e
sbb edx, 0xb3a64021
movzx edx, byte [esi + ebx]
jae 0x83c178
cmp dword [ebp - 0x54], 0x82ec9074
jne 0x83c150
mov ebx, eax
add bl, al
add bl, 0xf7
mov ecx, eax
shl bl, cl
mov ch, 1
mov cl, bl
shl ch, cl
shl ch, cl
add ch, ch
dec ch
mov ebx, edx
mov cl, ch
shl bl, cl
mov ch, dl
mov cl, bl
shl ch, cl
and ch, dl
mov ebx, dword [ebp - 0x40]
mov cl, bl
dec cl
mov eax, ebx
shl eax, cl
mov edx, ebx
sub edx, eax
imul edx, eax
add ebx, edx
mov esi, ebx
mov dword [0xa36a64], 0x7d9f636b
mov dl, ch
jmp 0x83c164
mov esi, dword [ebp - 0x40]
inc esi
mov ecx, eax
xor ecx, 4
and eax, 4
add ebx, ecx
lea ebx, [ebx + eax*2]
dec ebx
xor edx, edx
nop
mov eax, dword [ebp - 0x44]
lea edi, [eax + esi*4]
mov dword [ebp - 0x40], esi
add edi, dword [eax + esi*4]
mov dword [ebp - 0x24], 0
cmp dword [ebp - 0x58], 0xec8e0467
jne 0x83c0b0
mov eax, edx
sub al, byte [ebp - 0x20]
mov ah, al
mov ecx, edx
shl ah, cl
mov dword [0xa36a6c], 0x20a4ef77
mov cl, ah
sub cl, al
xor cl, ah
mov dword [ebp - 0x20], ecx
xor ebx, ebx
jmp 0x83c0b6
mov ebx, 0xfffffff0
lea eax, [0x52c423cf]
mov dword [ebp - 0x2c], eax
mov eax, 0xadd750bd
lea ecx, [0x52c423d0]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x24], 0xadd750bc
mov esi, 0x4ec4ec4f
nop word cs:[eax + eax]
mov ecx, eax
mul esi
mov edi, edx
mov eax, dword [ebp - 0x24]
mul esi
shr edx, 2
lea eax, [edx + edx*2]
lea eax, [edx + eax*4]
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + eax]
xor al, 0x65
add byte [ebx + 0xa36910], al
test ebx, ebx
je 0x83c237
shr edi, 2
lea eax, [edi + edi*2]
lea eax, [edi + eax*4]
mov edx, dword [ebp - 0x2c]
movzx eax, byte [edx + eax]
xor al, 0x65
add byte [ebx + 0xa36911], al
add ebx, 2
add edx, 0xfffffffe
mov dword [ebp - 0x2c], edx
mov eax, ecx
add eax, 2
add dword [ebp - 0x20], 0xfffffffe
add dword [ebp - 0x24], 2
jmp 0x83c1e0
mov al, 0xc7
xchg byte [0xa36911], al
mov dword [ebp - 0x10], 4
nop
mov dword [ebp - 0x10], 4
push 0x11
push 0xa36900
lea eax, [ebp - 0x1b4]
push eax
call fcn.008c72d0
add esp, 0xc
nop
mov dword [ebp - 0x10], 7
lea ecx, [ebp - 0x3c]
lea eax, [ebp - 0x1b4]
push eax
call fcn.0078e1e0
nop
mov eax, dword [ebp - 0x19c]
cmp eax, 0x10
jb 0x83c2c7
nop
mov ecx, dword [ebp - 0x1b0]
mov edx, eax
xor edx, 1
mov esi, eax
and esi, 1
lea edx, [edx + esi*2]
cmp edx, 0x1000
jb 0x83c2bc
nop
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x83c644
add eax, 0x24
mov edx, eax
mov ecx, esi
nop
push edx
push ecx
call fcn.008ea1ad
add esp, 8
nop
movzx eax, byte [0xa3692c]
cmp al, 0xc1
je 0x83c393
mov cl, 0x3b
nop dword [eax]
mov al, 0xa
lock cmpxchg byte [0xa3692c], cl
je 0x83c2f5
cmp al, 0xc1
jne 0x83c2e0
jmp 0x83c393
mov esi, 0xfffffff4
lea ecx, [0x450d7cf3]
mov eax, 0xbb8df7aa
lea edi, [0x450d7cf4]
mov ebx, 0xbb8df7a8
nop
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x24]
shr eax, 1
mov ecx, 0x92492493
mul ecx
mov ecx, edx
shr ecx, 2
lea eax, [ecx + ecx]
shl ecx, 4
sub ecx, eax
mov eax, ebx
shr eax, 1
mov edx, 0x92492493
mul edx
shr edx, 2
lea eax, [edx + edx]
shl edx, 4
sub edx, eax
movzx eax, byte [esi + 0xa3692c]
xor al, byte [edi + edx]
xor al, 0xf3
mov byte [esi + 0xa3692c], al
movzx eax, byte [esi + 0xa3692d]
mov edx, dword [ebp - 0x20]
xor al, byte [edx + ecx]
mov ecx, dword [ebp - 0x20]
xor al, 0xf3
mov byte [esi + 0xa3692d], al
mov eax, dword [ebp - 0x24]
add ecx, 0xfffffffe
add eax, 2
add edi, 0xfffffffe
add ebx, 2
add esi, 2
jne 0x83c310
mov al, 0xc1
xchg byte [0xa3692c], al
mov dword [ebp - 0x10], 4
nop
mov dword [ebp - 0x10], 4
push 0xc
push 0xa36920
lea eax, [ebp - 0x1b4]
push eax
call fcn.008c72d0
add esp, 0xc
nop
mov dword [ebp - 0x10], 6
lea ecx, [ebp - 0x3c]
lea eax, [ebp - 0x1b4]
push eax
call fcn.0078e1e0
nop
mov eax, dword [ebp - 0x19c]
cmp eax, 0x10
jb 0x83c40a
nop
mov ecx, dword [ebp - 0x1b0]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x83c3ff
nop
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x83c651
add eax, 0x24
mov edx, eax
mov ecx, esi
nop
push edx
push ecx
call fcn.008ea1ad
add esp, 8
nop
movzx eax, byte [0xa3693a]
cmp al, 0x83
je 0x83c468
mov cl, 0x14
nop dword [eax + eax]
mov al, 0x2a
lock cmpxchg byte [0xa3693a], cl
je 0x83c432
cmp al, 0x83
jne 0x83c420
jmp 0x83c468
nop
movq xmm0, qword [0xa36930]
paddb xmm0, xmmword [0x9b7350]
movq qword [0xa36930], xmm0
add byte [0xa36938], 0x69
add byte [0xa36939], 0xb9
mov al, 0x83
xchg byte [0xa3693a], al
mov dword [ebp - 0x10], 4
nop
mov dword [ebp - 0x10], 4
push 0xa
push 0xa36930
lea eax, [ebp - 0x1b4]
push eax
call fcn.008c72d0
add esp, 0xc
nop
mov dword [ebp - 0x10], 5
lea ecx, [ebp - 0x3c]
lea eax, [ebp - 0x1b4]
push eax
call fcn.0078e1e0
nop
mov eax, dword [ebp - 0x19c]
cmp eax, 0x10
jb 0x83c4e7
nop
mov ecx, dword [ebp - 0x1b0]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x83c4dc
nop
mov edx, dword [ecx - 4]
mov esi, ecx
xor esi, 0xfffffffc
and ecx, 0xfffffffc
lea ecx, [esi + ecx*2]
sub ecx, edx
cmp ecx, 0x20
jae 0x83c65e
add eax, 0x24
mov esi, eax
mov ecx, edx
nop
push esi
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov eax, dword [ebp - 0x30]
add eax, 0xb4
lea ecx, [ebp - 0x3c]
cmp eax, ecx
je 0x83c5b6
nop
mov esi, dword [eax]
test esi, esi
nop
mov ecx, dword [ebp - 0x30]
je 0x83c59d
nop
mov ebx, dword [ecx + 0xb8]
cmp esi, ebx
je 0x83c541
nop word cs:[eax + eax]
nop
mov eax, dword [esi]
mov edi, dword [eax]
mov dword [ebp - 0x10], 0xffffffff
mov ecx, edi
call dword [0xa0535c]
mov ecx, esi
push 0
call edi
add esi, 0x1c
cmp esi, ebx
jne 0x83c520
nop
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax + 0xb4]
mov eax, dword [eax + 0xbc]
sub eax, ecx
cmp eax, 0x1000
jb 0x83c571
nop
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x83c66b
add eax, 0x23
mov ecx, edx
nop
push eax
push ecx
call fcn.008ea1ad
add esp, 8
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0xb4], 0
mov dword [ecx + 0xb8], 0
mov dword [ecx + 0xbc], 0
nop
movq xmm0, qword [ebp - 0x3c]
movq qword [ecx + 0xb4], xmm0
mov eax, dword [ebp - 0x34]
mov dword [ecx + 0xbc], eax
jmp 0x83c626
nop
mov esi, dword [ebp - 0x3c]
test esi, esi
je 0x83c626
nop
mov ebx, dword [ebp - 0x38]
cmp esi, ebx
je 0x83c5f1
nop word cs:[eax + eax]
nop
mov eax, dword [esi]
mov edi, dword [eax]
mov dword [ebp - 0x10], 0xffffffff
mov ecx, edi
call dword [0xa0535c]
mov ecx, esi
push 0
call edi
add esi, 0x1c
cmp esi, ebx
jne 0x83c5d0
nop
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x34]
sub eax, ecx
cmp eax, 0x1000
jb 0x83c61b
nop
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x83c678
add eax, 0xfa0b980
add eax, 0xf05f46a3
mov ecx, edx
nop
push eax
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov eax, dword [ebp - 0x30]
mov byte [eax], 1
nop
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov al, 1
add esp, 0x1a8
pop esi
pop edi
pop ebx
pop ebp
ret
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
mov dword [ebp - 0x10], 8
call fcn.008cd651
nop
mov dword [ebp - 0x10], 9
call fcn.008cd651
nop word cs:[eax + 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
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
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
nop
mov eax, dword [0xa369d0]
mov esi, dword [0xa369a4]
sub esi, dword [ebp - 0x28]
add esi, eax
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0x1b4]
call esi
add esp, 0xc
pop ebp
ret