Function at 0x41e8f0
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.00404de0
mov dword [esp + 0x24], eax
push eax
call fcn.00404700
add esp, 4
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], edi
mov edi, dword [edi + 0x3c]
lea esi, [esp + 0x30]
push 0x120
push 0
push esi
call fcn.0040cc00
add esp, 0xc
mov dword [esp + 0x28], ebx
mov ecx, ebx
push 0
push 0
push 0x120
push esi
push edi
push dword [esp + 0x34]
call fcn.0043cef0
test eax, eax
js 0x41ed9d
mov dword [esp + 0xc], 0x6e677066
mov byte [esp + 0x10], 0xac
mov word [esp + 0x11], 0
mov byte [esp + 0x13], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x41e9d1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0xc]
mov edx, eax
xor edx, 0x884e5c
and eax, 0x884e5c
lea eax, [edx + eax*2]
mov edx, eax
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x34
mov ecx, dword [esp]
mov byte [esp + ecx + 0xc], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x41e990
lea edx, [esp + 0x38]
lea eax, [esp + 0xc]
mov edi, dword [esp + 0x28]
mov ecx, edi
push dword [esp + 0x1c]
push eax
call fcn.0041ee50
add esp, 8
mov ebx, eax
mov dword [esp + 0xc], 0x66a2ac9a
mov dword [esp + 0x10], 0xf357
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x41ea60
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0xc]
lea edx, [ecx + ecx]
and edx, 0x18e655fa
sub ecx, edx
add ecx, 0xc732afd
mov esi, ecx
and esi, edx
xor ecx, edx
lea ecx, [ecx + esi*2]
xor ecx, eax
mov dword [esp + 8], ecx
mov eax, dword [esp + 8]
mov ecx, eax
xor ecx, 0xf1
and eax, 0xe
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0xc], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x41ea10
lea edx, [esp + 0x118]
mov ecx, edi
push dword [esp + 0x1c]
lea eax, [esp + 0x10]
push eax
call fcn.0041ee50
add esp, 8
mov byte [esp + 7], al
mov dword [esp + 0xc], 0xc5c7dad4
mov dword [esp + 0x10], 0xc2ddd2a9
mov byte [esp + 0x14], 0x44
mov dword [esp + 0x15], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xc
ja 0x41eaf6
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0xc]
mov edx, eax
xor edx, 0x8207c393
and eax, 0x207c393
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov ecx, eax
not ecx
and ecx, 0xdf
and eax, 0x20
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0xc], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xd
jb 0x41eab0
lea edx, [esp + 0x50]
mov ecx, edi
push dword [esp + 0x1c]
lea eax, [esp + 0x10]
push eax
call fcn.0041ee50
add esp, 8
mov byte [esp + 0x20], al
mov dword [esp + 0xc], 0x7b8e7080
mov byte [esp + 0x10], 0x1c
mov dword [esp + 0x11], 0
mov word [esp + 0x15], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x41eba1
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0xc]
mov edx, ecx
xor edx, 0x2684
mov esi, ecx
xor esi, 0x7fffd97b
or ecx, 0x2684
and ecx, esi
lea edx, [edx + ecx*2]
lea ecx, [edx + eax]
mov esi, eax
not esi
or esi, edx
lea edx, [eax + esi]
add eax, esi
inc eax
mov esi, ecx
not esi
and esi, eax
not eax
and eax, ecx
lea ecx, [esi + edx]
inc ecx
sub eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x6c
mov ecx, dword [esp]
mov byte [esp + ecx + 0xc], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x41eb40
and bl, byte [esp + 7]
lea edx, [esp + 0x68]
mov ecx, edi
push dword [esp + 0x1c]
lea eax, [esp + 0x10]
push eax
call fcn.0041ee50
add esp, 8
mov byte [esp + 7], al
fild qword [esp + 0x130]
mov dword [esp + 0xc], 0xdedac3d7
mov dword [esp + 0x10], 0xa4cbdcc6
mov dword [esp + 0x14], 0x41dfcfcf
mov dword [esp + 0x18], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x41ec41
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0xc]
mov edx, ecx
not edx
or edx, 0x45f04193
add edx, ecx
xor ecx, 0xc5f04193
lea ecx, [ecx + edx*2]
add ecx, 2
xor ecx, eax
mov dword [esp + 8], ecx
mov eax, dword [esp + 8]
add al, 0x21
mov ecx, dword [esp]
mov byte [esp + ecx + 0xc], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x41ec00
and bl, byte [esp + 0x20]
sub esp, 0x10
fstp qword [esp + 8]
lea eax, [esp + 0x1c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.00406150
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 0xc], 0x68757661
mov dword [esp + 0x10], 0x6d6f7a79
mov word [esp + 0x14], 0xd17d
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xf
ja 0x41ecf4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0xc]
mov esi, ecx
xor esi, 0xda46e2ae
and ecx, 0xda46e2ae
lea ecx, [esi + ecx*2]
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
mov edx, ecx
xor edx, 0x66
and ecx, 0x19
add ecx, ecx
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 0xc], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x10
jb 0x41ecb0
and bl, byte [esp + 7]
push eax
lea eax, [esp + 0x10]
push eax
push dword [esp + 0x24]
call fcn.004061e0
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 0xc], 0xa9aeafbc
mov dword [esp + 0x10], 0xa1acaeb9
mov dword [esp + 0x14], 0xd353
or esi, edi
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xb
ja 0x41ed82
nop
nop
nop
mov edx, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0xc]
mov edi, edx
not edi
or edi, 0x10cc874f
add edi, edx
xor edx, 0x90cc874f
lea edx, [edx + edi*2]
add edx, 2
xor edx, ecx
mov dword [esp + 8], edx
mov ecx, dword [esp + 8]
add cl, 0x75
mov edx, dword [esp]
mov byte [esp + edx + 0xc], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xc
jb 0x41ed40
push eax
lea eax, [esp + 0x10]
push eax
push dword [esp + 0x24]
call fcn.004061e0
add esp, 0xc
or esi, eax
sete al
and bl, al
jmp 0x41ed9f
xor ebx, ebx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, eax
or ecx, edx
mov edi, dword [esp + 0x28]
je 0x41eddd
mov ecx, edi
push 0
push 0
push 0x40
lea esi, [esp + 0x3c]
push esi
push edx
push eax
call fcn.0043cef0
test eax, eax
js 0x41eddd
lea edx, [esp + 0x30]
mov ecx, edi
push dword [ebp + 8]
call fcn.0041e8f0
add esp, 4
or bl, al
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov ecx, eax
or ecx, edx
je 0x41ee18
mov ecx, edi
push 0
push 0
push 0x40
lea esi, [esp + 0x3c]
push esi
push edx
push eax
call fcn.0043cef0
test eax, eax
js 0x41ee18
lea edx, [esp + 0x30]
mov ecx, edi
push dword [ebp + 8]
call fcn.0041e8f0
add esp, 4
or bl, al
test bl, bl
je 0x41ee2d
push dword [esp + 0x24]
push dword [ebp + 8]
call fcn.00405af0
add esp, 8
jmp 0x41ee39
push dword [esp + 0x24]
call fcn.00404cb0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret