Function at 0x19e240
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x110
mov dword [esp + 8], 0x9b2e9975
mov dword [esp + 0xc], 0x87258513
mov dword [esp + 0x10], 0x83168121
mov dword [esp + 0x14], 0x8f1e8d4d
mov dword [esp + 0x18], 0x8b468918
mov dword [esp + 0x1c], 0x77ea75d5
mov dword [esp + 0x20], 0x739f71d1
lea eax, [esp + 0x24]
mov word [esp + 0x24], 0x7d7c
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
mov dword [esp + 0x8c], 0
mov ecx, dword [esp + 0x8c]
cmp ecx, 0x22
ja 0x19e31e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x8c]
movzx edx, byte [esp + edx + 8]
lea esi, [ecx + edx]
add esi, 0x3c7feb6c
add ecx, 0x6c
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, esi
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 0xac], ecx
mov ecx, dword [esp + 0xac]
add cl, 0xc
mov edx, dword [esp + 0x8c]
mov byte [esp + edx + 8], cl
inc dword [esp + 0x8c]
mov ecx, dword [esp + 0x8c]
cmp ecx, 0x23
jb 0x19e2c0
lea esi, [esp + 0x8c]
lea edx, [esp + 8]
mov ecx, 7
mov edi, esi
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xa8]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea ebx, [esp + 0x64]
push ebx
push 0
push 0
push 0xe
push esi
push 0
call dword [0x1c91d4]
mov edi, dword [esp + 0x64]
test edi, edi
jns 0x19e36a
mov eax, 0xffffffff
jmp 0x19e36d
lea eax, [edi + edi]
push eax
call fcn.00189390
add esp, 4
mov esi, eax
push ebx
push edi
push eax
push 0xe
lea eax, [esp + 0x9c]
push eax
push 0
call dword [0x1c91d4]
mov dword [esp + 8], 0xc314c562
mov dword [esp + 0xc], 0xcf6dc16d
mov dword [esp + 0x10], 0xcb63cd7b
mov dword [esp + 0x14], 0xd763c963
mov dword [esp + 0x18], 0xd3d4d56b
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x68], 0
mov ecx, dword [esp + 0x68]
cmp ecx, 0x17
ja 0x19e425
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x68]
movzx edx, byte [esp + edx + 8]
lea edi, [ecx + 0x4d9491a1]
add ecx, 0xa1
and ecx, edx
or edi, edx
sub edi, ecx
mov dword [esp + 0xac], edi
mov ecx, dword [esp + 0xac]
add cl, 0x99
mov edx, dword [esp + 0x68]
mov byte [esp + edx + 8], cl
inc dword [esp + 0x68]
mov ecx, dword [esp + 0x68]
cmp ecx, 0x18
jb 0x19e3e0
lea edi, [esp + 0xf8]
lea ebx, [esp + 8]
mov edx, ebx
mov ecx, 5
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x10c]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [esp + 0x64]
mov ecx, eax
and ecx, 0xa
xor eax, 0xa
lea edx, [eax + ecx*2]
dec edx
test edx, edx
jns 0x19e466
mov eax, 0xffffffff
jmp 0x19e46e
lea eax, [eax + ecx*2]
add eax, eax
add eax, 0xfffffffe
push eax
call fcn.00189390
add esp, 4
mov edi, eax
movzx ecx, word [esi]
test cx, cx
je 0x19e4a1
lea edx, [esi + 2]
mov eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x19e490
mov word [eax], 0
movzx ecx, word [esp + 0xf8]
test cx, cx
je 0x19e4d1
lea edx, [esp + 0xfa]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x19e4c0
mov word [eax], 0
lea eax, [esp + 0x88]
push eax
push edi
call fcn.001bae60
add esp, 8
not eax
shr eax, 0x1f
mov dword [esp + 0x84], edi
jmp dword [eax*4 + 0x1c37dc]