Function at 0x4189ab
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
or dword [ebp - 0x1c], 0xffffffff
push ebx
push esi
xor esi, esi
mov dword [ebp - 0xc], edx
inc esi
mov dword [ebp - 0x18], ecx
push edi
mov dword [ebp - 0x10], 1
xor ebx, ebx
xor edx, edx
mov ecx, esi
inc edx
call fcn.00418de0
shl eax, 3
mov edi, ebx
mov dword [ebp - 0x20], eax
mov dword [ebp - 8], ebx
cmp dword [ebp - 0xc], ebx
jbe 0x418a33
mov ecx, dword [ebp - 0x18]
add ecx, 0xc
mov dword [ebp - 0x14], ecx
mov ecx, dword [ecx - 0xc]
mov edx, esi
call fcn.00419bf8
mov edx, eax
xor eax, eax
inc eax
mov ecx, edx
shl eax, cl
mov ecx, dword [ebp - 0x14]
cmp dword [ecx - 8], eax
jge 0x418a37
mov eax, dword [ecx]
add edi, 4
add eax, edx
add edi, eax
cmp edi, 0x7fff
jg 0x418a37
mov eax, dword [ebp - 8]
add ecx, 0x10
inc eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 8], eax
cmp eax, dword [ebp - 0xc]
jb 0x4189ed
cmp edi, 0xffffffff
je 0x418a37
mov eax, dword [ebp - 0x20]
cmp edi, eax
jle 0x418a4c
cmp esi, 0x28
jge 0x418a3f
inc esi
jmp 0x4189ca
mov byte [0x554620], bl
xor al, al
jmp 0x418c49
xor ebx, ebx
inc ebx
mov edx, ebx
mov ecx, esi
call fcn.00418de0
shl eax, 3
mov ecx, ebx
cmp edi, eax
cmovg ecx, dword [ebp - 0x10]
inc ebx
mov dword [ebp - 0x10], ecx
cmp ebx, 3
jle 0x418a4f
lea eax, [esi*4 + 0x11]
xor ebx, ebx
imul eax, eax
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
inc eax
push eax
push ebx
push 0x554620
call fcn.00481c10
add esp, 0xc
mov dword [ebp - 8], ebx
push 4
pop ecx
cmp dword [ebp - 0xc], ebx
jbe 0x418b26
mov edi, dword [ebp - 0x18]
add edi, 0xc
lea eax, [ebp - 8]
mov edx, ecx
mov ecx, dword [edi - 0xc]
push eax
push 0x554620
call fcn.00418968
pop ecx
pop ecx
mov ecx, dword [edi - 0xc]
lea eax, [ebp - 8]
push eax
push 0x554620
mov edx, esi
call fcn.00419bf8
mov ecx, dword [edi - 8]
mov edx, eax
call fcn.00418968
pop ecx
pop ecx
mov dword [ebp - 0x20], ebx
cmp dword [edi], ebx
jle 0x418b1a
lea eax, [ebp - 8]
mov edx, ebx
push eax
push 0x554620
mov al, bl
sar edx, 3
and al, 7
push 7
pop ecx
sub cl, al
mov eax, dword [edi - 4]
movzx eax, byte [edx + eax]
xor edx, edx
shr eax, cl
inc edx
and eax, 1
mov ecx, eax
call fcn.00418968
inc ebx
pop ecx
pop ecx
cmp ebx, dword [edi]
jl 0x418ae4
xor ebx, ebx
add edi, 0x10
sub dword [ebp - 0xc], 1
push 4
pop ecx
jne 0x418aa9
mov edi, dword [ebp - 0x10]
mov ecx, esi
mov edx, edi
call fcn.00418de0
shl eax, 3
mov edx, eax
mov dword [ebp - 0x18], eax
sub edx, dword [ebp - 8]
push 4
pop eax
cmp edx, eax
cmovg edx, eax
lea eax, [ebp - 8]
push eax
push 0x554620
xor ecx, ecx
call fcn.00418968
lea eax, [ebp - 8]
push eax
mov eax, dword [ebp - 8]
push 0x554620
and eax, 0x80000007
jns 0x418b6d
dec eax
or eax, 0xfffffff8
inc eax
push 8
pop edx
sub edx, eax
and edx, 0x80000007
jns 0x418b7f
dec edx
or edx, 0xfffffff8
inc edx
xor ecx, ecx
call fcn.00418968
mov eax, dword [ebp - 0x18]
add esp, 0x10
mov byte [ebp - 1], 0xec
cmp dword [ebp - 8], eax
jge 0x418bbd
mov bl, byte [ebp - 1]
mov edi, eax
lea eax, [ebp - 8]
movzx ecx, bl
push eax
push 0x554620
push 8
pop edx
call fcn.00418968
pop ecx
xor bl, 0xfd
pop ecx
cmp dword [ebp - 8], edi
jl 0x418b9a
mov edi, dword [ebp - 0x10]
xor ebx, ebx
push ecx
push edi
mov edx, esi
call fcn.00418c4e
mov edx, 0x554620
mov ecx, esi
call fcn.00418f2e
pop ecx
mov ecx, esi
call fcn.00418e0d
cdq
and edx, 7
add edx, eax
sar edx, 3
call fcn.0041944a
pop ecx
mov edx, esi
call fcn.00419061
mov edx, 0x553408
mov ecx, esi
call fcn.00418f2e
mov dword [ebp - 0x18], SysReAllocString
push ebx
call fcn.00419528
mov edx, ebx
mov ecx, edi
call fcn.00419264
pop ecx
call fcn.00419688
cmp eax, dword [ebp - 0x18]
jge 0x418c27
mov esi, ebx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c2a
mov esi, dword [ebp - 0x1c]
push ebx
call fcn.00419528
inc ebx
pop ecx
cmp ebx, 8
jl 0x418c03
push esi
call fcn.00419528
mov edx, esi
mov ecx, edi
call fcn.00419264
pop ecx
mov al, 1
pop edi
pop esi
pop ebx
leave
ret