Function at 0x41e1c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x24]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.00438d30
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x41e6fc
mov dword [esp], 0x6e671066
mov byte [esp + 4], 0xec
mov dword [esp + 5], 0
mov dword [esp + 8], 0
nop
movzx edx, byte [esp + eax]
mov ecx, eax
and ecx, 0xc
mov esi, eax
xor esi, 0x1bdb7d2c
lea ecx, [esi + ecx*2]
mov esi, ecx
and esi, edx
mov ebx, esi
or ebx, 0xfffffffd
inc ebx
mov edi, esi
and edi, 0x7d
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
sub edi, esi
add ecx, edx
add ecx, edi
mov esi, ecx
xor esi, 0x5c
mov edx, ecx
or edx, 0x23
and edx, esi
xor ecx, 0xdc
add edx, edx
sub edx, ecx
mov byte [esp + eax], dl
mov ecx, eax
not ecx
or ecx, 1
add ecx, eax
or eax, 1
add eax, ecx
inc eax
cmp eax, 0xc
jb 0x41e220
cmp byte [esp + 0x43], 0
js 0x41e2a6
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x41e301
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x41e2f9
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040ca10
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00438d30
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x41e2ee
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
push edi
call fcn.0040ca20
add esp, 4
jmp 0x41e301
mov dword [esp + 0x10], 0
movzx eax, byte [ebp + 0x18]
movzx eax, al
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x26626c1a
mov word [esp + 4], 0xb357
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
mov ecx, 0x5d
mov edx, 0xa2
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x5d]
mov ebx, edx
xor ebx, ecx
and ebx, esi
xor ebx, ecx
add bl, 0x2f
mov byte [esp + ecx - 0x5d], bl
inc ecx
dec edx
cmp ecx, 0x68
jne 0x41e340
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x41e37b
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
mov bl, 1
jmp 0x41e3c8
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x41e3c6
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040ca10
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00438d30
test eax, eax
setns bl
js 0x41e3bb
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
push edi
call fcn.0040ca20
add esp, 4
jmp 0x41e3c8
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x1f616668
mov dword [esp + 4], 0x2653564b
mov byte [esp + 8], 0xa8
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
xor edx, 0x61573919
mov esi, eax
and esi, 0xc
sub esi, edx
mov edx, esi
and edx, 0x5c
xor esi, 0xdc
lea edx, [esi + edx*2]
add dl, 0x19
xor dl, byte [esp + ecx]
add dl, 0xb4
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 0xe
jne 0x41e400
cmp byte [esp + 0x5b], 0
js 0x41e450
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
mov bl, 1
jmp 0x41e4a1
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
mov eax, ebx
or eax, esi
je 0x41e49f
mov edi, dword [esp + 0x4c]
inc edi
push edi
call fcn.0040ca10
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00438d30
test eax, eax
setns bl
js 0x41e494
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
push edi
call fcn.0040ca20
add esp, 4
jmp 0x41e4a1
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x373a2838
mov byte [esp + 4], 0x8c
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov edi, 0xffffffff
xor ecx, ecx
xor edx, edx
nop
mov esi, edx
or esi, 0x9d
mov ebx, edi
or ebx, 0x62
and ebx, esi
mov esi, ecx
and esi, 4
sub ebx, esi
xor bl, byte [esp + edx]
mov al, 0x15
sub al, bl
mov byte [esp + edx], al
inc edx
dec edi
add ecx, 2
cmp edx, 0xb
jne 0x41e4d0
cmp byte [esp + 0x73], 0
js 0x41e518
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
mov bl, 1
jmp 0x41e569
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, ebx
or eax, esi
je 0x41e567
mov edi, dword [esp + 0x64]
inc edi
push edi
call fcn.0040ca10
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00438d30
test eax, eax
setns bl
js 0x41e55c
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405eb0
add esp, 0xc
push edi
call fcn.0040ca20
add esp, 4
jmp 0x41e569
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + ecx*8 + 0x124]
mov ecx, dword [esp + ecx*8 + 0x128]
mov dword [esp], 0xfa8289fd
mov dword [esp + 4], 0xf88df08e
mov dword [esp + 8], 0x1bf98585
mov word [esp + 0xc], 0
mov edx, 0xaa4082c4
mov esi, 0x3b
nop
nop
nop
movzx edi, byte [esp + edx + 0x55bf7d3c]
mov ebx, esi
xor ebx, edx
and ebx, edi
xor ebx, edx
add ebx, 0x387354cf
mov edi, ebx
and edi, 0x2b
xor ebx, 0x2b
lea ebx, [ebx + edi*2]
add bl, 0x32
mov byte [esp + edx + 0x55bf7d3c], bl
inc edx
dec esi
cmp edx, 0xaa4082d2
jne 0x41e5b0
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea edi, [esp + 0x10]
mov dword [esp + 4], edi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405f00
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x7c]
mov dword [esp], 0xf0ddf2e9
mov dword [esp + 4], 0xf5f3e6e1
mov word [esp + 8], 0x9ed
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
xor ecx, ecx
nop
nop
nop
nop
mov edx, ecx
add dl, 0xc0
xor dl, byte [esp + ecx]
add dl, 0x40
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0x10
jne 0x41e640
push eax
push edi
push dword [ebp + 0x14]
call fcn.00405f90
add esp, 0xc
or eax, esi
sete cl
movzx eax, byte [esp + 0x7d]
mov dword [esp], 0x292e2f1c
mov dword [esp + 4], 0x212c2ed9
mov word [esp + 8], 0xb333
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
mov edx, dword [esp + 0x10]
and dl, cl
mov dword [esp + 0x10], edx
xor ecx, ecx
xor edx, edx
nop
nop
movzx edi, byte [esp + edx]
mov esi, edx
xor esi, 0xbdb1ca1f
add esi, ecx
xor esi, edi
mov ebx, esi
xor ebx, 0xf966b54
mov edi, ebx
and edi, 0x1b
xor edi, 0x6f
add edi, esi
and ebx, 0x64
add ebx, ebx
xor ebx, 0x77
add ebx, esi
lea ebx, [ebx + edi*2]
add bl, 0x68
mov byte [esp + edx], bl
inc edx
add ecx, 2
cmp edx, 0x10
jne 0x41e6a0
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f90
add esp, 0xc
test eax, eax
setne al
mov ecx, dword [esp + 0x10]
xor al, cl
and al, cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret