Function at 0x41c690
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x44c937
push eax
mov eax, 0x1084
mov dword fs:[0], esp
call fcn.0042de20
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x109c]
lea edx, [esp + 0x84]
mov dword [esp + 0x108c], 1
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x41c6d2
push ebx
push esi
mov esi, dword [esp + 0x10ac]
cmp esi, 0x64
push edi
lea eax, [esi + 0x20]
jge 0x41c6f8
add eax, 0x70
mov ecx, 0x9d
jmp 0x41c6fd
mov ecx, 0xa4
cdq
idiv ecx
mov edi, edx
cmp edi, 0x88
jge 0x41c718
add edi, 0x49
cmp edi, 0x88
jge 0x41c718
add edi, 0x49
lea ecx, [esp + 0x10a4]
xor esi, 0xb3
call fcn.0041bed0
mov ecx, eax
and ecx, 0x80000003
jns 0x41c739
dec ecx
or ecx, 0xfffffffc
inc ecx
mov eax, esi
cdq
mov ebx, 0xc
idiv ebx
mov eax, esi
mov esi, 6
mov ebx, edx
cdq
idiv esi
sub ebx, edx
add ebx, edi
lea eax, [ebx + ecx]
lea edx, [eax + 2]
lea ebx, [eax - 3]
mov dword [esp + 0x18], eax
dec eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41c777
sub eax, edx
mov esi, eax
cdq
sub eax, edx
mov ecx, eax
mov al, byte [esp + 0x10b4]
sar ecx, 1
cmp al, 1
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ecx
jne 0x41c7d2
xor eax, eax
test ecx, ecx
jle 0x41c7d2
lea ecx, [esp + esi + 0x8f]
lea esp, [esp]
mov dl, byte [esp + eax + 0x90]
mov bl, byte [ecx]
mov byte [esp + eax + 0x90], bl
mov byte [ecx], dl
mov edx, dword [esp + 0xc]
inc eax
dec ecx
cmp eax, edx
jl 0x41c7b0
mov ebx, dword [esp + 0x24]
mov ecx, edx
cmp esi, 3
mov dword [esp + 0x14], 0
mov byte [esp + 0x890], 0
jle 0x41c8df
push ebp
mov ebp, esi
mov edi, edi
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x94]
add edx, 4
push esi
lea ecx, [esp + 0x9c]
mov dword [esp + 0x1c], edx
push ecx
lea edx, [esp + 0x9c]
push edx
mov dword [esp + 0x3c], eax
mov byte [esp + 0x40], 0
sub ebp, 4
call fcn.0042d4d0
mov al, byte [esp + 0x10c4]
add esp, 0xc
test al, al
mov al, byte [esp + 0x30]
je 0x41c864
mov cl, byte [esp + 0x33]
mov dl, byte [esp + 0x31]
xor cl, bl
mov byte [esp + 0x30], cl
mov cl, byte [esp + 0x20]
xor cl, byte [esp + 0x32]
mov byte [esp + 0x31], cl
mov cl, byte [esp + 0x24]
xor cl, dl
mov byte [esp + 0x32], cl
xor al, byte [esp + 0x1c]
mov byte [esp + 0x33], al
jmp 0x41c89e
mov cl, byte [esp + 0x31]
mov dl, byte [esp + 0x20]
xor al, bl
mov bl, byte [esp + 0x32]
xor cl, dl
mov dl, byte [esp + 0x24]
xor bl, dl
mov dl, byte [esp + 0x33]
mov byte [esp + 0x32], bl
xor dl, byte [esp + 0x1c]
mov ebx, dword [esp + 0x28]
mov byte [esp + 0x33], al
mov al, byte [esp + 0x32]
mov byte [esp + 0x30], dl
mov byte [esp + 0x31], al
mov byte [esp + 0x32], cl
lea eax, [esp + 0x30]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41c8a4
lea edi, [esp + 0x894]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x41c8b5
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp ebp, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x14]
jg 0x41c7f0
mov ecx, dword [esp + 0x10]
pop ebp
mov edi, dword [esp + 0x14]
mov eax, esi
sub eax, edi
test eax, eax
jle 0x41c96e
mov ecx, eax
mov edx, ecx
shr ecx, 2
lea esi, [esp + 0x90]
lea edi, [esp + 0x2c]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor ecx, ecx
test eax, eax
mov byte [esp + eax + 0x2c], 0
jle 0x41c91f
xor byte [esp + ecx + 0x2c], 0x89
inc ecx
cmp ecx, eax
jl 0x41c915
lea eax, [esp + 0x2c]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41c925
lea edi, [esp + 0x890]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x41c936
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push eax
lea ecx, [esp + 0x94]
push ecx
mov edx, ecx
push edx
call fcn.0042d4d0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
add esp, 0xc
mov al, byte [esp + 0x10b4]
test al, al
jne 0x41c9ac
xor eax, eax
test ecx, ecx
jle 0x41c9ac
lea ecx, [esp + esi + 0x88f]
jmp 0x41c990
mov dl, byte [esp + eax + 0x890]
mov bl, byte [ecx]
mov byte [esp + eax + 0x890], bl
mov byte [ecx], dl
mov edx, dword [esp + 0xc]
inc eax
dec ecx
cmp eax, edx
jl 0x41c990
mov esi, dword [esp + 0x10a0]
lea eax, [esp + 0x890]
push eax
mov ecx, esi
call fcn.0041c090
lea ecx, [esp + 0x10a4]
mov dword [esp + 0x28], 1
mov byte [esp + 0x1098], 0
call fcn.0041bee0
mov ecx, dword [esp + 0x1090]
pop edi
mov eax, esi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x1090
ret