Function at 0xa1ab20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0xf4f5f6f7
mov edx, 0x92bb3fd4
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x6d44c030]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xd5
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0xdc
mov byte [esp + edx + 0x6d44c030], al
inc edx
cmp edx, 0x92bb3fd8
jne 0xa1ab40
mov ebp, dword [esp + 4]
mov eax, dword [0xa40374]
test eax, eax
je 0xa1abd6
xor ecx, ecx
mov edx, dword [0xa40378]
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x9abdb589
je 0xa1abb0
inc ecx
cmp eax, ecx
jne 0xa1aba0
jmp 0xa1abd6
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebp
je 0xa1abd6
lea ecx, [esp + 0x1c]
push ecx
push 0
push 0
push 5
push 4
push dword [0xa4037c]
push eax
call fcn.00a30f10
add esp, 0x1c
mov ebp, eax
mov dword [esp + 4], 0xb7f60904
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov esi, 0x85f5f97e
mov edi, 0x7a0a0681
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi + 0x7a0a0686]
mov eax, edi
or eax, ecx
lea ebx, [edi - 0x7a0a0600]
and ebx, ecx
xor ebx, eax
and ebx, esi
mov eax, ebx
or al, 0xfd
inc al
mov edx, ebx
and dl, 0xfd
mul dl
mov edx, eax
add dl, cl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub dl, al
movzx eax, dl
add eax, esi
add al, 0x8a
mov byte [esp + esi + 0x7a0a0686], al
inc esi
dec edi
cmp esi, 0x85f5f985
jne 0xa1ac00
cmp ebp, dword [esp + 4]
jne 0xa1acf0
push dword [esp + 0x1c]
call fcn.00a2e1b0
add esp, 4
mov ebp, eax
mov edi, dword [esp + 0x1c]
mov dword [esp + 4], 0xf4f5f6f7
mov esi, 0x92bb3fd4
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + esi + 0x6d44c030]
mov ebx, edx
and ebx, esi
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xd5
mul cl
mov ecx, eax
add cl, dl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, esi
add al, 0xdc
mov byte [esp + esi + 0x6d44c030], al
inc esi
cmp esi, 0x92bb3fd8
jne 0xa1ac80
mov eax, dword [esp + 4]
mov ecx, dword [0xa40374]
test ecx, ecx
je 0xa1ad16
xor edx, edx
mov esi, dword [0xa40378]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x9abdb589
je 0xa1acf7
inc edx
cmp ecx, edx
jne 0xa1ace0
jmp 0xa1ad16
xor ebx, ebx
jmp 0xa1b059
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0xa1ad16
push 0
push edi
push ebp
push 5
push 4
push dword [0xa4037c]
push ecx
call fcn.00a30f10
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0xa1b050
mov esi, dword [ebp]
xor eax, eax
mov ecx, esi
mov edx, ebp
nop
nop
nop
nop
nop
nop
nop
lea edi, [edx + ecx]
mov ecx, dword [edx + ecx]
add eax, 0x208
add ebx, 0x104
mov edx, edi
test ecx, ecx
jne 0xa1ad30
test ebx, ebx
jns 0xa1ad50
mov eax, 0xffffffff
push eax
call fcn.009fc880
add esp, 4
mov ebx, eax
mov ecx, ebp
jmp 0xa1ad70
add ecx, esi
mov word [eax], 0xa
add eax, 2
mov esi, dword [ecx]
test esi, esi
je 0xa1ad93
mov edx, dword [ecx + esi + 0x3c]
movzx edi, word [edx]
test di, di
je 0xa1ad60
add edx, 2
nop
mov word [eax], di
add eax, 2
movzx edi, word [edx]
add edx, 2
test di, di
jne 0xa1ad80
jmp 0xa1ad60
mov dword [esp], 0
cmp eax, ebx
je 0xa1b044
mov word [eax], 0
movzx esi, word [ebx]
test si, si
je 0xa1adfc
mov eax, ebx
add eax, 2
mov dword [esp], 0
mov ecx, esi
jmp 0xa1adce
inc dword [esp]
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0xa1adfc
cmp cx, 0x7f
jbe 0xa1adc0
movzx edx, cx
cmp edx, 0x7ff
ja 0xa1adf0
add dword [esp], 2
jmp 0xa1adc3
cmp cx, 0xffff
je 0xa1adc3
add dword [esp], 3
jmp 0xa1adc3
mov dword [esp + 0x24], ebp
mov eax, dword [esp]
inc eax
push eax
call fcn.009fc880
add esp, 4
mov ebp, eax
mov dword [esp + 0x18], eax
test si, si
mov dword [esp + 0x20], ebx
je 0xa1af47
mov ebp, dword [esp + 0x18]
cmp dword [esp], 0
je 0xa1af47
mov edx, ebx
mov ecx, dword [esp]
mov ebp, dword [esp + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, si
lea esi, [edx + 2]
cmp ax, 0x7f
ja 0xa1ae60
lea edi, [ebp + 1]
mov byte [ebp], al
jmp 0xa1aef0
cmp eax, 0x7ff
ja 0xa1ae90
cmp ecx, 2
jb 0xa1ae90
mov edx, eax
shr edx, 6
add dl, 0xc0
mov byte [ebp], dl
and al, 0x3f
or al, 0x80
lea edi, [ebp + 2]
mov byte [ebp + 1], al
jmp 0xa1aef0
mov edi, eax
and edi, 0xfc00
cmp edi, 0xd800
jne 0xa1af0a
cmp ecx, 4
jb 0xa1af0a
movzx esi, word [edx + 2]
add edx, 4
shl eax, 0xa
add eax, esi
add eax, 0xfca02400
mov ebx, eax
shr ebx, 0x12
add bl, 0xf0
mov byte [ebp], bl
mov ebx, eax
shr ebx, 0xc
and bl, 0x3f
or bl, 0x80
mov byte [ebp + 1], bl
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [ebp + 2], al
mov eax, esi
and al, 0x3f
or al, 0x80
lea edi, [ebp + 4]
mov byte [ebp + 3], al
mov esi, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
add ecx, ebp
sub ecx, edi
mov edx, esi
mov ebp, edi
movzx esi, word [edx]
test si, si
je 0xa1af47
test ecx, ecx
jne 0xa1ae40
jmp 0xa1af47
movzx edx, di
cmp edx, 0xdc00
jne 0xa1af19
mov edx, esi
jmp 0xa1aef8
cmp ecx, 3
jb 0xa1af43
mov edx, eax
shr edx, 0xc
or dl, 0xe0
mov byte [ebp], dl
mov edx, eax
shr edx, 6
and dl, 0x3f
or dl, 0x80
mov byte [ebp + 1], dl
and al, 0x3f
or al, 0x80
mov byte [ebp + 2], al
lea edi, [ebp + 3]
jmp 0xa1aef0
mov edi, ebp
jmp 0xa1aef0
mov byte [ebp], 0
mov dword [esp + 4], 0xacd7d5b4
mov dword [esp + 8], 0xa2dfdeaf
mov dword [esp + 0xc], 0xd1d299d1
mov word [esp + 0x10], 0x4bd4
mov dword [esp + 0x12], 0
mov word [esp + 0x16], 0
mov eax, 0x281ea212
mov ecx, 0xd7e15dee
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x281ea20e]
mov edi, ecx
xor edi, edx
mov esi, edx
mov dword [esp + 0x28], edx
lea edx, [ecx + 0x40000000]
or edx, edi
add edx, eax
mov ebx, edx
and ebx, 0xfffffffd
mov edi, edx
or edi, 0xfffffffd
inc edi
imul edi, ebx
mov ebx, edx
or ebx, 2
lea ebp, [edi + esi]
shr edx, 1
and edx, 1
imul edx, ebx
add edx, edx
sub ebp, edx
lea esi, [eax + ebp]
lea ebx, [eax + ebp]
dec ebx
lea ebp, [esi*2 - 2]
and ebp, 0x6ecdab54
or ebx, 0xc8992a55
sub edx, edi
sub edx, dword [esp + 0x28]
add edx, ecx
or edx, 0x3766d5aa
and edx, ebx
sub edx, ebp
lea esi, [edx*2 + 2]
inc edx
sub edx, esi
inc dl
mov byte [esp + eax - 0x281ea20e], dl
inc eax
dec ecx
cmp eax, 0x281ea226
jne 0xa1af90
lea eax, [esp + 4]
mov ecx, dword [esp + 0x40]
push dword [esp]
mov esi, dword [esp + 0x1c]
push esi
push eax
call fcn.009fd410
mov dword [esp], eax
push esi
call fcn.009fc890
add esp, 4
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
push ebx
call fcn.009fc890
add esp, 4
mov ebx, dword [esp]
push ebp
call fcn.00a2e210
add esp, 4
mov eax, ebx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret