Function at 0xa1b090
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x460
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x5c], 0x49c64bc1
mov dword [esp + 0x60], 0x45d947d3
mov dword [esp + 0x64], 0x419043d7
mov dword [esp + 0x68], 0x7df67fdb
mov dword [esp + 0x6c], 0x797a7be7
mov byte [esp + 0x70], 0
xor eax, eax
nop
nop
movzx ecx, byte [esp + eax + 0x5c]
mov edx, eax
and edx, 0xd
xor edx, 0x76d8c3ed
mov esi, eax
and esi, 0x12
sub esi, edx
mov edx, esi
not edx
lea edx, [esi + edx*2]
inc edx
xor edx, esi
and edx, ecx
xor edx, esi
mov ecx, edx
and ecx, 0x8243418
xor edx, 0xfc74b418
lea ecx, [edx + ecx*2]
add ecx, 0x523bd3a0
mov edx, ecx
xor edx, 0xe7
and ecx, 0x67
lea ecx, [edx + ecx*2]
add cl, 2
mov byte [esp + eax + 0x5c], cl
inc eax
cmp eax, 0x15
jne case.default.0xa1b158
lea ebx, [esp + 0x5c]
lea ecx, [esp + 0x40]
push ebx
call fcn.00a2e2c0
shr eax, 0x1f
jmp dword [eax*4 + 0xa3c6e0]
jmp dword [0xa3c6fc]
lea ecx, [esp + 0x40]
push 0x410
call fcn.00a2e510
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [esp + 0x40]
push 0x410
call fcn.00a2e510
jmp dword [0xa3c704]
not eax
shr eax, 0x1f
xor edx, edx
jmp dword [eax*4 + 0xa3c708]
mov dword [esp + 0x5c], 0xaa85dcab
mov dword [esp + 0x60], 0xd4d68bac
mov dword [esp + 0x64], 0xa0dfa587
mov dword [esp + 0x68], 0x8ddade83
mov dword [esp + 0x6c], 0xecbdba8a
mov dword [esp + 0x70], 0x95b8bebb
mov dword [esp + 0x74], 0x9293b69e
mov dword [esp + 0x78], 0x8eb99089
mov dword [esp + 0x7c], 0xae949e96
mov dword [esp + 0x80], 0x86adb39f
mov dword [esp + 0x84], 0x69bea7a7
jmp dword [0xa3c714]
xor eax, eax
cmp eax, 0x2b
ja 0xa1b234
nop
nop
nop
movzx edx, byte [esp + eax + 0x5c]
lea ecx, [eax + 0x6bc87111]
xor ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0xaa
mov byte [esp + eax + 0x5c], cl
inc eax
cmp eax, 0x2b
jbe 0xa1b210
lea eax, [esp + 0x5c]
lea edx, [esp + 0x50]
lea ecx, [esp + 0x40]
push 0
push 0x2b
push eax
push edx
call fcn.00a2f020
xor edx, edx
nop
nop
nop
movzx ecx, byte [esp + edx + 0x5c]
lea eax, [edx + 0x6bc87111]
xor eax, ecx
mov ecx, eax
and ecx, 1
or eax, 1
add eax, ecx
add al, 0xaa
mov byte [esp + edx + 0x5c], al
inc edx
cmp edx, 0x2c
jne case.0xa1b158.12
lea eax, [esp + 0x50]
lea ecx, [esp + 0x40]
push 0
push 0x2b
push ebx
push eax
call fcn.00a2f020
xor edx, edx
jmp dword [0xa3c718]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
xor eax, eax
cmp edi, esi
sete al
jmp dword [eax*4 + 0xa3c720]
mov eax, esi
sub eax, edi
sar eax, 3
mov edx, eax
and edx, 0x421
mov ecx, eax
or eax, 0x421
imul eax, edx
xor edx, 0x421
and ecx, 0xfffffbde
imul ecx, edx
add eax, ecx
push eax
call fcn.009fc880
add esp, 4
mov dword [esp + 8], 0
xor ecx, ecx
mov dword [esp + 0x3c], esi
cmp edi, esi
setne cl
mov dword [esp + 0x38], eax
mov esi, eax
jmp dword [ecx*4 + 0xa3c728]
mov edx, dword [esp + 8]
mov eax, edx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0xa3c730]
jmp dword [0xa3c790]
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], edi
jmp dword [0xa3c738]
mov eax, dword [case.0xa1b158.4]
xor edx, edx
nop
nop
nop
nop
nop
nop
jmp eax
lea ecx, [esp + 0x40]
mov ebx, edx
call fcn.00a2e650
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor edx, edx
jmp dword [0xa3c79c]
mov ebx, esi
mov byte [esi], 0
mov dword [esp + 0x5c], 0xbfb2b1e1
mov dword [esp + 0x60], 0xb3c7c6bd
mov dword [esp + 0x64], 0x48444641
mov dword [esp + 0x68], 0x3a4a2e03
mov dword [esp + 0x6c], 0x270d4c31
mov dword [esp + 0x70], 0x49334e4b
mov dword [esp + 0x74], 0x435e175b
mov dword [esp + 0x78], 0xcd58
mov eax, 7
mov ecx, 0xf8
nop
nop
movzx esi, byte [esp + ecx - 0x9c]
mov edi, ecx
or edi, esi
mov edx, edi
sub edx, esi
add edx, eax
and edx, edi
add dl, 0x28
mov byte [esp + ecx - 0x9c], dl
dec eax
inc ecx
cmp ecx, 0x118
jne 0xa1b960
mov edx, dword [esp + 0x38]
sub ebx, edx
lea eax, [esp + 0x5c]
mov ecx, dword [ebp + 8]
push ebx
push edx
push eax
call fcn.009fd410
mov edx, eax
jmp dword [0xa3c790]