Function at 0x41bc39
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
push edi
xor edi, edi
mov esi, ecx
xor ebx, ebx
mov ebp, 0x106
mov eax, dword [esi + 0x6c]
cmp eax, ebp
jae 0x41bc6f
mov ecx, esi
call fcn.0041a806
mov eax, dword [esi + 0x6c]
cmp eax, ebp
jae 0x41bc67
cmp dword [esp + 0x14], edi
je 0x41be32
cmp eax, edi
je 0x41bdd6
cmp eax, 3
jb 0x41bcb0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x50]
mov edx, dword [esi + 0x64]
shl eax, cl
mov ecx, dword [esi + 0x28]
movzx ecx, byte [ecx + edx + 2]
xor eax, ecx
mov ecx, dword [esi + 0x38]
and eax, dword [esi + 0x4c]
mov dword [esi + 0x40], eax
movzx ebx, word [ecx + eax*2]
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x30]
and eax, edx
mov word [ecx + eax*2], bx
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x38]
mov dx, word [esi + 0x64]
mov word [ecx + eax*2], dx
cmp ebx, edi
je 0x41bcd6
mov eax, dword [esi + 0x64]
mov ecx, dword [esi + 0x1c]
sub eax, ebx
sub ecx, ebp
cmp eax, ecx
ja 0x41bcd6
cmp dword [esi + 0x80], 2
je 0x41bcd6
push ebx
mov ecx, esi
call fcn.0041be3b
mov dword [esi + 0x58], eax
mov eax, dword [esi + 0x58]
cmp eax, 3
jb 0x41bd79
add eax, 0xfffffffd
mov ecx, esi
push eax
mov eax, dword [esi + 0x64]
sub eax, dword [esi + 0x68]
push eax
call fcn.0041c175
mov ecx, dword [esi + 0x58]
sub dword [esi + 0x6c], ecx
cmp ecx, dword [esi + 0x78]
mov edx, dword [esi + 0x6c]
ja 0x41bd51
cmp edx, 3
jb 0x41bd51
dec ecx
mov dword [esi + 0x58], ecx
inc dword [esi + 0x64]
mov edi, dword [esi + 0x64]
mov ecx, dword [esi + 0x28]
mov ebx, dword [esi + 0x40]
movzx edx, byte [edi + ecx + 2]
mov ecx, dword [esi + 0x50]
shl ebx, cl
mov ecx, dword [esi + 0x38]
xor edx, ebx
and edx, dword [esi + 0x4c]
mov dword [esi + 0x40], edx
movzx ebx, word [ecx + edx*2]
mov ecx, dword [esi + 0x24]
mov edx, dword [esi + 0x30]
and ecx, edi
mov word [edx + ecx*2], bx
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x38]
mov di, word [esi + 0x64]
mov word [edx + ecx*2], di
dec dword [esi + 0x58]
jne 0x41bd0b
jmp 0x41bd8f
add dword [esi + 0x64], ecx
mov ecx, dword [esi + 0x64]
mov edx, dword [esi + 0x28]
mov dword [esi + 0x58], edi
lea edi, [ecx + edx]
mov ecx, dword [esi + 0x50]
movzx edx, byte [edi]
mov dword [esi + 0x40], edx
shl edx, cl
movzx ecx, byte [edi + 1]
xor edx, ecx
and edx, dword [esi + 0x4c]
mov dword [esi + 0x40], edx
jmp 0x41bd92
mov eax, dword [esi + 0x64]
mov ecx, dword [esi + 0x28]
movzx eax, byte [eax + ecx]
push eax
push edi
mov ecx, esi
call fcn.0041c175
dec dword [esi + 0x6c]
inc dword [esi + 0x64]
xor edi, edi
cmp eax, edi
je 0x41bc48
mov ecx, dword [esi + 0x54]
cmp ecx, edi
jl 0x41bdaa
mov eax, ecx
add eax, dword [esi + 0x28]
jmp 0x41bdac
xor eax, eax
mov edx, dword [esi + 0x64]
push edi
sub edx, ecx
mov ecx, esi
push edx
push eax
call fcn.0041a90f
mov eax, dword [esi + 0x64]
mov ecx, dword [esi + 4]
mov dword [esi + 0x54], eax
call fcn.00415efa
mov eax, dword [esi + 4]
cmp dword [eax + 0x24], edi
je 0x41be32
jmp 0x41bc48
mov ecx, dword [esi + 0x54]
cmp ecx, edi
jl 0x41bde4
mov eax, dword [esi + 0x28]
add eax, ecx
jmp 0x41bde6
xor eax, eax
mov edi, dword [esp + 0x14]
xor edx, edx
cmp edi, 4
sete dl
push edx
mov edx, dword [esi + 0x64]
sub edx, ecx
mov ecx, esi
push edx
push eax
call fcn.0041a90f
mov eax, dword [esi + 0x64]
mov ecx, dword [esi + 4]
mov dword [esi + 0x54], eax
call fcn.00415efa
mov ecx, dword [esi + 4]
xor eax, eax
cmp dword [ecx + 0x24], eax
jne 0x41be23
cmp edi, 4
jne 0x41be34
push 2
pop eax
jmp 0x41be34
xor eax, eax
cmp edi, 4
setne al
dec eax
and eax, 2
inc eax
jmp 0x41be34
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4