Function at 0xa1a338
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xac
mov edx, dword [ebp + 8]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov esi, dword [edx + 0x130]
mov dword [esp], ebx
mov dword [ebp - 0x38], esi
call fcn.00a14648
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
call fcn.00a14658
mov dword [ebp - 0x40], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x8c]
mov esi, dword [edx + 0x28]
lea ebx, [eax + eax*4]
add ebx, ebx
neg ebx
sub ebx, esi
add ebx, 0x64
mov dword [ebp - 0x44], ebx
call fcn.00a23318
mov byte [ebp - 0x28], 1
mov ecx, dword [ebp + 8]
mov byte [ebp - 0x27], 5
mov byte [ebp - 0x26], 3
mov byte [ebp - 0x25], 2
mov byte [ebp - 0x24], 4
mov byte [ebp - 0x23], 0
mov byte [ebp - 0x22], 3
fild dword [ecx + 0xa0]
fmul qword [0xd7b5b8]
mov dword [ebp - 0x48], eax
fld dword [0xd7b5c0]
mov byte [ebp - 0x68], 0xff
fcomp st(1)
fnstsw ax
sahf
jb 0xa1a50a
fnstcw word [ebp - 0x2a]
movzx ecx, word [ebp - 0x2a]
fadd dword [0xd7b5c4]
or cx, 0xc00
mov word [ebp - 0x2c], cx
fldcw word [ebp - 0x2c]
fistp word [ebp - 0x32]
fldcw word [ebp - 0x2a]
movzx eax, word [ebp - 0x32]
mov byte [ebp - 0x68], al
mov dword [ebp - 0x6c], 0
mov esi, dword [ebp + 8]
xor edx, edx
mov dword [ebp - 0x98], edx
mov dword [ebp - 0x74], 0
mov edx, dword [esi + 0x130]
mov dword [ebp - 0x7c], 0
mov eax, dword [edx + 0xcec8]
movzx ebx, byte [edx + 0x7ce0]
test al, 1
mov byte [ebp - 0x6d], bl
je 0xa1a43a
test al, 8
je 0xa1a623
mov byte [ebp - 0x81], 0
mov ecx, dword [ebp + 8]
mov esi, dword [edx + 0x21d28]
mov byte [ebp - 0x82], 0
mov eax, dword [ecx + 0x70]
mov cl, al
shr eax, 1
and cl, 1
mov bl, al
mov eax, dword [edx + 0x21d2c]
and bl, 1
mov edx, dword [ebp + 8]
mov dword [ebp - 0x88], eax
movzx eax, byte [edx + 0xc8]
mov edx, dword [ebp + 8]
mov byte [ebp - 0x89], al
mov eax, dword [edx + 0x88]
test eax, eax
je 0xa1a511
cmp eax, 3
je 0xa1a95e
mov byte [ebp - 0x49], 0
mov edx, dword [ebp + 8]
cmp eax, 6
mov edx, dword [edx + 0x94]
mov dword [ebp - 0x90], edx
jbe 0xa1a51d
mov eax, dword [ebp - 0x38]
movzx edx, byte [eax + 0x21d30]
test dl, 2
je 0xa1a534
mov eax, dword [eax + 0x21d38]
cmp eax, 0x1fe
mov dword [ebp - 0x9c], eax
jle 0xa1a5fc
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x21d38], 0x1fe
mov eax, 0x1fe
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x9c]
test eax, eax
js 0xa1a98d
mov eax, dword [ebp - 0x9c]
or eax, 0x2c00
mov dword [ebp - 0x6c], eax
jmp 0xa1a534
fstp st(0)
jmp 0xa1a3f8
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x44]
mov dword [ebp - 0x90], edx
movzx eax, byte [eax + ebp - 0x28]
mov byte [ebp - 0x49], al
mov eax, dword [ebp - 0x38]
movzx edx, byte [eax + 0x21d30]
test dl, 2
jne 0xa1a4bd
test dl, 4
je 0xa1a574
fld qword [0xd7b5c8]
mov edx, dword [ebp - 0x38]
fmul dword [edx + 0x21d34]
fnstcw word [ebp - 0x2a]
movzx eax, word [ebp - 0x2a]
fadd dword [0xd7b5c4]
or ax, 0xc00
mov word [ebp - 0x2c], ax
fldcw word [ebp - 0x2c]
fistp dword [ebp - 0x30]
fldcw word [ebp - 0x2a]
mov eax, dword [ebp - 0x30]
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x98], eax
cmp esi, 0xffffffff
je 0xa1a595
mov eax, dword [ebp - 0x88]
test eax, eax
jle 0xa1a58a
mov byte [ebp - 0x82], 1
lea edx, [esi - 1]
cmp edx, dword [ebp - 0x88]
jg 0xa1a5f3
movzx edx, byte [ebp - 0x81]
shl cl, 4
shl bl, 5
add cl, byte [ebp - 0x89]
mov eax, dword [ebp - 0x44]
shl dl, 6
add bl, cl
not eax
add dl, bl
movzx ebx, byte [ebp - 0x82]
mov esi, eax
mov ecx, dword [ebp - 0x44]
sar esi, 0x1f
shl ebx, 7
and esi, ecx
add dl, bl
mov ebx, dword [ebp + 8]
mov byte [ebp - 0x8a], dl
mov eax, dword [ebx + 0x2c]
cmp eax, 1
je 0xa1a949
jb 0xa1a62f
cmp eax, 2
mov cl, 2
je 0xa1a631
xor ecx, ecx
cmp eax, 3
je 0xa1a631
mov cl, 7
jmp 0xa1a631
mov byte [ebp - 0x81], 1
jmp 0xa1a595
cmp dword [ebp - 0x9c], 0xfffffe02
jge 0xa1a4ec
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x21d38], 0xfffffe02
mov eax, 0xfffffe02
jmp 0xa1a4e6
mov dword [ebp - 0x7c], 1
jmp 0xa1a43a
mov cl, 1
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 8]
xor ebx, ebx
mov dword [ebp - 0x94], eax
cmp eax, 0x7d00
jle 0xa1a65f
cmp eax, 0xbb80
mov bl, 2
je 0xa1a65f
cmp eax, 0xbb81
setge bl
dec bl
and bl, 0xfe
add bl, 3
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xe4]
sub eax, 2
cmp eax, 1
jbe 0xa1a6c5
cmp dword [edx + 0xa0], 0xffffffff
je 0xa1a97b
mov edx, dword [ebp + 8]
fld dword [edx + 0x14]
fcomp dword [edx + 0x18]
fnstsw ax
sahf
jne 0xa1a6c5
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x60]
test eax, eax
jne 0xa1a969
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0xc4]
test edx, edx
jne 0xa1a6c5
mov eax, dword [eax + 0xbc]
test eax, eax
setne al
cmp byte [ebp - 0x89], 0
sete dl
or eax, edx
test al, 1
je 0xa1a9a2
mov dword [ebp - 0x74], 1
shl dword [ebp - 0x74], 5
mov edx, 2
shl cl, 2
add cl, byte [ebp - 0x6d]
shl bl, 6
mov dword [esp + 8], edx
mov eax, dword [ebp + 0xc]
mov byte [ebp - 0x75], bl
add cl, byte [ebp - 0x74]
mov dword [esp], eax
add byte [ebp - 0x75], cl
xor ecx, ecx
mov dword [esp + 4], ecx
call fcn.00a5b680
mov ebx, dword [ebp + 0xc]
mov dword [esp], ebx
call fcn.00a5b6d8
mov edx, dword [ebp + 0x14]
mov ebx, eax
mov ecx, dword [ebp - 0x7c]
sub ebx, edx
test ecx, ecx
je 0xa1a718
add ebx, 0xffffff80
mov ecx, dword [ebp - 0x38]
mov edx, esi
sar edx, 0x18
mov eax, dword [ecx + 0xcee8]
mov ecx, esi
sar ecx, 0x10
mov dword [ebp - 0x80], eax
mov eax, esi
sar eax, 8
mov byte [edi], dl
mov edx, esi
lea esi, [edi + 4]
mov byte [edi + 1], cl
mov ecx, 9
mov byte [edi + 3], dl
mov byte [edi + 2], al
mov eax, dword [ebp - 0x48]
mov dword [esp + 8], ecx
mov dword [esp], esi
lea esi, [edi + 0xf]
mov dword [esp + 4], eax
call fcn.00a5b618
movzx edx, byte [ebp - 0x49]
mov byte [edi + 0xd], dl
movzx ecx, byte [ebp - 0x68]
mov byte [edi + 0xe], cl
mov eax, dword [ebp - 0x98]
sar eax, 0x18
mov byte [edi + 0xf], al
mov edx, dword [ebp - 0x98]
sar edx, 0x10
mov byte [esi + 1], dl
mov ecx, dword [ebp - 0x98]
sar ecx, 8
mov byte [esi + 2], cl
movzx eax, byte [ebp - 0x98]
mov byte [esi + 3], al
mov edx, dword [ebp - 0x6c]
sar edx, 8
mov byte [edi + 0x13], dl
movzx ecx, byte [ebp - 0x6c]
mov byte [edi + 0x15], 0
mov byte [edi + 0x16], 0
mov byte [edi + 0x14], cl
movzx eax, byte [ebp - 0x8a]
mov byte [edi + 0x17], al
cmp dword [ebp - 0x90], 0xfe
jle 0xa1a93a
mov byte [edi + 0x18], 0xff
mov eax, dword [ebp - 0x3c]
sar eax, 4
mov byte [edi + 0x19], al
mov ecx, dword [ebp - 0x40]
shl dword [ebp - 0x3c], 4
sar ecx, 8
add cl, byte [ebp - 0x3c]
mov byte [edi + 0x1a], cl
movzx edx, byte [ebp - 0x40]
mov byte [edi + 0x1b], dl
movzx eax, byte [ebp - 0x75]
mov byte [edi + 0x1d], 0
mov byte [edi + 0x1c], al
mov esi, dword [ebp + 8]
mov eax, ebx
sar eax, 0x18
mov edx, dword [esi + 0x84]
mov byte [edi + 0x20], al
mov eax, ebx
mov ecx, edx
mov byte [edi + 0x1f], dl
sar ecx, 8
mov edx, ebx
mov byte [edi + 0x1e], cl
sar edx, 0x10
lea ecx, [edi + 0x20]
mov byte [ecx + 1], dl
sar eax, 8
mov byte [ecx + 2], al
mov byte [ecx + 3], bl
mov edx, dword [ebp - 0x80]
movzx ecx, byte [edi]
sar edx, 8
mov byte [edi + 0x24], dl
movzx eax, byte [ebp - 0x80]
mov byte [edi + 0x25], al
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp + 0x18]
movzx eax, byte [edi + 1]
xor ecx, esi
and ecx, 0xff
mov ebx, dword [ecx*4 + 0xb58720]
sar edx, 8
xor edx, ebx
xor eax, edx
mov ebx, edx
and eax, 0xff
mov esi, dword [eax*4 + 0xb58720]
sar ebx, 8
xor ebx, esi
mov esi, 2
movzx edx, byte [esi + edi]
mov eax, ebx
sar eax, 8
xor edx, ebx
and edx, 0xff
mov ecx, dword [edx*4 + 0xb58720]
movzx edx, byte [edi + esi + 1]
xor eax, ecx
movzx ecx, byte [edi + esi + 2]
xor edx, eax
and edx, 0xff
mov ebx, dword [edx*4 + 0xb58720]
sar eax, 8
movzx edx, byte [edi + esi + 3]
xor eax, ebx
xor ecx, eax
and ecx, 0xff
sar eax, 8
mov ebx, dword [ecx*4 + 0xb58720]
xor eax, ebx
xor edx, eax
and edx, 0xff
movzx ebx, byte [edi + esi + 4]
sar eax, 8
mov ecx, dword [edx*4 + 0xb58720]
movzx edx, byte [edi + esi + 5]
add esi, 6
xor eax, ecx
xor ebx, eax
and ebx, 0xff
sar eax, 8
mov ecx, dword [ebx*4 + 0xb58720]
xor eax, ecx
xor edx, eax
and edx, 0xff
mov ecx, eax
mov ebx, dword [edx*4 + 0xb58720]
sar ecx, 8
xor ecx, ebx
cmp esi, 0x26
mov ebx, ecx
jl 0xa1a878
mov byte [edi + 0x27], cl
mov eax, ecx
sar eax, 8
mov byte [edi + 0x26], al
add esp, 0xac
mov eax, 0x28
pop ebx
pop esi
pop edi
pop ebp
ret
movzx edx, byte [ebp - 0x90]
mov byte [edi + 0x18], dl
jmp 0xa1a7d0
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x34]
cmp edx, 1
sbb eax, eax
mov cl, al
add cl, 4
jmp 0xa1a631
mov edx, dword [edx + 0x90]
jmp 0xa1a517
cmp dword [edx + 0x44], 0x13f
jle 0xa1a6c5
jmp 0xa1a699
cmp dword [edx + 0xa4], 0xffffffff
jne 0xa1a67d
jmp 0xa1a6c5
mov eax, dword [ebp - 0x9c]
neg eax
or eax, 0x2e00
mov dword [ebp - 0x6c], eax
jmp 0xa1a534
cmp dword [ebp - 0x94], 0x7d00
jg 0xa1a6cc
jmp 0xa1a6c5