Function at 0x41e8c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
mov edi, edx
mov ebx, ecx
call fcn.00404800
mov dword [esp + 0x24], eax
push eax
call fcn.00404460
add esp, 4
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], edi
mov edi, dword [edi + 0x3c]
lea esi, [esp + 0x30]
push 0x120
push 0
push esi
call fcn.0040c5e0
add esp, 0xc
mov dword [esp + 0x28], ebx
mov ecx, ebx
push 0
push 0
push 0x120
push esi
push edi
push dword [esp + 0x2c]
call fcn.0043dc00
test eax, eax
js 0x41ed58
mov dword [esp + 8], 0x3e073006
mov byte [esp + 0xc], 0x9c
mov dword [esp + 0xd], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x41e9aa
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xac7b13e4
and eax, 0x2c7b13e4
lea eax, [edx + eax*2]
lea edx, [eax + ecx]
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x8c
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x41e960
lea edx, [esp + 0x38]
lea esi, [esp + 8]
mov edi, dword [esp + 0x28]
mov ecx, edi
mov ebx, dword [esp + 0x20]
push ebx
push esi
call fcn.0041ee10
add esp, 8
mov byte [esp + 0x18], al
mov dword [esp + 8], 0x52667c4e
mov dword [esp + 0xc], 0xdf63
mov byte [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x41ea41
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 8]
lea ecx, [eax + edx]
add ecx, 0x1595ccaf
add eax, 0x1595ccaf
and eax, edx
mov edx, ecx
not edx
and edx, eax
add edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
not ecx
and ecx, 0x6b
and eax, 0x94
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x41e9f0
lea edx, [esp + 0x118]
mov ecx, edi
push ebx
push esi
call fcn.0041ee10
add esp, 8
mov dword [esp + 8], 0x9d9f9a8c
mov dword [esp + 0xc], 0x92858289
mov byte [esp + 0x10], 0x2c
mov dword [esp + 0x11], 0
mov word [esp + 0x15], 0
and byte [esp + 0x18], al
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xe
ja 0x41eae2
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 8]
mov esi, ecx
or esi, 0x6c79be38
mov edx, ecx
not edx
or edx, 0x938641c7
and edx, esi
not edx
mov esi, ecx
xor esi, 0x6c79be38
or ecx, 0x138641c7
and ecx, esi
lea ecx, [edx + ecx*2]
xor ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [esp + 4]
add al, 0x1d
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xf
jb 0x41ea90
lea edx, [esp + 0x50]
mov ecx, edi
push ebx
lea esi, [esp + 0xc]
push esi
call fcn.0041ee10
add esp, 8
mov dword [esp + 8], 0x11e0c14
mov byte [esp + 0xc], 0x68
mov dword [esp + 0xd], 0
mov word [esp + 0x11], 0
and byte [esp + 0x18], al
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x41eb7a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xfed632e7
and eax, 0xfed632e7
lea eax, [edx + eax*2]
lea edx, [eax + ecx]
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x7d
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x41eb30
lea edx, [esp + 0x68]
mov ecx, edi
push ebx
push esi
call fcn.0041ee10
add esp, 8
fild qword [esp + 0x130]
mov dword [esp + 8], 0xbabeb7ab
mov dword [esp + 0xc], 0xb4a7b4a2
mov dword [esp + 0x10], 0xd9b3a3a3
mov word [esp + 0x14], 0
mov byte [esp + 0x16], 0
and byte [esp + 0x18], al
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xe
ja 0x41ec09
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0x209032cd
and eax, 0x209032cd
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
dec al
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xf
jb 0x41ebd0
sub esp, 0x10
fstp qword [esp + 8]
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.00405c50
add esp, 0x10
xor ebx, ebx
test eax, eax
sete bl
movzx esi, byte [esp + 0x18]
not esi
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0xa4bba6ab
mov dword [esp + 0xc], 0xdbddcab3
mov word [esp + 0x10], 0x63cf
mov dword [esp + 0x12], 0
mov word [esp + 0x16], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xf
ja 0x41eca0
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
add ecx, 0x83992abb
xor ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x59
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x10
jb 0x41ec70
or ebx, esi
push eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x28]
call fcn.00405ce0
add esp, 0xc
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0x818a8b84
mov dword [esp + 0xc], 0x898c8271
mov dword [esp + 0x10], 0x179f
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xb
ja 0x41ed32
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
mov edi, ecx
xor edi, 0xc520f705
and ecx, 0xc520f705
lea ecx, [edi + ecx*2]
lea edi, [ecx + edx]
and ecx, edx
add ecx, ecx
sub edi, ecx
mov dword [esp + 4], edi
mov ecx, dword [esp + 4]
add cl, 0xe7
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xc
jb 0x41ecf0
cmp ebx, esi
setne byte [esp + 0x1f]
push eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x28]
call fcn.00405ce0
add esp, 0xc
or eax, dword [esp + 0x18]
sete bl
and bl, byte [esp + 0x1f]
jmp 0x41ed5a
xor ebx, ebx
mov edi, dword [esp + 0x2c]
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov ecx, eax
or ecx, edx
mov esi, dword [esp + 0x28]
je 0x41eda4
mov ecx, esi
push 0
push 0
push 0x40
mov dword [esp + 0x24], ebx
mov ebx, esi
lea esi, [esp + 0x3c]
push esi
mov esi, ebx
mov ebx, dword [esp + 0x28]
push edx
push eax
call fcn.0043dc00
test eax, eax
js 0x41eda4
lea edx, [esp + 0x30]
mov ecx, esi
push dword [ebp + 8]
call fcn.0041e8c0
add esp, 4
or bl, al
mov eax, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov ecx, eax
or ecx, edx
je 0x41eddd
mov ecx, esi
push 0
push 0
push 0x40
mov edi, esi
lea esi, [esp + 0x3c]
push esi
push edx
push eax
call fcn.0043dc00
test eax, eax
js 0x41eddd
lea edx, [esp + 0x30]
mov ecx, edi
push dword [ebp + 8]
call fcn.0041e8c0
add esp, 4
or bl, al
test bl, bl
je 0x41edf2
push dword [esp + 0x24]
push dword [ebp + 8]
call fcn.004055b0
add esp, 8
jmp 0x41edfe
push dword [esp + 0x24]
call fcn.004046d0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret