Function at 0x41e5c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
movzx ebx, byte [ebp + 0x18]
mov ecx, dword [ebp + 8]
xor eax, eax
test bl, bl
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x2c]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043a170
test eax, eax
js 0x41e669
mov dword [esp], 0xd6a1aca2
mov byte [esp + 4], 0x70
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov eax, 0xfa0b79bd
nop
nop
nop
movzx ecx, byte [esp + eax + 0x5f48643]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x4f
mov byte [esp + eax + 0x5f48643], cl
inc eax
cmp eax, 0xfa0b79c8
jne 0x41e620
cmp byte [esp + 0x4b], 0
js 0x41e670
lea eax, [esp + 0x34]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
mov al, 1
mov dword [esp + 0x1c], eax
jmp 0x41e6cf
xor ebx, ebx
jmp 0x41eaca
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
mov eax, esi
or eax, ebx
je 0x41e6c3
mov edi, dword [esp + 0x3c]
inc edi
push edi
call fcn.0040cdc0
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.0043a170
test eax, eax
setns al
mov dword [esp + 0x1c], eax
js 0x41e6b8
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
push edi
call fcn.0040cdd0
add esp, 4
jmp 0x41e6cb
mov dword [esp + 0x1c], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x969e8096
mov word [esp + 4], 0x2581
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx]
lea edi, [ecx + 0x63431688]
and edi, edx
add edi, edi
add edx, ecx
add edx, 0x63431688
mov esi, edx
sub esi, edi
mov edi, esi
and edi, 0x57
xor esi, 0xfb08f57
lea edi, [esi + edi*2]
and esi, 1
and edx, 1
and edi, 0xfe
lea edx, [edx + esi*2]
add edx, edi
mov byte [esp + ecx], dl
mov edx, ecx
xor edx, 0x7ffffffe
mov esi, ecx
or esi, 1
and esi, edx
xor ecx, 1
lea ecx, [ecx + esi*2]
cmp ecx, 0xb
jb 0x41e700
lea ecx, [esp + eax]
add ecx, 0x2c
cmp byte [esp + eax + 0x43], 0
js 0x41e77a
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x41e7d1
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x41e7c9
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040cdc0
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.0043a170
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x41e7be
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
push edi
call fcn.0040cdd0
add esp, 4
jmp 0x41e7d1
mov dword [esp + 0x18], 0
mov dword [esp], 0x7d7f7a4c
mov dword [esp + 4], 0x72454249
mov byte [esp + 8], 0xec
mov dword [esp + 9], 0
xor eax, eax
nop
mov edx, eax
and edx, 7
mov ecx, eax
or ecx, 0x57
add ecx, edx
xor cl, byte [esp + eax]
add cl, 0x4d
mov byte [esp + eax], cl
inc eax
cmp eax, 0xd
jne 0x41e7f0
cmp byte [esp + 0x63], 0
js 0x41e829
lea eax, [esp + 0x4c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
mov bl, 1
jmp 0x41e87a
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov eax, ebx
or eax, esi
je 0x41e878
mov edi, dword [esp + 0x54]
inc edi
push edi
call fcn.0040cdc0
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.0043a170
test eax, eax
setns bl
js 0x41e86d
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
push edi
call fcn.0040cdd0
add esp, 4
jmp 0x41e87a
xor ebx, ebx
mov dword [esp], 0xf9eac4f4
mov byte [esp + 4], 0x60
mov word [esp + 5], 0
mov byte [esp + 7], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xa
mov edx, ecx
xor edx, 0xa5
add edx, esi
add dl, 0xf4
xor dl, byte [esp + ecx]
add dl, 3
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 8
jne 0x41e8a0
cmp byte [esp + 0x7b], 0
js 0x41e8e6
lea eax, [esp + 0x64]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x41e948
mov ecx, dword [esp + 0x64]
mov edi, dword [esp + 0x68]
mov eax, ecx
or eax, edi
je 0x41e940
mov esi, dword [esp + 0x6c]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040cdc0
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.0043a170
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x41e935
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.004062c0
add esp, 0xc
push esi
call fcn.0040cdd0
add esp, 4
jmp 0x41e948
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x14]
mov esi, dword [esp + eax*8 + 0x12c]
mov eax, dword [esp + eax*8 + 0x130]
mov dword [esp + 0x14], eax
mov dword [esp], 0xe061105
mov dword [esp + 4], 0x301d081a
mov dword [esp + 8], 0x8f111d1d
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx]
mov edi, 0xd9
sub edi, edx
lea ecx, [edx + 0x26]
or ecx, eax
not eax
or eax, edi
and eax, ecx
add al, 0x42
mov byte [esp + edx], al
mov eax, edx
and eax, 1
mov ecx, eax
not ecx
add ecx, edx
add ecx, 2
mov edx, ecx
and edx, eax
xor eax, ecx
lea edx, [eax + edx*2]
cmp edx, 0xc
jb 0x41e980
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], eax
fild qword [esp + 0x20]
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.00406310
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x84]
mov dword [esp], 0xc4dfcac7
mov dword [esp + 4], 0xc7c5d6d7
mov word [esp + 8], 0x77d3
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + esi]
mov edx, esi
and edx, 5
mov ecx, esi
and ecx, 0xa
xor ecx, 0x117840eb
sub edx, ecx
xor edx, edi
mov ecx, edx
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
add cl, 0x96
mov byte [esp + esi], cl
inc esi
cmp esi, 0x10
jne 0x41ea20
push eax
lea esi, [esp + 4]
push esi
push dword [ebp + 0x14]
call fcn.004063a0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x85]
mov dword [esp], 0x3f3a3d30
mov dword [esp + 4], 0x3f303e2f
mov dword [esp + 8], 0x8109
mov byte [esp + 0xc], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xe2
xor dl, byte [esp + ecx]
add dl, 0x96
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xd
jne 0x41ea90
push eax
push esi
push dword [ebp + 0x14]
call fcn.004063a0
add esp, 0xc
or edi, dword [esp + 0x14]
or edi, eax
sete al
mov ecx, dword [esp + 0x1c]
and cl, byte [esp + 0x18]
and bl, byte [esp + 0x10]
and bl, cl
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret