Function at 0x41bd14
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, ecx
mov dword [ebp - 0x14], eax
test eax, eax
je 0x41bf69
cmp dword [ebp + 0x18], 0
jne 0x41bd39
push 0x2c
mov ecx, str.out___NULL
jmp 0x41bf70
cmp dword [ebp + 0x1c], 0
jne 0x41bd4b
push 0x2d
mov ecx, str.outlen___NULL
jmp 0x41bf70
mov eax, dword [ebp + 0x20]
test eax, eax
jne 0x41bd5e
push 0x2e
mov ecx, str.res___NULL
jmp 0x41bf70
and dword [eax], 0
mov ecx, dword [ebp + 0x14]
push esi
call fcn.0041deeb
test eax, eax
jne 0x41bf66
imul eax, ecx, 0x68
push ebx
push edi
push 0
pop ebx
mov edi, dword [eax + 0x43bbb8]
mov eax, dword [ebp + 0x10]
test al, 7
mov dword [ebp - 0x18], edi
setne bl
shr eax, 3
add ebx, eax
lea eax, [edi + edi]
lea ecx, [ebx - 2]
cmp eax, ecx
jae 0x41bf61
cmp edx, ebx
jne 0x41bf61
mov esi, dword [sym.imp.lib.stdc.dll_malloc]
push ebx
call esi
push ebx
mov dword [ebp - 4], eax
call esi
push edi
mov dword [ebp - 8], eax
call esi
mov esi, dword [sym.imp.lib.stdc.dll_free]
mov edi, eax
mov eax, dword [ebp - 4]
add esp, 0xc
mov dword [ebp - 0x10], edi
test eax, eax
je 0x41bf4a
cmp dword [ebp - 8], 0
je 0x41bf46
test edi, edi
je 0x41bf46
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
push esi
movzx ecx, byte [eax]
neg ecx
sbb ecx, ecx
and ecx, 7
inc eax
push eax
push edi
mov dword [ebp - 0x1c], ecx
call fcn.00429d40
mov edi, dword [ebp - 4]
mov eax, ebx
sub eax, esi
dec eax
push eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x14]
inc eax
add eax, esi
push eax
push edi
call fcn.00429d40
mov ecx, dword [ebp + 0x14]
mov edx, edi
push esi
push dword [ebp - 8]
push dword [ebp - 0xc]
call fcn.0041df03
mov edi, eax
add esp, 0x24
test edi, edi
jne 0x41bf2a
test esi, esi
je 0x41be52
mov edx, dword [ebp - 8]
mov edi, esi
mov ecx, dword [ebp - 0x10]
sub edx, ecx
mov al, byte [edx + ecx]
xor byte [ecx], al
inc ecx
sub edi, 1
jne 0x41be47
push dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
push dword [ebp - 8]
mov ecx, dword [ebp + 0x14]
push esi
call fcn.0041df03
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x41bf2a
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
test eax, eax
je 0x41be92
mov edi, dword [ebp - 8]
mov edx, ecx
sub edi, ecx
mov esi, eax
mov al, byte [edi + edx]
xor byte [edx], al
inc edx
sub esi, 1
jne 0x41be84
mov esi, dword [ebp - 0x18]
mov edx, dword [ebp + 8]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], ebx
push eax
push dword [ebp - 0x10]
test edx, edx
je 0x41bea8
push dword [ebp + 0xc]
jmp 0x41beac
push 0
mov edx, ecx
mov ecx, dword [ebp + 0x14]
call fcn.0041de1b
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x41bf2a
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x1c]
push esi
call fcn.0041e051
pop ecx
test eax, eax
je 0x41bed4
push 7
pop edi
mov edx, esi
mov eax, dword [ebp - 4]
mov ecx, esi
cmp esi, dword [ebp - 0xc]
jae 0x41beee
cmp byte [edx + eax], 0
jne 0x41beee
inc edx
mov ecx, edx
cmp edx, dword [ebp - 0xc]
jb 0x41bee0
cmp ecx, dword [ebp - 0xc]
je 0x41bef9
cmp byte [edx + eax], 1
je 0x41befc
push 7
pop edi
mov edx, dword [ebp + 0x1c]
inc ecx
sub ebx, ecx
sub ebx, esi
dec ebx
cmp ebx, dword [edx]
jbe 0x41bf0c
push 7
pop edi
test edi, edi
jne 0x41bf2a
push ebx
add eax, ecx
mov dword [edx], ebx
push eax
push dword [ebp + 0x18]
call fcn.00429d40
mov eax, dword [ebp + 0x20]
add esp, 0xc
mov dword [eax], 1
push dword [ebp - 0x10]
mov esi, dword [sym.imp.lib.stdc.dll_free]
call esi
push dword [ebp - 8]
call esi
push dword [ebp - 4]
call esi
add esp, 0xc
mov eax, edi
jmp 0x41bf64
push eax
call esi
pop ecx
mov eax, dword [ebp - 8]
test eax, eax
je 0x41bf55
push eax
call esi
pop ecx
test edi, edi
je 0x41bf5d
push edi
call esi
pop ecx
push 0xd
jmp 0x41bf63
push 0x16
pop eax
pop edi
pop ebx
pop esi
leave
ret
push 0x2b
mov ecx, str.msg___NULL
call fcn.0041c461
int3