Function at 0x83b2c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1cc
mov esi, ecx
nop
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x83bdd0
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
call fcn.0083bdc0
mov edx, dword [0xa3681c]
mov ecx, dword [0xa367f8]
mov edi, 0x5e8f
sub edi, eax
mov dword [ebp - 0x3c], edi
sub ecx, edi
add ecx, edx
call dword [0xa0535c]
call ecx
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 8]
je 0x83b397
mov edx, ecx
mov edi, dword [0xa580cc]
mov ecx, eax
xor ecx, 0xd2daf3c8
mov dword [ebp - 0x34], ecx
mov ecx, eax
xor ecx, 0xd2daf3d4
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x24], eax
xor eax, 0xd2daf3c3
mov dword [ebp - 0x2c], eax
nop dword [eax + eax]
nop
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
cmp dword [edx + ecx], eax
mov dword [ebp - 0x20], edx
jbe 0x83b370
mov eax, dword [ebp - 0x34]
mov ebx, dword [edx + eax]
jmp 0x83b376
mov eax, dword [ebp - 0x34]
lea ebx, [edx + eax]
mov ecx, dword [edi + 0x288]
call dword [0xa0535c]
push ebx
push 0
call ecx
test eax, eax
jne 0x83b39e
nop
mov edx, dword [ebp - 0x20]
add edx, 0x1c
cmp edx, dword [esi + 8]
jne 0x83b350
xor eax, eax
jmp 0x83bb14
mov esi, eax
cmp dword [0xa580c0], 0
jne 0x83b3de
nop
mov eax, dword [ebp - 0x24]
xor eax, 0xd2daf3ec
push eax
call fcn.008ea17d
add esp, 4
mov ecx, dword [ebp - 0x2c]
mov dword [eax + 0x1c], ecx
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 edi, dword [ebp - 0x24]
mov ecx, edi
xor ecx, 0xd2daf3c2
mov dword [eax], ecx
mov eax, edi
xor eax, 0xd2daf3d8
mov dword [ebp - 0x44], eax
mov dword [ebp + eax - 0x88], 0
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
mov dword [ebp + ecx - 0x88], eax
mov eax, dword [ebp - 0x34]
mov byte [ebp + eax - 0x88], 0
mov dword [ebp - 0x88], 0x920fc0
lea eax, [ebp - 0x1d5]
push 0x105
push 0
push eax
call fcn.00901a10
add esp, 0xc
mov dword [ebp - 0x6c], 0
mov eax, edi
xor eax, 0xd2daf2c8
mov dword [ebp - 0x58], eax
mov eax, dword [0xa580cc]
mov dword [ebp - 0x28], eax
mov ecx, dword [eax + 0x294]
call dword [0xa0535c]
mov dword [ebp - 0x10], 3
lea eax, [ebp - 0x6c]
push eax
push esi
call ecx
nop
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0x238]
mov esi, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x24]
xor edi, 0xd2c50c33
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa0535c]
mov dword [ebp - 0x10], 3
push esi
push 0
push edi
call ecx
mov esi, eax
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0x260]
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa0535c]
mov dword [ebp - 0x10], 3
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x1d5]
push eax
push 0
push esi
mov dword [ebp - 0x38], esi
call ecx
mov esi, dword [ebp - 0x38]
nop
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0x214]
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa0535c]
mov dword [ebp - 0x10], 3
push esi
call ecx
nop
mov ecx, dword [ebp - 0x58]
xor eax, eax
sub ecx, 0x64
cmovb ecx, eax
mov dword [ebp - 0x50], ecx
lea ecx, [ebp - 0x88]
push dword [ebp - 0x20]
call fcn.0078a100
nop
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
mov dword [ebp + ecx - 0xd0], eax
mov ecx, dword [ebp - 0x24]
mov edx, ecx
xor edx, 0xd2daf3cf
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x38], edx
mov dword [ebp + eax - 0xd0], edx
movzx eax, byte [0xa36754]
xor cl, 0xc2
mov byte [ebp - 0x20], cl
cmp al, cl
mov eax, dword [ebp - 0x34]
lea eax, [ebp + eax - 0xd0]
mov dword [ebp - 0x54], eax
je 0x83b641
mov eax, dword [ebp - 0x24]
mov ecx, eax
xor cl, 0x1d
mov edx, eax
xor dl, 0xf
nop dword [eax]
mov eax, ecx
lock cmpxchg byte [0xa36754], dl
je 0x83b586
cmp al, byte [ebp - 0x20]
jne 0x83b570
jmp 0x83b641
nop
mov ebx, dword [ebp - 0x24]
mov eax, ebx
xor eax, 0xd8d5caaa
mov dword [ebp - 0x48], eax
xor ecx, ecx
mov edi, dword [ebp - 0x34]
cmp edi, 2
mov eax, 1
cmovge eax, edi
mov dword [ebp - 0x4c], eax
jl 0x83b606
mov eax, dword [ebp - 0x4c]
and eax, 0x7ffffffe
mov dword [ebp - 0x28], eax
xor ecx, ecx
mov esi, dword [ebp - 0x48]
nop dword [eax]
mov eax, esi
xor edx, edx
div edi
movzx eax, byte [ecx + 0xa36750]
xor al, byte [edx + 0x9b72e0]
xor al, bl
xor al, 0xf7
mov byte [ecx + 0xa36750], al
lea eax, [esi + 1]
xor edx, edx
div edi
movzx eax, byte [ecx + 0xa36751]
xor al, byte [edx + 0x9b72e0]
xor al, bl
xor al, 0xf7
mov byte [ecx + 0xa36751], al
add ecx, 2
add esi, 2
cmp dword [ebp - 0x28], ecx
jne 0x83b5c0
test byte [ebp - 0x4c], 1
je 0x83b62f
nop
mov eax, dword [ebp - 0x48]
add eax, ecx
xor edx, edx
div dword [ebp - 0x34]
movzx eax, byte [ecx + 0xa36750]
xor al, byte [edx + 0x9b72e0]
xor al, byte [ebp - 0x24]
xor al, 0xf7
mov byte [ecx + 0xa36750], al
nop
movzx eax, byte [ebp - 0x20]
xchg byte [0xa36754], al
mov dword [ebp - 0x10], 0xffffffff
nop
mov eax, dword [ebp - 0x34]
add eax, ebp
add eax, 0xffffff78
mov dword [ebp - 0x40], eax
mov eax, dword [0xa36820]
mov ecx, dword [0xa36800]
sub ecx, dword [ebp - 0x3c]
add ecx, eax
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa0535c]
mov edi, dword [ebp - 0x38]
push edi
push 0xa36750
mov ebx, dword [ebp - 0x54]
push ebx
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x24]
xor eax, 0xd2daf3cb
mov byte [ebp + eax - 0xd0], 0
mov edx, dword [ebp - 0x44]
mov esi, dword [ebp + edx - 0x88]
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp + eax - 0x88]
mov ecx, eax
sub ecx, esi
cmp ecx, edi
mov dword [ebp - 0xd0], 0x920fc0
jae 0x83b6df
nop
mov dword [ebp - 0x10], 4
sub esp, 0x10
movzx eax, byte [ebp - 0xb4]
mov byte [esp + 4], al
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebx
mov dword [esp], edi
mov ecx, dword [ebp - 0x40]
call fcn.0066d8c0
jmp 0x83b726
add edi, esi
mov ecx, edi
mov dword [ebp - 0x20], edi
mov dword [ebp + edx - 0x88], edi
mov edi, dword [ebp - 0x40]
mov ebx, edi
cmp eax, dword [ebp - 0x2c]
jbe 0x83b6fb
mov eax, edi
mov ebx, dword [edi]
add esi, ebx
mov eax, dword [0xa36814]
mov ecx, dword [0xa367f4]
sub ecx, dword [ebp - 0x3c]
add ecx, eax
call dword [0xa0535c]
push dword [ebp - 0x38]
push dword [ebp - 0x54]
push esi
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov byte [ebx + eax], 0
nop
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x50]
sub eax, ecx
lea edx, [ecx + ebp]
add edx, 0xfffffe2b
mov ecx, dword [ebp - 0x44]
mov dword [ebp + ecx - 0xb4], 0
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
mov dword [ebp + esi - 0xb4], ecx
mov ecx, dword [ebp - 0x34]
mov byte [ebp + ecx - 0xb4], 0
mov dword [ebp - 0xb4], 0x920fc0
mov esi, dword [0xa36828]
mov dword [0xa3683c], 0xf4a717c0
add esi, dword [esi]
mov dword [ebp - 0x4c], esi
mov esi, dword [0x9b72d0]
mov dword [ebp - 0x50], esi
mov esi, dword [0xa3682c]
add esi, dword [esi]
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x10], 6
add ecx, ebp
add ecx, 0xffffff4c
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0xb4]
push eax
push edx
call fcn.0078a850
nop
mov edi, dword [ebp - 0x44]
mov esi, dword [ebp + edi - 0xb4]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
cmp dword [ebp + edx - 0xb4], ecx
jbe 0x83b7d5
mov ecx, dword [eax]
mov dword [ebp - 0x28], ecx
mov ebx, dword [ebp + edi - 0x88]
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp + eax - 0x88]
mov ecx, eax
sub ecx, ebx
cmp ecx, esi
jae 0x83b819
nop
mov dword [ebp - 0x10], 5
sub esp, 0x10
movzx eax, byte [ebp - 0x5c]
mov byte [esp + 4], al
mov dword [esp + 0xc], esi
mov eax, dword [ebp - 0x28]
mov dword [esp + 8], eax
mov dword [esp], esi
mov ecx, dword [ebp - 0x40]
call fcn.0066d8c0
jmp 0x83b86c
mov ecx, ebx
xor ecx, esi
mov edx, ebx
and edx, esi
lea edx, [ecx + edx*2]
mov ecx, edx
mov dword [ebp - 0x38], edx
mov dword [ebp + edi - 0x88], edx
mov ecx, dword [ebp - 0x40]
mov edi, ecx
cmp eax, dword [ebp - 0x2c]
jbe 0x83b83c
mov edi, dword [ecx]
add ebx, edi
mov eax, dword [0xa36814]
mov ecx, dword [0xa367f4]
sub ecx, dword [ebp - 0x3c]
add ecx, eax
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa0535c]
push esi
push dword [ebp - 0x28]
push ebx
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x38]
mov byte [edi + eax], 0
nop
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp + eax - 0xb4]
cmp eax, dword [ebp - 0x2c]
jbe 0x83b8e7
nop
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx]
lea edx, [eax + 1]
mov esi, dword [ebp - 0x24]
xor esi, 0xd2dafc33
cmp edx, esi
mov dword [0xa36838], 0x76feeb25
ja 0x83b8a6
nop
test byte [0xa580bc], 1
je 0x83b8dc
nop
mov esi, dword [ecx - 4]
mov edi, dword [ebp - 0x24]
mov edx, edi
xor edx, 0x2d250c30
add edx, ecx
sub edx, esi
mov ecx, edi
xor ecx, 0xd2daf3ec
cmp edx, ecx
jae 0x83bc6d
mov ecx, edi
xor ecx, 0xd2daf3e8
mov edx, eax
xor edx, ecx
and ecx, eax
lea edx, [edx + ecx*2]
mov ecx, esi
nop
push edx
push ecx
call fcn.008ea1ad
add esp, 8
nop
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp + eax - 0xd0]
mov dword [ebp - 0x60], eax
mov edx, dword [0xa36824]
mov eax, edx
xor eax, 1
mov ecx, edx
and ecx, 1
lea eax, [eax + ecx*2]
mov dword [0xa36824], eax
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], edx
test eax, edx
je 0x83bb2a
xor ebx, ebx
mov dword [ebp - 0x20], ebx
mov edx, dword [ebp - 0x60]
cmp edx, dword [ebp - 0x2c]
jbe 0x83b98e
nop
mov eax, dword [ebp - 0x54]
mov eax, dword [eax]
mov ecx, edx
xor ecx, 1
and edx, 1
lea edx, [ecx + edx*2]
mov edi, dword [ebp - 0x24]
mov ecx, edi
xor ecx, 0xd2dafc33
cmp edx, ecx
jbe 0x83b983
nop
mov ecx, dword [eax - 4]
mov edx, edi
xor edx, 0x2d250c30
mov esi, edx
xor esi, eax
and edx, eax
lea eax, [esi + edx*2]
sub eax, ecx
mov edx, edi
xor edx, 0xd2daf3ec
cmp eax, edx
jae 0x83bc7a
mov eax, edi
xor eax, 0xd2daf3e8
mov edx, dword [ebp - 0x60]
add edx, eax
mov eax, ecx
nop
push edx
push eax
call fcn.008ea1ad
add esp, 8
nop
cmp dword [0xa580c0], 0
mov dword [ebp - 0x10], 3
jne 0x83b9d5
nop
mov eax, dword [ebp - 0x24]
xor eax, 0xd2daf3ec
push eax
call fcn.008ea17d
add esp, 4
nop
mov ecx, dword [ebp - 0x2c]
mov dword [eax + 0x1c], ecx
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 ecx, dword [0xa580c0]
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
cmp dword [ebp + esi - 0x88], edx
jbe 0x83b9f3
mov eax, dword [ebp - 0x40]
mov eax, dword [eax]
add ecx, 4
push eax
call fcn.007896e0
nop
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp + eax - 0x88]
mov eax, dword [0xa36838]
mov edi, dword [ebp - 0x24]
xor eax, edi
cmp eax, 0xfde43f30
movzx esi, word [0x9b72c8]
jne 0x83ba41
mov eax, esi
mov ecx, dword [ebp - 0x20]
shl eax, cl
mov ecx, eax
shl esi, cl
sub esi, eax
mov eax, esi
xor eax, 1
mov cl, 1
sub cl, al
shl eax, cl
and eax, esi
movzx eax, ax
shr eax, 0xf
jmp 0x83ba6e
mov ebx, dword [ebp - 0x90]
and ebx, dword [ebp - 0x8c]
mov ecx, edi
xor ecx, 0xffff9973
mov eax, edi
xor eax, 0x668c
add eax, ecx
cmp ebx, 1
sbb ax, 0xffff
sub esi, dword [ebp - 0x20]
test si, ax
setne al
nop
or al, byte [0xa580bc]
and al, 1
cmp edx, dword [ebp - 0x2c]
mov byte [0xa580bc], al
nop
mov eax, dword [ebp - 0x40]
jbe 0x83bb12
nop
mov ecx, dword [eax]
mov eax, edx
xor eax, 1
mov esi, edx
and esi, 1
lea esi, [eax + esi*2]
mov eax, dword [ebp - 0x24]
xor eax, 0xd2dafc33
cmp esi, eax
jbe 0x83bb07
nop
mov edi, dword [ecx - 4]
cmp byte [0xa56fc0], 0
jne 0x83bae8
nop
mov eax, dword [ebp - 0x24]
mov esi, eax
xor esi, 0x757ecf2e
mov dword [ebp - 0x20], edi
mov edi, esi
xor edi, ecx
and ecx, esi
mov ebx, eax
xor ebx, 0x2d250c30
sub ebx, esi
add ebx, edi
mov edi, dword [ebp - 0x20]
lea ecx, [ebx + ecx*2]
sub ecx, edi
xor eax, 0xd2daf3ec
cmp ecx, eax
jae 0x83bc87
mov eax, dword [ebp - 0x24]
mov ecx, eax
xor ecx, 0xe11af759
add edx, ecx
xor eax, 0xd2daf3e8
mov esi, edx
xor esi, eax
and eax, edx
sub esi, ecx
lea esi, [esi + eax*2]
mov ecx, edi
nop
push esi
push ecx
call fcn.008ea1ad
add esp, 8
mov al, 1
nop
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0x1cc
pop esi
pop edi
pop ebx
pop ebp
ret
nop
mov eax, dword [ebp - 0x64]
mov ecx, dword [eax]
cmp dword [ebp - 0x50], 0
jle 0x83b921
add ecx, eax
mov dword [ebp - 0x20], ecx
mov ecx, dword [0xa36834]
mov eax, dword [ebp - 0x24]
xor ecx, eax
mov dword [ebp - 0x48], ecx
mov ecx, eax
xor ecx, 0xd2daf3ca
mov dword [ebp - 0x98], ecx
xor eax, 0xf3cf
mov dword [ebp - 0x94], eax
add dword [ebp - 0x34], 0xfffffffe
xor esi, esi
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x68], 0
jmp 0x83bba4
xor ebx, dword [ebp - 0x44]
add esi, 2
mov eax, ebx
mov dword [ebp - 0x44], eax
cmp esi, dword [ebp - 0x50]
jge 0x83b923
nop
mov eax, dword [0xa36830]
xor eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x4c]
add ecx, esi
cmp eax, 0x93974f34
mov edx, 0
mov eax, 0xffffffff
cmove edx, eax
mov dword [ebp - 0x38], edx
mov eax, 2
mov edx, 0xfffffff8
cmove eax, edx
cmp dword [ebp - 0x48], 0xc7f70a9
mov ebx, ecx
mov edx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x28]
jne 0x83bc18
mov edx, ecx
sub edx, dword [ebp - 0x20]
mov edi, 0
sbb edi, dword [ebp - 0x28]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov ebx, 0
cmovne edx, ebx
mov dword [0xa36830], 0xe7343129
mov ebx, dword [ebp - 0x98]
lea ebx, [ecx + ebx*2]
sub edx, ecx
sbb edi, 0
cmp edx, eax
sbb edi, dword [ebp - 0x38]
movzx ebx, word [ebx]
jge 0x83bb90
mov eax, edx
mov ecx, dword [ebp - 0x94]
shl eax, cl
mov edi, 0xffffffff
mov ecx, eax
shl edi, cl
not edi
and ebx, edi
mov edi, dword [ebp - 0x68]
lea eax, [edi + 1]
add esi, dword [ebp - 0x34]
add esi, edx
mov ecx, dword [ebp - 0x64]
lea edx, [ecx + edi*4]
add edx, 4
add edx, dword [ecx + edi*4 + 4]
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x28], 0
nop
mov dword [ebp - 0x68], eax
jmp 0x83bb90
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 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
nop
mov eax, dword [0xa36818]
mov esi, dword [0xa367f0]
sub esi, dword [ebp - 0x3c]
add esi, eax
mov ecx, esi
call dword [0xa0535c]
lea ecx, [ebp - 0xb4]
call esi
add esp, 0x10
pop ebp
ret