Function at 0xa1a9b8
Capabilities:
Encode data using xor

Disassembly:
push ebp
xor eax, eax
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xc0c
mov esi, dword [ebp + 8]
mov dword [ebp - 0xbec], eax
mov eax, 0xffffffff
mov ebx, dword [esi + 0x130]
mov dword [ebp - 0xbe4], ebx
mov ecx, dword [ebp - 0xbe4]
mov edx, dword [ecx + 0x21d14]
test edx, edx
jle 0xa1af9c
mov edx, 0xb40
xor edi, edi
lea esi, [ebp - 0xbc8]
mov dword [esp + 8], edx
mov ebx, 2
mov dword [esp + 4], edi
mov dword [esp], esi
call fcn.00a5b648
mov dword [esp + 8], ebx
mov ecx, dword [ebp + 0xc]
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00a5b680
mov edx, dword [ebp + 0xc]
mov dword [esp], edx
call fcn.00a5b6d8
mov dword [ebp - 0xbe8], eax
mov edi, dword [ebp - 0xbe8]
mov eax, 0xffffffff
test edi, edi
je 0xa1af9c
mov edi, dword [ebp + 0xc]
xor ecx, ecx
xor esi, esi
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
lea esi, [ebp - 0xbd8]
mov dword [esp], edi
mov edi, 0xd7b5d0
call fcn.00a5b680
mov dword [esp], esi
mov ebx, dword [ebp + 0xc]
mov eax, 0xa
mov dword [esp + 8], eax
mov edx, 1
mov dword [esp + 4], edx
mov dword [esp + 0xc], ebx
call fcn.00a5b6a8
cld
mov ecx, 3
repe cmpsb byte [esi], byte es:[edi]
seta bl
setb al
xor ecx, ecx
mov dword [ebp - 0xbf0], ecx
cmp bl, al
je 0xa1afa7
mov ecx, dword [ebp + 8]
xor edx, edx
mov esi, dword [ebp - 0xbf0]
mov dword [esp + 8], edx
mov ebx, dword [ebp + 0xc]
mov edi, dword [ecx + 0x134]
mov dword [esp], ebx
add esi, edi
mov dword [esp + 4], esi
lea esi, [ebp - 0xbc8]
call fcn.00a5b680
mov dword [esp], esi
mov eax, dword [ebp + 0xc]
mov edx, 1
mov dword [esp + 8], edx
mov ecx, 4
mov esi, 0x80
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
call fcn.00a5b6a8
mov byte [ebp - 0xbc8], 0xff
mov ecx, dword [ebp + 8]
movzx ebx, byte [ebp - 0xbc7]
mov edx, dword [ecx + 0x118]
and bl, 0xf1
cmp edx, 1
je 0xa1ab34
xor eax, eax
cmp dword [ecx + 0xc], 0x3e7f
setg al
dec eax
and eax, 0xffffffe0
lea esi, [eax + 0x40]
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x88]
test edi, edi
jne 0xa1ab44
mov esi, dword [eax + 0x44]
mov eax, dword [ebp + 8]
xor ecx, ecx
mov edi, dword [eax + 0x38]
test edi, edi
je 0xa1b1f2
dec edx
je 0xa1b21a
or bl, 2
mov byte [ebp - 0xbc7], bl
movzx ebx, byte [ebp - 0xbc6]
mov eax, 0x64
xor esi, esi
mov dword [esp + 8], eax
lea edi, [ebp - 0x88]
mov dword [esp + 4], esi
and bl, 0xd
or cl, bl
mov byte [ebp - 0xbc6], cl
mov dword [esp], edi
call fcn.00a5b648
mov edx, dword [ebp + 8]
mov ebx, dword [edx + 0x38]
test ebx, ebx
je 0xa1afec
mov ebx, 1
mov esi, 0x51eb851f
mov ecx, 0xff
nop
lea esi, [esi]
mov eax, ecx
mov edi, ecx
sar edi, 0x1f
imul esi
sar edx, 5
sub edx, edi
mov byte [ebx + ebp - 0x88], dl
lea edi, [ecx + 0xff]
mov eax, edi
imul esi
mov eax, edi
sar eax, 0x1f
lea edi, [ecx + 0x1fe]
sar edx, 5
sub edx, eax
mov byte [ebp + ebx - 0x87], dl
mov eax, edi
imul esi
mov eax, edi
sar eax, 0x1f
lea edi, [ecx + 0x2fd]
sar edx, 5
sub edx, eax
mov byte [ebp + ebx - 0x86], dl
mov eax, edi
imul esi
mov eax, edi
sar eax, 0x1f
lea edi, [ecx + 0x3fc]
sar edx, 5
sub edx, eax
mov byte [ebp + ebx - 0x85], dl
mov eax, edi
imul esi
mov eax, edi
sar eax, 0x1f
lea edi, [ecx + 0x4fb]
sar edx, 5
sub edx, eax
mov byte [ebp + ebx - 0x84], dl
mov eax, edi
imul esi
mov eax, edi
sar eax, 0x1f
lea edi, [ecx + 0x5fa]
sar edx, 5
sub edx, eax
mov byte [ebp + ebx - 0x83], dl
mov eax, edi
imul esi
mov eax, edi
sar eax, 0x1f
lea edi, [ecx + 0x6f9]
sar edx, 5
sub edx, eax
mov byte [ebp + ebx - 0x82], dl
mov eax, edi
imul esi
mov eax, edi
sar eax, 0x1f
lea edi, [ecx + 0x7f8]
sar edx, 5
sub edx, eax
mov byte [ebp + ebx - 0x81], dl
mov eax, edi
imul esi
mov eax, edi
sar edx, 5
sar eax, 0x1f
add ecx, 0x8f7
sub edx, eax
mov byte [ebp + ebx - 0x80], dl
add ebx, 9
cmp ebx, 0x63
jle 0xa1abb8
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0xbe4]
mov edx, dword [edi + 0x54]
mov eax, dword [esi + 0xdc00]
test edx, edx
je 0xa1accd
sub eax, 2
mov ecx, dword [ebp + 8]
mov ebx, dword [ecx + 0x88]
test ebx, ebx
jne 0xa1b222
mov dl, 0x49
mov cl, 0x6e
mov bl, 0x66
mov byte [eax + ebp - 0xbc8], dl
mov dl, 0x6f
mov byte [ebp + eax - 0xbc7], cl
mov byte [ebp + eax - 0xbc6], bl
mov byte [ebp + eax - 0xbc5], dl
lea ebx, [eax + 4]
lea esi, [ebp - 0xbc8]
add esi, ebx
mov byte [esi], 0
mov byte [esi + 1], 0
mov byte [esi + 2], 0
mov byte [esi + 3], 0xf
mov edi, dword [ebp + 8]
lea esi, [ebx + ebp - 0xbc4]
mov ecx, dword [edi + 0x138]
lea edi, [ebx + ebp - 0xbc0]
mov edx, ecx
mov byte [esi + 3], cl
sar edx, 0x18
mov eax, ecx
mov byte [esi], dl
mov edx, ecx
sar eax, 0x10
mov byte [esi + 1], al
sar edx, 8
mov byte [esi + 2], dl
mov eax, dword [ebp - 0xbe8]
lea esi, [ebp + ebx - 0xbbc]
sar eax, 0x18
mov byte [edi], al
mov edx, dword [ebp - 0xbe8]
sar edx, 0x10
mov byte [edi + 1], dl
mov ecx, dword [ebp - 0xbe8]
mov edx, 0x64
sar ecx, 8
mov byte [edi + 2], cl
lea ecx, [ebp - 0x88]
movzx eax, byte [ebp - 0xbe8]
mov byte [edi + 3], al
mov dword [esp], esi
lea esi, [ebx + 0x70]
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
call fcn.00a5b5c0
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0x54]
test eax, eax
jne 0xa1b24b
test esi, esi
jle 0xa1af1c
movzx eax, byte [ebp - 0xbc8]
lea edx, [ebx + 0x6f]
mov ecx, dword [ebp - 0xbec]
sar dword [ebp - 0xbec], 8
and edx, 3
xor eax, ecx
and eax, 0xff
mov ecx, 1
mov edi, dword [eax*4 + 0xb58720]
xor dword [ebp - 0xbec], edi
cmp ecx, esi
jge 0xa1af1c
test edx, edx
je 0xa1ae8d
cmp edx, 1
je 0xa1ae5a
cmp edx, 2
je 0xa1ae30
movzx edx, byte [ebp - 0xbc7]
mov ecx, 2
mov edi, dword [ebp - 0xbec]
sar dword [ebp - 0xbec], 8
xor edx, edi
and edx, 0xff
mov ebx, dword [edx*4 + 0xb58720]
xor dword [ebp - 0xbec], ebx
movzx eax, byte [ecx + ebp - 0xbc8]
inc ecx
mov edx, dword [ebp - 0xbec]
sar dword [ebp - 0xbec], 8
xor eax, edx
and eax, 0xff
mov ebx, dword [eax*4 + 0xb58720]
xor dword [ebp - 0xbec], ebx
movzx ebx, byte [ecx + ebp - 0xbc8]
inc ecx
mov eax, dword [ebp - 0xbec]
sar dword [ebp - 0xbec], 8
xor ebx, eax
and ebx, 0xff
mov edi, dword [ebx*4 + 0xb58720]
xor dword [ebp - 0xbec], edi
cmp ecx, esi
jge 0xa1af1c
movzx eax, byte [ecx + ebp - 0xbc8]
mov edx, dword [ebp - 0xbec]
movzx ebx, byte [ebp + ecx - 0xbc7]
xor eax, edx
and eax, 0xff
mov edx, dword [ebp - 0xbec]
mov edi, dword [eax*4 + 0xb58720]
movzx eax, byte [ebp + ecx - 0xbc6]
sar edx, 8
xor edx, edi
xor ebx, edx
and ebx, 0xff
sar edx, 8
mov edi, dword [ebx*4 + 0xb58720]
xor edx, edi
xor eax, edx
movzx edi, byte [ebp + ecx - 0xbc5]
and eax, 0xff
mov ebx, dword [eax*4 + 0xb58720]
sar edx, 8
add ecx, 4
xor edx, ebx
xor edi, edx
and edi, 0xff
sar edx, 8
mov dword [ebp - 0xbec], edx
mov edx, dword [edi*4 + 0xb58720]
xor dword [ebp - 0xbec], edx
cmp ecx, esi
jl 0xa1ae8d
lea eax, [ebp - 0xbc8]
mov ecx, dword [ebp + 0xc]
xor edi, edi
add eax, esi
mov edx, dword [ebp - 0xbec]
mov ebx, dword [ebp - 0xbf0]
mov dword [esp + 4], ecx
mov esi, dword [ebp + 8]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ebx
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00a1a338
mov dword [esp + 8], edi
mov edx, dword [ebp - 0xbf0]
mov ebx, dword [ebp + 0xc]
mov dword [esp + 4], edx
mov dword [esp], ebx
call fcn.00a5b680
mov eax, dword [ebp + 0xc]
mov ecx, 1
lea edx, [ebp - 0xbc8]
mov dword [esp + 8], ecx
mov esi, dword [ebp + 8]
mov dword [esp + 0xc], eax
mov edi, dword [esi + 0x134]
mov dword [esp], edx
mov dword [esp + 4], edi
call fcn.00a5b558
dec eax
sete bl
movzx eax, bl
dec eax
add esp, 0xc0c
pop ebx
pop esi
pop edi
pop ebp
ret
movzx edx, byte [ebp - 0xbd2]
movzx edi, byte [ebp - 0xbd1]
movzx ebx, byte [ebp - 0xbd0]
movzx eax, byte [ebp - 0xbcf]
and edx, 0x7f
and edi, 0x7f
shl edx, 0x15
and ebx, 0x7f
shl edi, 0xe
or edx, edi
shl ebx, 7
or edx, ebx
and eax, 0x7f
or edx, eax
add edx, 0xa
mov dword [ebp - 0xbf0], edx
jmp 0xa1aab0
mov esi, dword [ebp - 0xbe4]
add esi, 0x21d08
mov ebx, dword [esi + 0xc]
test ebx, ebx
jle 0xa1acb4
mov edi, 1
jmp 0xa1b00d
mov ebx, dword [esi + 0xc]
push edi
fild dword [esp]
mov dword [esp], ebx
fild dword [esp]
fxch st(1)
add esp, 4
fmul dword [0xd7b5d4]
fmulp st(1)
fstp qword [esp]
call fcn.00a5b738
fnstcw word [ebp - 0xbda]
lea eax, [ebx - 1]
movzx ecx, word [ebp - 0xbda]
or cx, 0xc00
mov word [ebp - 0xbdc], cx
fldcw word [ebp - 0xbdc]
fistp dword [ebp - 0xbe0]
fldcw word [ebp - 0xbda]
mov edx, dword [ebp - 0xbe0]
cmp eax, edx
jge 0xa1b066
mov edx, eax
fild dword [esi]
mov eax, dword [esi + 0x14]
fld qword [0xd7b5d8]
fild dword [eax + edx*4]
fmulp st(1)
fld1
fdivrp st(2)
fmulp st(1)
fldcw word [ebp - 0xbdc]
fistp dword [ebp - 0xbe0]
fldcw word [ebp - 0xbda]
mov eax, dword [ebp - 0xbe0]
cmp eax, 0xff
jle 0xa1b0a0
mov eax, 0xff
mov byte [edi + ebp - 0x88], al
mov ebx, dword [esi + 0xc]
inc edi
push edi
fild dword [esp]
mov dword [esp], ebx
fild dword [esp]
fxch st(1)
add esp, 4
fmul dword [0xd7b5d4]
fmulp st(1)
fstp qword [esp]
call fcn.00a5b738
fnstcw word [ebp - 0xbda]
lea eax, [ebx - 1]
movzx ecx, word [ebp - 0xbda]
or cx, 0xc00
mov word [ebp - 0xbdc], cx
fldcw word [ebp - 0xbdc]
fistp dword [ebp - 0xbe0]
fldcw word [ebp - 0xbda]
mov edx, dword [ebp - 0xbe0]
cmp eax, edx
jge 0xa1b104
mov edx, eax
fild dword [esi]
mov eax, dword [esi + 0x14]
fld qword [0xd7b5d8]
fild dword [eax + edx*4]
fmulp st(1)
fld1
fdivrp st(2)
fmulp st(1)
fldcw word [ebp - 0xbdc]
fistp dword [ebp - 0xbe0]
fldcw word [ebp - 0xbda]
mov eax, dword [ebp - 0xbe0]
cmp eax, 0xff
jle 0xa1b13e
mov eax, 0xff
mov byte [edi + ebp - 0x88], al
mov ebx, dword [esi + 0xc]
inc edi
push edi
fild dword [esp]
mov dword [esp], ebx
fild dword [esp]
fxch st(1)
add esp, 4
fmul dword [0xd7b5d4]
fmulp st(1)
fstp qword [esp]
call fcn.00a5b738
fnstcw word [ebp - 0xbda]
lea eax, [ebx - 1]
movzx edx, word [ebp - 0xbda]
or dx, 0xc00
mov word [ebp - 0xbdc], dx
fldcw word [ebp - 0xbdc]
fistp dword [ebp - 0xbe0]
fldcw word [ebp - 0xbda]
mov edx, dword [ebp - 0xbe0]
cmp eax, edx
jge 0xa1b1a2
mov edx, eax
fild dword [esi]
mov ecx, dword [esi + 0x14]
fld qword [0xd7b5d8]
fild dword [ecx + edx*4]
fmulp st(1)
fld1
fdivrp st(2)
fmulp st(1)
fldcw word [ebp - 0xbdc]
fistp dword [ebp - 0xbe0]
fldcw word [ebp - 0xbda]
mov eax, dword [ebp - 0xbe0]
cmp eax, 0xff
jle 0xa1b1dc
mov eax, 0xff
mov byte [edi + ebp - 0x88], al
inc edi
cmp edi, 0x63
jle 0xa1b00a
jmp 0xa1acb4
mov eax, dword [eax + 0xc]
mov dword [esp + 4], edx
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00a182b8
mov esi, dword [ebp + 8]
mov cl, al
shl cl, 4
mov edx, dword [esi + 0x118]
dec edx
jne 0xa1ab5b
or bl, 0xa
jmp 0xa1ab5e
mov bl, 0x58
mov dl, 0x69
mov cl, 0x6e
mov byte [eax + ebp - 0xbc8], bl
mov bl, 0x67
mov byte [ebp + eax - 0xbc7], dl
mov byte [ebp + eax - 0xbc6], cl
mov byte [ebp + eax - 0xbc5], bl
jmp 0xa1ad02
mov ecx, dword [ebp - 0xbe4]
lea eax, [ebp - 0xbc8]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00a1d0f8
jmp 0xa1adad