Function at 0x1a9bf89
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x5c
and dword [ebp - 0x1c], 0
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ecx, dword [ebp + 8]
add ecx, dword [ebp + 0xc]
cmp dword [ebp + 0xc], 0x40
lea ebx, [edi + esi]
mov dword [ebp - 0x48], esi
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x3c], ecx
jb 0x1a9c42d
cmp esi, 8
jb 0x1a9c42d
cmp edi, 0x2001
ja 0x1a9bfd6
mov eax, 0xc00000bb
jmp 0x1a9c432
push 0x20000
push 0
push dword [ebp + 0x14]
call fcn.01a28e60
lea eax, [ebx - 5]
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x44], eax
add esp, 0xc
mov eax, dword [ebp - 0x3c]
xor edx, edx
mov ecx, dword [ebp - 0x44]
add eax, 0xffffffd7
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x5c], edx
lea esi, [eax + 4]
mov dword [ebp - 0x58], edx
mov al, byte [edi]
mov byte [esi], al
inc esi
push 2
mov dword [ebp - 0x2c], edx
inc edi
mov edx, dword [ebp - 0xc]
mov eax, edx
pop ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 4], esi
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x24], eax
add eax, 0x2000
mov dword [ebp - 0x30], eax
cmp eax, ecx
jbe 0x1a9c03f
mov eax, ecx
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x48]
add ecx, edi
mov dword [ebp - 0x34], ecx
cmp eax, ecx
jae 0x1a9c04e
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x2c]
and ecx, 0x3fff
mov dword [ebp - 0x2c], ecx
cmp dword [ebp - 0x24], eax
jae 0x1a9c0c0
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp - 0x30]
mov eax, ebx
mov edi, dword [ebp - 0x24]
sub eax, edi
lea edx, [esi + 0x20000]
lea edx, [edx + ecx*4]
add ecx, eax
mov dword [ebp - 0x2c], ecx
movzx eax, byte [edi + 1]
movzx ecx, word [eax*2 + 0x19cdec0]
movzx eax, byte [edi]
movzx eax, word [eax*2 + 0x19cdcc0]
xor ecx, eax
movzx eax, byte [edi + 2]
movzx eax, word [eax*2 + 0x19ce0c0]
xor ecx, eax
mov eax, dword [esi + ecx*4]
mov dword [edx], eax
lea edx, [edx + 4]
mov dword [esi + ecx*4], edi
inc edi
cmp edi, ebx
jb 0x1a9c07a
mov esi, dword [ebp - 4]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x24], edi
mov edi, dword [ebp - 0x38]
mov edx, dword [ebp - 0xc]
mov eax, 0x2000
lea ecx, [edi - 0x2000]
sub eax, edx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], eax
cmp edi, dword [ebp - 0x34]
jb 0x1a9c0f7
mov eax, dword [ebp - 0x30]
cmp edi, eax
jae 0x1a9c3eb
push edi
mov edx, eax
lea ecx, [ebp - 0x5c]
call fcn.01a9c9c6
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp + 0x14]
add ecx, eax
and ecx, 0x3fff
mov ecx, dword [edx + ecx*4 + 0x20000]
mov edx, dword [edi]
mov dword [ebp - 0x50], edx
cmp ecx, dword [ebp - 8]
jb 0x1a9c179
mov eax, dword [ecx]
xor eax, edx
je 0x1a9c1e3
test eax, 0xffffff
je 0x1a9c1c2
sub ecx, dword [ebp - 0xc]
mov eax, dword [ebp + 0x14]
and ecx, 0x3fff
mov ecx, dword [eax + ecx*4 + 0x20000]
cmp ecx, dword [ebp - 8]
jb 0x1a9c176
mov eax, dword [ecx]
xor eax, edx
je 0x1a9c1e3
test eax, 0xffffff
je 0x1a9c1c2
sub ecx, dword [ebp - 0xc]
mov eax, dword [ebp + 0x14]
and ecx, 0x3fff
mov ecx, dword [eax + ecx*4 + 0x20000]
cmp ecx, dword [ebp - 8]
jb 0x1a9c176
mov eax, dword [ecx]
xor eax, edx
je 0x1a9c1e3
test eax, 0xffffff
je 0x1a9c1c2
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
mov byte [esi], dl
inc esi
inc edi
mov dword [ebp - 4], esi
inc ecx
mov dword [ebp - 0x38], edi
mov dword [ebp - 8], ecx
test ebx, ebx
jle 0x1a9c198
add ebx, ebx
mov dword [ebp - 0x14], ebx
jmp 0x1a9c0d3
mov edx, dword [ebp - 0x18]
lea eax, [ebx + ebx]
xor ebx, ebx
inc ebx
mov dword [ebp - 0x14], ebx
mov dword [edx], eax
mov edx, esi
add esi, 4
mov dword [ebp - 0x18], edx
mov dword [ebp - 4], esi
cmp esi, dword [ebp - 0x40]
jae 0x1a9c3ff
mov eax, dword [ebp - 0x10]
jmp 0x1a9c0d3
mov eax, edi
mov dword [ebp - 0x10], 3
sub eax, ecx
mov dword [ebp - 0x1c], eax
lea eax, [edi - 0x2000]
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x1a9c31f
and dword [ebp - 4], 0
mov dword [ebp - 0x10], 3
mov dword [ebp - 0x4c], edi
add edi, 4
add ecx, 4
jmp 0x1a9c240
mov eax, dword [edi]
cmp eax, dword [ecx]
jne 0x1a9c283
mov eax, dword [edi + 4]
cmp eax, dword [ecx + 4]
jne 0x1a9c27d
mov eax, dword [edi + 8]
cmp eax, dword [ecx + 8]
jne 0x1a9c275
mov eax, dword [edi + 0xc]
cmp eax, dword [ecx + 0xc]
jne 0x1a9c26d
mov eax, dword [edi + 0x10]
cmp eax, dword [ecx + 0x10]
jne 0x1a9c265
mov eax, dword [edi + 0x14]
cmp eax, dword [ecx + 0x14]
jne 0x1a9c25d
mov eax, dword [edi + 0x18]
cmp eax, dword [ecx + 0x18]
jne 0x1a9c255
mov eax, dword [edi + 0x1c]
cmp eax, dword [ecx + 0x1c]
jne 0x1a9c24d
mov edi, edx
add ecx, 0x20
lea edx, [edi + 0x20]
cmp edx, dword [ebp - 0x28]
jb 0x1a9c1f9
mov edx, dword [ebp - 0x28]
jmp 0x1a9c2c1
add edi, 0x1c
add ecx, 0x1c
jmp 0x1a9c283
add edi, 0x18
add ecx, 0x18
jmp 0x1a9c283
add edi, 0x14
add ecx, 0x14
jmp 0x1a9c283
add edi, 0x10
add ecx, 0x10
jmp 0x1a9c283
add edi, 0xc
add ecx, 0xc
jmp 0x1a9c283
add edi, 8
add ecx, 8
jmp 0x1a9c283
add edi, 4
add ecx, 4
mov al, byte [edi]
cmp al, byte [ecx]
jne 0x1a9c2c5
lea eax, [edi + 1]
mov dword [ebp - 0x38], eax
mov al, byte [eax]
cmp al, byte [ecx + 1]
je 0x1a9c29c
mov edi, dword [ebp - 0x38]
inc ecx
jmp 0x1a9c2c5
lea eax, [edi + 2]
mov dword [ebp - 0x38], eax
mov al, byte [eax]
cmp al, byte [ecx + 2]
je 0x1a9c2b1
mov edi, dword [ebp - 0x38]
add ecx, 2
jmp 0x1a9c2c5
add edi, 3
add ecx, 3
jmp 0x1a9c2c5
mov al, byte [edi]
cmp al, byte [ecx]
jne 0x1a9c2c5
inc edi
inc ecx
cmp edi, edx
jb 0x1a9c2b9
mov edx, dword [ebp - 0x4c]
mov eax, edi
sub eax, edx
cmp eax, dword [ebp - 0x10]
jbe 0x1a9c309
sub edi, ecx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], edi
cmp ecx, edx
jbe 0x1a9c30c
mov edi, edx
mov eax, dword [ebp - 0x10]
add edi, eax
mov ecx, dword [ebp - 0x1c]
add eax, 0xfffffffd
mov dword [ebp - 0x38], edi
lea ecx, [ecx*8 - 8]
cmp eax, 7
jae 0x1a9c343
add ecx, eax
mov word [esi], cx
add esi, 2
mov dword [ebp - 0x1c], ecx
jmp 0x1a9c3b4
add dword [ebp - 4], eax
sub ecx, eax
mov edi, edx
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 4], eax
cmp eax, 0x18
jae 0x1a9c2df
sub ecx, dword [ebp - 0xc]
mov ebx, dword [ebp + 0x14]
and ecx, 0x3fff
mov ecx, dword [ebx + ecx*4 + 0x20000]
mov ebx, dword [ebp - 0x14]
cmp ecx, dword [ebp - 8]
jb 0x1a9c2df
cmp edx, dword [ecx]
jne 0x1a9c316
jmp 0x1a9c1ee
or ecx, 7
sub eax, 7
mov word [esi], cx
add esi, 2
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 4], esi
test ecx, ecx
jne 0x1a9c36f
mov dword [ebp - 0x20], esi
cmp eax, 0xf
jae 0x1a9c369
mov byte [esi], al
inc esi
jmp 0x1a9c3b4
mov byte [esi], 0xf
inc esi
jmp 0x1a9c388
cmp eax, 0xf
jae 0x1a9c380
shl al, 4
or byte [ecx], al
xor ecx, ecx
mov dword [ebp - 0x20], ecx
jmp 0x1a9c3b7
or byte [ecx], 0xf0
xor ecx, ecx
mov dword [ebp - 0x20], ecx
sub eax, 0xf
cmp eax, 0xff
jb 0x1a9c364
add eax, 0x16
mov byte [esi], 0xff
cmp eax, 0x10000
jae 0x1a9c3a8
mov word [esi + 1], ax
add esi, 3
jmp 0x1a9c3b4
xor ecx, ecx
mov word [esi + 1], cx
mov dword [esi + 3], eax
add esi, 7
mov dword [ebp - 4], esi
mov edx, dword [ebp - 0x18]
test ebx, ebx
jle 0x1a9c3c7
lea ebx, [ebx*2 + 1]
jmp 0x1a9c3de
lea eax, [ebx*2 + 1]
xor ebx, ebx
mov dword [edx], eax
inc ebx
mov edx, esi
add esi, 4
mov dword [ebp - 0x18], edx
mov dword [ebp - 4], esi
mov dword [ebp - 0x14], ebx
cmp esi, dword [ebp - 0x40]
jae 0x1a9c3ff
jmp 0x1a9c0bd
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x24]
cmp edi, ecx
jb 0x1a9c02e
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
jmp 0x1a9c424
cmp esi, dword [ebp - 0x3c]
jae 0x1a9c42d
mov al, byte [edi]
mov byte [esi], al
inc esi
inc edi
test ebx, ebx
jle 0x1a9c417
add ebx, ebx
jmp 0x1a9c424
lea eax, [ebx + ebx]
xor ebx, ebx
mov dword [edx], eax
inc ebx
mov edx, esi
add esi, 4
cmp edi, ecx
jb 0x1a9c404
cmp esi, dword [ebp - 0x3c]
jb 0x1a9c442
mov eax, 0xc0000023
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
lea ebx, [ebx*2 + 1]
test ebx, ebx
jg 0x1a9c43b
sub esi, dword [ebp + 8]
lea eax, [ebx*2 + 1]
mov dword [edx], eax
mov eax, dword [ebp + 0x10]
push 8
pop ecx
mov dword [eax], esi
cmp esi, ecx
jae 0x1a9c460
mov dword [eax], ecx
xor eax, eax
jmp 0x1a9c432