Function at 0xa494ac
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10070bdc
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
mov eax, dword [0x1008e390]
xor eax, esp
mov dword [esp + 0xe0], eax
push ebx
push esi
push edi
mov eax, dword [0x1008e390]
xor eax, esp
push eax
lea eax, [esp + 0xf8]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov edi, edx
mov dword [esp + 0x44], eax
mov eax, dword [edi + 0x18]
mov edx, dword [eax]
mov dword [esp + 0x34], ecx
mov ecx, dword [ebp + 0x10]
push ecx
push eax
mov eax, dword [edx + 0x18]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], ecx
call eax
add esp, 8
test eax, eax
je 0xa49788
add edi, 8
push edi
lea esi, [esp + 0x38]
call fcn.00a19a2c
xor ebx, ebx
push 0x12c
lea ecx, [esp + 0x30]
mov dword [esp + 0x104], ebx
mov esi, dword [eax]
push ecx
call fcn.00a0e3cc
mov byte [esp + 0x100], 2
mov eax, dword [esp + 0x34]
cmp eax, ebx
je 0xa49560
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
add esp, 4
cmp dword [esp + 0x30], ebx
je 0xa49761
push 0x5c
push 0x1007bc88
call fcn.00a4df1c
add esp, 8
test eax, eax
je 0xa49591
push 0x5c
push 0x1007bc88
call fcn.00a4df1c
add esp, 8
lea esi, [eax + 1]
jmp 0xa49596
mov esi, 0x1007bc88
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x90], eax
neg eax
sbb eax, eax
and eax, 0x200
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], 0x201
mov dword [esp + 0xa0], 6
mov dword [esp + 0xa4], ebx
mov byte [esp + 0xa8], 0x20
mov byte [esp + 0x100], 3
mov eax, 0x10078ad0
xor ecx, ecx
jmp 0xa495fc
inc eax
inc ecx
cmp byte [eax], bl
jne 0xa495fc
push ecx
push 0x10078ad0
push ebx
push ebx
lea eax, [esp + 0x9c]
call fcn.00a0f37c
add esp, 0x10
mov eax, esi
cmp esi, ebx
jne 0xa49624
mov eax, 0x10077b08
xor ecx, ecx
cmp eax, ebx
je 0xa49634
cmp byte [eax], bl
je 0xa49634
inc ecx
cmp byte [ecx + eax], bl
jne 0xa4962e
push ecx
push eax
push ebx
push ebx
lea eax, [esp + 0x9c]
call fcn.00a0f37c
push 1
lea edx, [esp + 0x34]
push edx
push ebx
push ebx
lea eax, [esp + 0xac]
mov byte [esp + 0x40], 0x3a
call fcn.00a0f37c
mov eax, dword [esp + 0xbc]
and eax, 0xe00
add esp, 0x20
cmp eax, 0x400
je 0xa49685
sub eax, 0x800
neg eax
sbb eax, eax
and eax, 0xfffffffa
add eax, 0x10
jmp 0xa4968a
mov eax, 8
push ebx
push 0x6f
mov edx, 0x100784a8
mov ecx, eax
lea ebx, [esp + 0x94]
call fcn.00a17e4c
add esp, 8
xor eax, eax
lea esp, [esp]
inc eax
cmp byte [eax + 0x10078acc], 0
jne 0xa496ac
push eax
push 0x10078acc
push 0
push 0
lea eax, [esp + 0x9c]
call fcn.00a0f37c
add esp, 0x10
xor eax, eax
inc eax
cmp byte [eax + 0x1007bf08], 0
jne 0xa496d1
push eax
push 0x1007bf08
push 0
push 0
lea eax, [esp + 0x9c]
call fcn.00a0f37c
mov edx, dword [esp + 0x54]
lea eax, [esp + 0x9c]
push eax
call fcn.00a2506c
add esp, 0x14
xor eax, eax
jmp 0xa4970c
inc eax
cmp byte [eax + 0x1007bee8], 0
jne 0xa4970c
push eax
push 0x1007bee8
push 0
push 0
lea eax, [esp + 0x9c]
call fcn.00a0f37c
mov byte [esp + 0x110], 2
mov eax, dword [esp + 0x9c]
add esp, 0x10
test eax, eax
je 0xa49761
mov ecx, dword [esp + 0x90]
test ecx, ecx
je 0xa49761
mov esi, dword [esp + 0x98]
mov edx, dword [eax]
push esi
push ecx
push eax
mov eax, dword [edx + 0x10]
call eax
add esp, 0xc
mov dword [esp + 0x100], 0xffffffff
mov eax, dword [esp + 0x2c]
test eax, eax
je 0xa49cc4
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
add esp, 4
jmp 0xa49cc4
xor ebx, ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x100], 0xa
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov dword [esp + 0x54], edx
cmp eax, ecx
je 0xa4988d
cmp edx, 0x1b94b70b
jne 0xa4981c
mov edx, dword [edi + 0x20]
cmp edx, ebx
je 0xa4981c
push 0x7f
push 0x1007bc88
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x7c]
push ecx
lea ecx, [esp + 0x6c]
push ecx
mov dword [esp + 0x6c], 2
mov eax, dword [edx]
push esi
push edx
mov edx, dword [eax + 0xc]
call edx
add esp, 0x14
mov ecx, 0x1007bf28
mov esi, eax
call fcn.00a1a24c
add esp, 8
jmp 0xa4988d
sub ecx, eax
mov dword [esp + 0x60], ebx
mov dword [esp + 0x4c], eax
mov esi, ecx
jne 0xa49841
push esi
push eax
push ebx
call fcn.00a4ea0c
mov eax, dword [esp + 0x6c]
add esp, 0xc
add eax, esi
mov dword [esp + 0x60], eax
jmp 0xa4985b
lea eax, [esp + 0x4c]
push eax
mov ebx, esi
lea edi, [esp + 0x60]
call fcn.00a393ac
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x24]
xor ebx, ebx
mov esi, dword [esp + 0x5c]
sub eax, esi
mov ecx, eax
mov dword [esp + 0x58], 1
mov dword [esp + 0x24], ecx
mov eax, ebx
je 0xa4988d
sub cl, al
lea edx, [eax + 1]
xor cl, dl
xor cl, byte [esi + eax]
inc eax
xor cl, 0xa
mov byte [esi + eax - 1], cl
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jb 0xa49873
mov ecx, dword [0x10095894]
lea eax, [esp + 0x54]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], ebx
lea eax, [edi + 8]
mov byte [esp + 0x100], 0xb
push eax
lea esi, [esp + 0x4c]
mov dword [esp + 0x28], eax
call fcn.00a1395c
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], ebx
push ebx
lea esi, [esp + 0x44]
push esi
mov byte [esp + 0x108], 0xd
mov eax, dword [edi + 0x14]
lea esi, [esp + 0x44]
push esi
push ecx
lea ecx, [esp + 0x90]
mov dword [esp + 0x50], ebx
mov edx, dword [eax]
mov edx, dword [edx + 0xc]
push ecx
push eax
call edx
add esp, 0x18
test eax, eax
je 0xa49b27
mov eax, dword [esp + 0x24]
push eax
lea esi, [esp + 0x28]
call fcn.00a19a2c
push 0x12c
lea ecx, [esp + 0x30]
mov byte [esp + 0x104], 0xe
mov esi, dword [eax]
push ecx
call fcn.00a0e3cc
mov byte [esp + 0x100], 0x10
mov eax, dword [esp + 0x24]
cmp eax, ebx
je 0xa49949
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
add esp, 4
cmp dword [esp + 0x30], ebx
je 0xa49a9b
push 0x5c
push 0x1007bc88
call fcn.00a4df1c
add esp, 8
test eax, eax
je 0xa4997a
push 0x5c
push 0x1007bc88
call fcn.00a4df1c
add esp, 8
lea edi, [eax + 1]
jmp 0xa4997f
mov edi, 0x1007bc88
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x90], eax
neg eax
sbb eax, eax
and eax, 0x200
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], 0x201
mov dword [esp + 0xa0], 6
mov dword [esp + 0xa4], ebx
mov byte [esp + 0xa8], 0x20
mov byte [esp + 0x100], 0x11
mov ecx, 0x10078ad0
lea esi, [esp + 0x8c]
mov byte [esp + 0x20], 0x3a
call fcn.00a0e39c
mov ecx, edi
mov esi, eax
call fcn.00a0e39c
push 1
lea edx, [esp + 0x24]
push edx
push ebx
push ebx
mov esi, eax
call fcn.00a0f37c
mov eax, dword [esi + 0x10]
and eax, 0xe00
add esp, 0x10
cmp eax, 0x400
je 0xa49a2b
sub eax, 0x800
neg eax
sbb eax, eax
and eax, 0xfffffffa
add eax, 0x10
jmp 0xa49a30
mov eax, 8
push ebx
push 0x90
mov edx, 0x100784a8
mov ecx, eax
mov ebx, esi
call fcn.00a17e4c
mov ecx, 0x10078acc
call fcn.00a0e39c
mov ecx, 0x1007bf68
mov esi, eax
call fcn.00a0e39c
mov edx, dword [esp + 0x4c]
push eax
call fcn.00a2506c
mov byte [esp + 0x10c], 0x10
mov eax, dword [esp + 0x98]
add esp, 0xc
test eax, eax
je 0xa49a99
mov ecx, dword [esp + 0x90]
test ecx, ecx
je 0xa49a99
mov esi, dword [esp + 0x98]
mov edx, dword [eax]
push esi
push ecx
push eax
mov eax, dword [edx + 0x10]
call eax
add esp, 0xc
xor ebx, ebx
mov byte [esp + 0x100], 0xd
mov eax, dword [esp + 0x2c]
cmp eax, ebx
je 0xa49ab6
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
add esp, 4
mov dword [esp + 0x24], ebx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x90]
push ecx
mov edi, 0x1007bfa0
mov byte [esp + 0x108], 0x12
call fcn.00a1416c
push 0x91
push 0x1007bc88
lea edx, [esp + 0xb4]
push edx
lea ebx, [esp + 0x98]
mov byte [esp + 0x10c], 0x13
call fcn.00a12ebc
push 0x10083af0
lea eax, [esp + 0xb0]
push eax
mov dword [esp + 0xf0], 0x8000004b
mov dword [esp + 0xb4], 0x1007863c
call fcn.00a4ed6d
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
add eax, dword [esp + 0x40]
lea edx, [esp + 0x24]
push edx
mov edx, edi
mov dword [esp + 0x2c], eax
call fcn.00a4933c
test al, al
jne 0xa49c5a
cmp byte [ebp + 0x14], bl
je 0xa49c05
mov dword [esp + 0x90], ebx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa4], ebx
mov byte [esp + 0x100], 0x17
mov eax, dword [esp + 0x3c]
mov esi, dword [edi + 0x10]
mov edi, dword [esp + 0x34]
push 0x9b
push 0x1007bc88
push ebx
mov dword [esp + 0x30], eax
add eax, dword [esp + 0x4c]
lea ecx, [esp + 0x98]
push ecx
push ebx
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x38]
push eax
push ebx
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x68], esp
push ecx
mov dword [esp + 0xcc], 2
call fcn.00a35e8c
mov edx, dword [esi]
mov eax, dword [edx + 0xc]
push esi
call eax
add esp, 0x38
mov ecx, 0x1007bfd8
mov esi, eax
call fcn.00a1a24c
add esp, 8
lea ecx, [esp + 0x8c]
mov byte [esp + 0x100], 0xd
call fcn.00a3500c
jmp 0xa49c5a
mov eax, dword [esp + 0x3c]
mov esi, dword [edi + 0xc]
mov edi, dword [esp + 0x34]
push 0x9f
push 0x1007bc88
push ebx
push ebx
lea edx, [esp + 0x5c]
push edx
mov dword [esp + 0x60], eax
add eax, dword [esp + 0x54]
push ebx
sub esp, 0x20
mov dword [esp + 0x88], eax
mov eax, esp
mov dword [esp + 0x64], esp
push eax
call fcn.00a35e8c
mov ecx, dword [esi]
mov edx, dword [ecx + 0x14]
push esi
call edx
add esp, 0x34
mov ecx, 0x1007c008
mov esi, eax
call fcn.00a1a24c
add esp, 8
mov byte [esp + 0x100], 0xc
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov byte [esp + 0x108], 0xb
mov eax, dword [esp + 0x50]
add esp, 8
cmp eax, ebx
je 0xa49c91
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
add esp, 4
mov byte [esp + 0x100], 0xa
mov eax, dword [esp + 0x88]
cmp eax, ebx
je 0xa49caf
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
add esp, 4
lea eax, [esp + 0x54]
push eax
mov dword [esp + 0x104], 0xffffffff
call fcn.00a49cec
mov ecx, dword [esp + 0xf8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xe0]
xor ecx, esp
call fcn.00a4d018
mov esp, ebp
pop ebp
ret 0x10