Function at 0x41ddf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x24]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043b100
xor ebx, ebx
test eax, eax
js 0x41e319
mov dword [esp], 0x7a63687a
mov byte [esp + 4], 0xd4
mov dword [esp + 5], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
not eax
movzx edx, byte [esp + ebx]
mov ecx, 0x22959451
sub ecx, ebx
lea esi, [ebx - 0x62959452]
and esi, 0x9d6a28a4
and ecx, 0x2010905b
or ecx, esi
mov esi, 0x51
sub esi, ebx
and esi, edx
xor ecx, edx
xor ecx, 0x2010d35b
or ecx, esi
add ecx, 0xecebe599
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + ebx], cl
mov ecx, ebx
or eax, 0xfffffffe
add eax, ebx
xor ebx, 0xfffffffe
or ecx, 1
and ecx, ebx
lea ebx, [ecx + eax]
add ebx, 2
cmp ebx, 9
jb 0x41de50
cmp byte [esp + 0x43], 0
js 0x41ded2
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
mov bl, 1
jmp 0x41df23
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x41df21
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040c8c0
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.0043b100
test eax, eax
setns bl
js 0x41df16
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
push edi
call fcn.0040c8d0
add esp, 4
jmp 0x41df23
xor ebx, ebx
movzx eax, byte [ebp + 0x18]
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x6023c0a
mov dword [esp + 4], 0x9337
mov byte [esp + 8], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x25
xor dl, byte [esp + ecx]
add dl, 0x47
mov byte [esp + ecx], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 9
jb 0x41df50
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x41df8e
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
mov al, 1
jmp 0x41dfe6
mov edx, dword [ecx]
mov edi, dword [ecx + 4]
mov eax, edx
or eax, edi
je 0x41dfe4
mov esi, dword [ecx + 8]
inc esi
push esi
mov dword [esp + 0x14], edx
call fcn.0040c8c0
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.0043b100
test eax, eax
setns al
mov edi, eax
js 0x41dfd7
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
push esi
call fcn.0040c8d0
add esp, 4
mov eax, edi
jmp 0x41dfe6
xor eax, eax
and bl, al
mov dword [esp], 0xdbd9dad0
mov dword [esp + 4], 0xcae7d2ef
mov byte [esp + 8], 0x40
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0xf2
xor cl, byte [esp + eax]
add cl, 0x46
mov byte [esp + eax], cl
inc eax
cmp eax, 0xf
jne 0x41e010
cmp byte [esp + 0x5b], 0
js 0x41e042
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
mov al, 1
jmp 0x41e09e
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x48]
mov eax, ecx
or eax, edi
je 0x41e09c
mov esi, dword [esp + 0x4c]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040c8c0
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.0043b100
test eax, eax
setns al
mov edi, eax
js 0x41e08f
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
push esi
call fcn.0040c8d0
add esp, 4
mov eax, edi
jmp 0x41e09e
xor eax, eax
and bl, al
mov dword [esp], 0x9b968090
mov byte [esp + 4], 0x24
mov word [esp + 5], 0
mov byte [esp + 7], 0
mov eax, 0xa3e40d48
mov ecx, 0x5c1bf2b7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x5c1bf2b8]
mov esi, ecx
and esi, 0x58194282
mov edi, eax
and edi, 0x8144000d
or edi, esi
xor edi, 0x8546b03d
mov esi, edi
xor esi, edx
sub esi, edi
and edi, edx
add esi, edi
not edx
and edx, ecx
or edx, esi
mov esi, edx
xor esi, 0x96
not edx
and edx, 0x16
add edx, edx
sub edx, esi
inc dl
mov byte [esp + eax + 0x5c1bf2b8], dl
inc eax
dec ecx
cmp eax, 0xa3e40d50
jne 0x41e0d0
cmp byte [esp + 0x73], 0
js 0x41e141
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
mov al, 1
jmp 0x41e19d
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x60]
mov eax, ecx
or eax, edi
je 0x41e19b
mov esi, dword [esp + 0x64]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040c8c0
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.0043b100
test eax, eax
setns al
mov edi, eax
js 0x41e18e
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405e10
add esp, 0xc
push esi
call fcn.0040c8d0
add esp, 4
mov eax, edi
jmp 0x41e19d
xor eax, eax
and bl, al
mov eax, dword [esp + 0x14]
mov edi, dword [esp + eax*8 + 0x124]
mov eax, dword [esp + eax*8 + 0x128]
mov dword [esp + 0x14], eax
mov dword [esp], 0x7a7e776b
mov dword [esp + 4], 0x74677462
mov dword [esp + 8], 0xd9736363
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
mov edx, 0x52
mov esi, 0xad
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi - 0xad]
mov eax, esi
or eax, ecx
or ecx, edx
sub al, cl
movzx eax, al
add eax, edx
add al, 0x9f
mov byte [esp + esi - 0xad], al
dec edx
inc esi
cmp edx, 0x43
jne 0x41e1f0
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
fild qword [esp + 0x18]
sub esp, 0x10
lea esi, [esp + 0x10]
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405e60
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x7c]
mov dword [esp], 0xf0cdf2f9
mov dword [esp + 4], 0xf5f3c6c1
mov word [esp + 8], 0x59fd
mov dword [esp + 0xa], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x98
xor dl, byte [esp + ecx]
add dl, 8
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xe
jne 0x41e270
push eax
push esi
push dword [ebp + 0x14]
call fcn.00405ef0
add esp, 0xc
movzx ecx, byte [esp + 0x7d]
mov dword [esp + 0x10], ecx
mov dword [esp], 0xa9a6a794
mov dword [esp + 4], 0xb1b4b699
mov word [esp + 8], 0x23a3
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
or eax, edi
mov dword [esp + 0x14], eax
xor esi, esi
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi]
mov ecx, esi
and ecx, 0x16
mov edx, edi
xor edx, 0x31fe2c8b
add edx, ecx
mov ecx, edx
and ecx, eax
add edx, eax
add ecx, ecx
sub edx, ecx
add dl, 0x49
mov byte [esp + edi], dl
inc edi
add esi, 2
cmp edi, 0x10
jne 0x41e2d0
push dword [esp + 0x10]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405ef0
add esp, 0xc
or dword [esp + 0x14], eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret