Function at 0x10029190
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x10065c90
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x10090730]
xor eax, esp
mov dword [esp + 0x64], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x10090730]
xor eax, esp
push eax
lea eax, [esp + 0x7c]
mov dword fs:[0], eax
mov eax, dword [esp + 0x8c]
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x14]
mov esi, ecx
mov ecx, dword [esp + 0x94]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
push eax
push 0x100926d8
mov edi, 0x400
push str.EffectiveKeyLength
mov dword [esp + 0x20], edi
call edx
cmp dword [esp + 0x14], edi
jle 0x10029239
push str.RC2:_effective_key_length_parameter_exceeds_maximum
lea ecx, [esp + 0x34]
call fcn.10002ba0
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x50]
push ecx
mov dword [esp + 0x8c], 0
call fcn.10004a50
push 0x100872f0
lea edx, [esp + 0x50]
push edx
call fcn.10043d3c
mov edi, 0x80
mov dword [esp + 0x28], edi
call fcn.10024720
mov ebp, eax
mov dword [esp + 0x2c], ebp
mov eax, dword [esp + 0x18]
push ebx
push eax
mov edi, 1
push ebp
mov dword [esp + 0x90], edi
call fcn.100434e0
add esp, 0xc
cmp ebx, 0x80
jge 0x1002929c
mov ecx, 0x80
sub edi, ebx
lea eax, [ebx + ebp - 1]
sub ecx, ebx
lea ecx, [ecx]
movzx edx, byte [edi + eax]
movzx ebx, byte [eax]
add edx, ebx
and edx, 0xff
mov dl, byte [edx + 0x10079ef0]
mov byte [eax + 1], dl
inc eax
dec ecx
jne 0x10029280
mov ecx, dword [esp + 0x14]
lea eax, [ecx + 7]
cdq
and edx, 7
add eax, edx
mov edx, ecx
sar eax, 3
and edx, reloc.OLEAUT32.dll_VariantInit
jns 0x100292bb
dec edx
or edx, 0xfffffff8
inc edx
mov ecx, 8
sub ecx, edx
and ecx, reloc.OLEAUT32.dll_VariantInit
jns 0x100292cf
dec ecx
or ecx, 0xfffffff8
inc ecx
mov edx, 0xff
sar edx, cl
mov ecx, ebp
sub ecx, eax
movzx edi, byte [ecx + 0x80]
movzx edx, dl
and edi, edx
mov dl, byte [edi + 0x10079ef0]
mov byte [ecx + 0x80], dl
mov ecx, 0x7f
sub ecx, eax
js 0x10029317
lea edi, [ecx + ebp + 1]
nop
movzx edx, byte [eax + edi - 1]
movzx ebx, byte [edi]
xor edx, ebx
mov dl, byte [edx + 0x10079ef0]
mov byte [edi - 1], dl
dec edi
dec ecx
jns 0x10029300
mov ecx, 1
sub ecx, ebp
mov dword [esp + 0x20], ecx
mov ecx, 3
sub ecx, ebp
mov dword [esp + 0x1c], ecx
mov ecx, 0xfffffffd
sub ecx, ebp
lea eax, [ebp + 3]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], 0x10
jmp 0x10029354
mov ecx, dword [esp + 0x18]
movzx edx, byte [eax - 2]
mov edi, 0x100
imul dx, di
movzx edi, byte [eax - 3]
add dx, di
mov edi, dword [esi + 0x9c]
add ecx, eax
mov word [ecx + edi], dx
movzx edi, byte [eax]
movzx edx, byte [eax - 1]
mov ebx, 0x100
imul di, bx
add dx, di
mov edi, dword [esi + 0x9c]
mov word [ecx + edi + 2], dx
movzx ecx, byte [eax + 2]
mov edi, dword [esi + 0x9c]
mov edx, ebx
imul cx, dx
movzx edx, byte [eax + 1]
add cx, dx
mov edx, dword [esp + 0x20]
add edx, eax
mov word [edx + edi], cx
movzx edx, byte [eax + 4]
mov ecx, dword [esi + 0x9c]
mov edi, ebx
imul dx, di
movzx edi, byte [eax + 3]
add dx, di
mov edi, dword [esp + 0x1c]
add edi, eax
add eax, 8
dec dword [esp + 0x14]
mov word [edi + ecx], dx
jne 0x10029350
xor al, al
mov dword [esp + 0x84], 0xffffffff
mov edi, ebp
mov ecx, 0x80
push ebp
rep stosb byte es:[edi], al
call fcn.10043d88
add esp, 4
mov ecx, dword [esp + 0x7c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x64]
xor ecx, esp
call fcn.100444a1
add esp, 0x74
ret 0xc