Function at 0x41e0b0
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.0043ad70
xor ebx, ebx
test eax, eax
js 0x41e61a
mov dword [esp], 0xa2a9bcb6
mov byte [esp + 4], 0x58
mov word [esp + 5], 0
mov byte [esp + 7], 0
mov eax, 0x8f
nop
nop
mov edx, ebx
and edx, 0xb
mov ecx, eax
and ecx, 0x94
or ecx, edx
xor cl, byte [esp + eax - 0x8f]
xor cl, 0xb
add cl, 0x35
mov byte [esp + eax - 0x8f], cl
inc eax
dec ebx
cmp eax, 0x97
jne 0x41e110
cmp byte [esp + 0x43], 0
js 0x41e15a
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
mov bl, 1
jmp 0x41e1ab
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x41e1a9
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040ced0
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.0043ad70
test eax, eax
setns bl
js 0x41e19e
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
push edi
call fcn.0040cee0
add esp, 4
jmp 0x41e1ab
xor ebx, ebx
movzx eax, byte [ebp + 0x18]
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x566e6056
mov word [esp + 4], 0xc561
mov dword [esp + 6], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xb0
xor dl, byte [esp + ecx]
add dl, 0x90
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xa
jne 0x41e1e0
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x41e214
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
mov al, 1
jmp 0x41e26c
mov edx, dword [ecx]
mov edi, dword [ecx + 4]
mov eax, edx
or eax, edi
je 0x41e26a
mov esi, dword [ecx + 8]
inc esi
push esi
mov dword [esp + 0x14], edx
call fcn.0040ced0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x24]
call fcn.0043ad70
test eax, eax
setns al
mov edi, eax
js 0x41e25d
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
push esi
call fcn.0040cee0
add esp, 4
mov eax, edi
jmp 0x41e26c
xor eax, eax
and bl, al
mov dword [esp], 0x7d7f7a4c
mov dword [esp + 4], 0x72454249
mov byte [esp + 8], 0xec
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
mov esi, 0xd8fe9d7
mov ecx, 0xb2701628
nop
nop
nop
nop
nop
movzx edx, byte [esp + esi - 0xd8fe9d7]
mov eax, edx
and eax, 0xffffffae
xor eax, 0xd3e46aae
mov edi, edx
xor edi, 0xd3e46aae
or edx, 0x51
and edx, edi
or edx, eax
mov edi, ecx
and edi, 0x9260022e
mov eax, esi
and eax, 0xc0b8151
or eax, edi
xor eax, edx
mov edx, eax
and edx, 1
or eax, 1
add eax, edx
add al, 0xcc
mov byte [esp + esi - 0xd8fe9d7], al
inc esi
dec ecx
cmp esi, 0xd8fe9e6
jne 0x41e2a0
cmp byte [esp + 0x5b], 0
js 0x41e30f
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
mov al, 1
jmp 0x41e36b
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x48]
mov eax, ecx
or eax, edi
je 0x41e369
mov esi, dword [esp + 0x4c]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040ced0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x24]
call fcn.0043ad70
test eax, eax
setns al
mov edi, eax
js 0x41e35c
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
push esi
call fcn.0040cee0
add esp, 4
mov eax, edi
jmp 0x41e36b
xor eax, eax
and bl, al
mov dword [esp], 0x293a2434
mov byte [esp + 4], 0x80
mov dword [esp + 5], 0
mov dword [esp + 8], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
mov esi, eax
and esi, 2
mov edx, ecx
xor edx, 0xa1
add edx, esi
xor dl, byte [esp + ecx]
add dl, 0xdb
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 0xc
jne 0x41e390
cmp byte [esp + 0x73], 0
js 0x41e3cf
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
mov al, 1
jmp 0x41e42b
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x60]
mov eax, ecx
or eax, edi
je 0x41e429
mov esi, dword [esp + 0x64]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040ced0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x24]
call fcn.0043ad70
test eax, eax
setns al
mov edi, eax
js 0x41e41c
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
push esi
call fcn.0040cee0
add esp, 4
mov eax, edi
jmp 0x41e42b
xor eax, eax
and bl, al
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + eax*8 + 0x124]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + eax*8 + 0x128]
mov dword [esp], 0xc6faf3cf
mov dword [esp + 4], 0xccfbc4fe
mov dword [esp + 8], 0x51f7c7f7
mov dword [esp + 0xc], 0
mov edx, 0x246b8c97
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx - 0x246b8c97]
xor esi, edx
mov edi, esi
and edi, 1
xor esi, 1
lea eax, [esi + edi*2]
add al, 0xc
mov byte [esp + edx - 0x246b8c97], al
inc edx
cmp edx, 0x246b8ca7
jne 0x41e470
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.004063d0
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x7c]
mov dword [esp], 0xac47aabf
mov dword [esp + 4], 0xcfadbebf
mov word [esp + 8], 0x5fc3
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx]
mov edi, ecx
xor edi, 0x682659c7
mov edx, ecx
and edx, 8
add edx, edx
sub edx, edi
mov edi, edx
and edi, esi
add edi, edi
add edx, esi
mov esi, edx
sub esi, edi
mov edi, esi
not edi
and edi, 0x1e
and esi, 0xe1
sub esi, edi
and edx, 1
xor esi, 1
lea edx, [esi + edx*2]
mov byte [esp + ecx], dl
add ecx, 0xbf0aac1a
mov edx, ecx
and edx, 0x27
xor ecx, 0x40f553e7
lea ecx, [ecx + edx*2]
cmp ecx, 0xf
jb 0x41e500
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00406460
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x7d]
mov dword [esp + 0x10], eax
mov dword [esp], 0x30e0d38
mov dword [esp + 4], 0xb080a3b
mov word [esp + 8], 0x9901
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax]
mov esi, eax
and esi, 8
xor esi, 0xaa24c0c8
mov ecx, eax
and ecx, 7
sub ecx, esi
add ecx, 0xf26e03a4
mov esi, ecx
and esi, 0x80040c8
xor ecx, 0xaa24c0c8
lea esi, [ecx + esi*2]
mov ecx, esi
and ecx, edx
add esi, edx
add ecx, ecx
sub esi, ecx
add esi, 0x43d9edcb
mov ecx, esi
and ecx, 1
xor esi, 1
lea ecx, [esi + ecx*2]
mov byte [esp + eax], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xf
jb 0x41e5a0
push dword [esp + 0x10]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00406460
add esp, 0xc
or edi, dword [esp + 0x14]
or edi, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret