Function at 0x41ea30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
mov ebx, edx
mov esi, ecx
call fcn.00404810
mov dword [esp + 0x24], eax
push eax
call fcn.00404470
add esp, 4
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], ebx
mov ebx, dword [ebx + 0x3c]
lea edi, [esp + 0x30]
push 0x120
push 0
push edi
call fcn.0040c710
add esp, 0xc
mov dword [esp + 0x20], esi
mov ecx, esi
push 0
push 0
push 0x120
push edi
push ebx
push dword [esp + 0x30]
call fcn.0043d530
test eax, eax
js 0x41eeaf
mov dword [esp + 8], 0x3239343e
mov byte [esp + 0xc], 0x88
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41eb09
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, 0x90112ee3
and eax, 0x10112ee3
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x91
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x41ead0
lea edx, [esp + 0x38]
lea eax, [esp + 8]
mov edi, dword [esp + 0x20]
mov ecx, edi
mov esi, dword [esp + 0x28]
push esi
push eax
call fcn.0041ef60
add esp, 8
mov ebx, eax
mov dword [esp + 8], 0x72665c8e
mov word [esp + 0xc], 0xff63
mov dword [esp + 0xe], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 9
ja 0x41eb95
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 8]
mov edx, ecx
xor edx, 0xd47c227f
and ecx, 0xd47c227f
lea ecx, [edx + ecx*2]
mov edx, ecx
add ecx, eax
not eax
or edx, eax
sub eax, edx
lea eax, [ecx + eax*2]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x85
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xa
jb 0x41eb50
lea edx, [esp + 0x118]
mov ecx, edi
push esi
lea eax, [esp + 0xc]
push eax
call fcn.0041ef60
add esp, 8
mov byte [esp + 0x1c], al
mov dword [esp + 8], 0x6b696a70
mov dword [esp + 0xc], 0x5a47727f
mov byte [esp + 0x10], 0xa0
mov word [esp + 0x11], 0
mov byte [esp + 0x13], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41ec25
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xd73045da
and eax, 0xd73045da
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ecx, eax
not ecx
and ecx, 0x42
and eax, 0xbd
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x41ebe0
lea edx, [esp + 0x50]
mov ecx, edi
push esi
lea eax, [esp + 0xc]
push eax
call fcn.0041ef60
add esp, 8
mov byte [esp + 0x1a], al
mov dword [esp + 8], 0x7186747c
mov byte [esp + 0xc], 8
mov dword [esp + 0xd], 0
mov byte [esp + 0x11], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 9
ja 0x41ecb2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 8]
mov edx, ecx
xor edx, 0x5c498783
add ecx, ecx
and ecx, 0xb8930f06
mov edi, ecx
and edi, edx
xor ecx, edx
lea ecx, [ecx + edi*2]
xor ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [esp + 4]
add al, 0x71
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xa
jb 0x41ec70
lea edx, [esp + 0x68]
mov ecx, dword [esp + 0x20]
push esi
lea eax, [esp + 0xc]
push eax
call fcn.0041ef60
add esp, 8
mov byte [esp + 0x1b], al
and bl, byte [esp + 0x1c]
fild qword [esp + 0x130]
mov dword [esp + 8], 0xcec6b1c5
mov dword [esp + 0xc], 0xd0bdc8ba
mov dword [esp + 0x10], 0xcf31bdbd
mov byte [esp + 0x14], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xc
ja 0x41ed49
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, 0xeca6fcf6
and eax, 0xeca6fcf6
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x32
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xd
jb 0x41ed10
and bl, byte [esp + 0x1a]
sub esp, 0x10
fstp qword [esp + 8]
lea eax, [esp + 0x18]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00405bc0
add esp, 0x10
mov dword [esp + 0x1c], eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0xc4dfcac7
mov dword [esp + 0xc], 0xc7c5d6d7
mov word [esp + 0x10], 0x37d3
mov dword [esp + 0x12], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xd
ja 0x41ee03
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edi, byte [esp + edx + 8]
lea edx, [ecx + edi]
add edx, 0xbc0852f5
add ecx, 0xbc0852f5
and ecx, edi
mov edi, edx
not edi
and edi, ecx
add edi, ecx
not ecx
and ecx, edx
sub ecx, edi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
mov edx, ecx
not edx
and edx, 0xc9
and ecx, 0x36
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xe
jb 0x41edb0
and bl, byte [esp + 0x1b]
push eax
lea eax, [esp + 0xc]
push eax
push esi
call fcn.00405c50
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0x211a1b64
mov dword [esp + 0xc], 0x595c2251
mov dword [esp + 0x10], 0xb72f
or edi, dword [esp + 0x1c]
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xb
ja 0x41ee94
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
mov esi, ecx
xor esi, 0x861893dd
and ecx, 0x61893dd
lea ecx, [esi + ecx*2]
xor ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
mov edx, ecx
xor edx, 0x51
and ecx, 0x2e
add ecx, ecx
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xc
jb 0x41ee50
push eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x30]
call fcn.00405c50
add esp, 0xc
or edi, eax
sete al
and bl, al
jmp 0x41eeb1
xor ebx, ebx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, eax
or ecx, edx
je 0x41eeef
mov esi, dword [esp + 0x20]
mov ecx, esi
push 0
push 0
push 0x40
lea edi, [esp + 0x3c]
push edi
push edx
push eax
call fcn.0043d530
test eax, eax
js 0x41eeef
lea edx, [esp + 0x30]
mov ecx, esi
push dword [ebp + 8]
call fcn.0041ea30
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 0x41ef2e
mov esi, dword [esp + 0x20]
mov ecx, esi
push 0
push 0
push 0x40
lea edi, [esp + 0x3c]
push edi
push edx
push eax
call fcn.0043d530
test eax, eax
js 0x41ef2e
lea edx, [esp + 0x30]
mov ecx, esi
push dword [ebp + 8]
call fcn.0041ea30
add esp, 4
or bl, al
test bl, bl
je 0x41ef43
push dword [esp + 0x24]
push dword [ebp + 8]
call fcn.00405560
add esp, 8
jmp 0x41ef4f
push dword [esp + 0x24]
call fcn.004046e0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret