Function at 0x41de30
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.0043a5c0
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x41e35b
mov dword [esp + 4], 0x7269746e
mov byte [esp + 8], 0x98
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
nop
movzx esi, byte [esp + eax + 4]
lea edx, [esi + esi]
not edx
add edx, esi
mov ecx, 0x24
sub ecx, eax
and ecx, esi
not esi
or edx, esi
lea esi, [eax - 0x4a0e7425]
and esi, edx
or ecx, esi
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0xb8
mov byte [esp + eax + 4], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xa
jb 0x41de90
cmp byte [esp + 0x4b], 0
js 0x41def8
lea eax, [esp + 0x34]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x41df59
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
mov eax, esi
or eax, ebx
je 0x41df4d
mov edi, dword [esp + 0x3c]
inc edi
push edi
call fcn.0040cf60
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.0043a5c0
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x41df42
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
push edi
call fcn.0040cf70
add esp, 4
jmp 0x41df55
mov dword [esp + 0x14], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x1c], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0x2a226812
mov word [esp + 8], 0xb559
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov ecx, 0x14331ede
mov edx, 0x6bcce121
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x14331eda]
mov esi, ecx
xor esi, edi
mov ebx, ecx
and ebx, edi
or esi, edx
not esi
or esi, ebx
add esi, esi
lea eax, [edx - 0x6bcce100]
and eax, esi
mov ebx, esi
not ebx
and ebx, ecx
add ebx, edi
sub ebx, eax
add bl, 0xaa
mov byte [esp + ecx - 0x14331eda], bl
inc ecx
dec edx
cmp ecx, 0x14331ee9
jne 0x41dfa0
mov eax, dword [esp + 0x18]
lea ecx, [esp + eax]
add ecx, 0x2c
cmp byte [esp + eax + 0x43], 0
js 0x41e004
lea eax, [esp + 4]
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
mov bl, 1
jmp 0x41e053
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x41e051
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040cf60
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.0043a5c0
test eax, eax
setns bl
js 0x41e046
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
push edi
call fcn.0040cf70
add esp, 4
jmp 0x41e053
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0xdddbd6ec
mov dword [esp + 8], 0xd6edd6e1
mov byte [esp + 0xc], 0x4c
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 2
mov edx, ecx
xor edx, 0x71
add edx, esi
xor dl, byte [esp + ecx + 4]
add dl, 0xcb
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 0x10
jne 0x41e090
cmp byte [esp + 0x63], 0
js 0x41e0d0
lea eax, [esp + 0x4c]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
mov bl, 1
jmp 0x41e123
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov eax, ebx
or eax, esi
je 0x41e121
mov edi, dword [esp + 0x54]
inc edi
push edi
call fcn.0040cf60
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.0043a5c0
test eax, eax
setns bl
js 0x41e116
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
push edi
call fcn.0040cf70
add esp, 4
jmp 0x41e123
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0x575a6858
mov byte [esp + 8], 0xcc
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
mov esi, ecx
xor esi, 0x4e
mov edx, eax
and edx, 2
sub edx, esi
xor dl, byte [esp + ecx + 4]
add dl, 0x86
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 0xa
jne 0x41e150
cmp byte [esp + 0x7b], 0
js 0x41e190
lea eax, [esp + 0x64]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
mov bl, 1
jmp 0x41e1e3
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x68]
mov eax, ebx
or eax, esi
je 0x41e1e1
mov edi, dword [esp + 0x6c]
inc edi
push edi
call fcn.0040cf60
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.0043a5c0
test eax, eax
setns bl
js 0x41e1d6
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406300
add esp, 0xc
push edi
call fcn.0040cf70
add esp, 4
jmp 0x41e1e3
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + ecx*8 + 0x12c]
mov ecx, dword [esp + ecx*8 + 0x130]
mov dword [esp + 4], 0x6e6a6317
mov dword [esp + 8], 0x47b0c66
mov dword [esp + 0xc], 0xe10f7f7f
mov dword [esp + 0x10], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
add bl, 0x2b
xor bl, byte [esp + edx + 4]
add bl, 0x29
mov byte [esp + edx + 4], bl
inc edx
cmp edx, 0x10
jne 0x41e230
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
sub esp, 0x10
lea edi, [esp + 0x14]
mov dword [esp + 4], edi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00406350
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x84]
mov dword [esp + 4], 0x60156269
mov dword [esp + 8], 0x7d630e71
mov word [esp + 0xc], 0xe975
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov ecx, 0x2c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x28]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0x24
mov byte [esp + ecx - 0x28], dl
inc ecx
cmp ecx, 0x3c
jne 0x41e2b0
push eax
push edi
push dword [ebp + 0x14]
call fcn.004063e0
add esp, 0xc
or eax, esi
sete cl
movzx eax, byte [esp + 0x85]
mov dword [esp + 4], 0x30e0d38
mov dword [esp + 8], 0xb080a3b
mov dword [esp + 0xc], 0x9901
mov edx, dword [esp + 0x14]
and dl, cl
mov dword [esp + 0x14], edx
mov ecx, 0x5b
movzx esi, byte [edi]
mov ebx, ecx
and ebx, esi
lea edx, [ecx - 0x7025ce00]
or edx, esi
not edx
or edx, ebx
add edx, 0xcf42fbcb
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [edi], dl
inc edi
dec ecx
cmp ecx, 0x4f
jne 0x41e310
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004063e0
add esp, 0xc
test eax, eax
setne al
mov ecx, dword [esp + 0x14]
xor al, cl
and al, cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret