Function at 0x41adeb
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x48c77c
call fcn.0046e054
sub esp, 0x134
push ebx
push esi
push edi
mov eax, dword [ebp + 0x40]
mov dword [ebp - 4], 2
add eax, 0x44
push eax
call fcn.0046fade
mov ebx, dword [ebp + 0x48]
pop ecx
test ebx, ebx
mov esi, eax
je 0x41ae4e
push ebx
call fcn.0046ce10
mov edi, eax
pop ecx
cmp edi, 0x20
jge 0x41ae49
push edi
push ebx
push esi
call fcn.0046d560
push 0x20
pop eax
sub eax, edi
add edi, esi
push eax
push 0x50c5ac
push edi
call fcn.0046d560
add esp, 0x18
jmp 0x41ae5e
push 0x20
push ebx
jmp 0x41ae55
push 0x20
push 0x50c5ac
push esi
call fcn.0046d560
add esp, 0xc
lea ecx, [ebp + 0x14]
call fcn.0040f9cc
push 0x20
lea eax, [esi + 0x20]
push dword [ebp + 0x18]
push eax
call fcn.0046d560
mov eax, dword [ebp + 0x34]
add esp, 0xc
mov ecx, eax
mov byte [esi + 0x40], al
sar ecx, 8
mov byte [esi + 0x41], cl
mov ecx, eax
sar ecx, 0x10
sar eax, 0x18
mov byte [esi + 0x42], cl
mov byte [esi + 0x43], al
mov eax, dword [ebp + 0x3c]
test eax, eax
jne 0x41ae9f
mov eax, 0x48fac0
push dword [ebp + 0x40]
push eax
lea eax, [esi + 0x44]
push eax
call fcn.0046d560
mov eax, dword [ebp + 0x40]
mov ebx, dword [ebp + 0x4c]
add eax, 0x44
push ebx
push eax
push esi
call fcn.0041b30f
add esp, 0x18
cmp dword [ebp + 0xc], 3
jne 0x41aed9
push 0x32
pop edi
push ebx
push dword [ebp + 0x10]
push ebx
call fcn.0041b30f
add esp, 0xc
dec edi
jne 0x41aec9
cmp dword [ebp + 0xc], 2
jne 0x41af5e
lea eax, [ebp - 0x140]
push eax
push dword [ebp + 0x10]
push ebx
call fcn.0041b245
and byte [ebp - 0xd], 0
and byte [ebp - 0xe], 0
add esp, 0xc
xor edi, edi
cmp dword [ebp + 0x2c], edi
jb 0x41af16
cmp dword [ebp + 0x28], 0
je 0x41af16
lea ecx, [ebp + 0x24]
call fcn.0040f9cc
mov eax, dword [ebp + 0x28]
add eax, edi
jmp 0x41af1b
mov eax, 0x48fac0
mov al, byte [eax]
push eax
lea eax, [ebp - 0xd]
push eax
lea eax, [ebp - 0xe]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.0041b2b1
add esp, 0x10
mov byte [ebp + edi - 0x40], al
inc edi
cmp edi, 0x20
jl 0x41aefc
push 0x20
lea eax, [ebp - 0x40]
push 0x50c5ac
push eax
call fcn.0046ec80
add esp, 0xc
mov edi, eax
neg edi
sbb edi, edi
inc edi
jmp 0x41b043
cmp dword [ebp + 0xc], 3
jne 0x41b041
lea ecx, [ebp + 0x24]
call fcn.0040f9cc
push 0x20
lea eax, [ebp - 0x40]
push dword [ebp + 0x28]
push eax
call fcn.0046d560
add esp, 0xc
mov dword [ebp + 0xc], 0x13
xor edi, edi
cmp dword [ebp + 0x10], edi
jle 0x41afa9
mov ecx, dword [ebp + 0x4c]
lea eax, [ebp - 0x20]
sub ecx, eax
lea eax, [ebp + edi - 0x20]
mov dl, byte [ecx + eax]
xor dl, byte [ebp + 0xc]
inc edi
cmp edi, dword [ebp + 0x10]
mov byte [eax], dl
jl 0x41af97
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x20]
push dword [ebp + 0x10]
push eax
call fcn.0041b245
and byte [ebp - 0xd], 0
and byte [ebp - 0xe], 0
add esp, 0xc
xor ebx, ebx
mov al, byte [ebp + ebx - 0x40]
lea edi, [ebp + ebx - 0x40]
push eax
lea eax, [ebp - 0xd]
push eax
lea eax, [ebp - 0xe]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.0041b2b1
add esp, 0x10
inc ebx
cmp ebx, 0x20
mov byte [edi], al
jl 0x41afc9
dec dword [ebp + 0xc]
jns 0x41af88
push 0x20
push 0x50c5ac
push esi
call fcn.0046d560
mov eax, dword [ebp + 0x3c]
add esp, 0xc
test eax, eax
jne 0x41b012
mov eax, 0x48fac0
push dword [ebp + 0x40]
push eax
lea eax, [esi + 0x20]
push eax
call fcn.0046d560
mov eax, dword [ebp + 0x40]
push esi
add eax, 0x20
push eax
push esi
call fcn.0041b30f
push 0x10
lea eax, [ebp - 0x40]
push esi
push eax
call fcn.0046ec80
add esp, 0x24
jmp 0x41af52
xor edi, edi
push esi
call fcn.0046dd0d
pop ecx
mov byte [ebp - 4], 1
push 1
lea ecx, [ebp + 0x14]
call fcn.004013c0
and byte [ebp - 4], 0
push 1
lea ecx, [ebp + 0x24]
call fcn.004013c0
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp + 0x38]
call fcn.004013c0
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret