Function at 0x41db30
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.00439390
xor ebx, ebx
test eax, eax
js 0x41e04d
mov dword [esp], 0xdae3a89a
mov byte [esp + 4], 0x74
mov dword [esp + 5], 0
mov word [esp + 9], 0
xor eax, eax
nop
nop
movzx ecx, byte [esp + eax]
mov edx, eax
xor edx, 0xcce71c2
mov esi, ebx
and esi, 0x1a
sub esi, edx
not ecx
mov edi, esi
or edi, ecx
and ecx, esi
lea edx, [edi + edi]
not edx
add edx, edi
or edx, ecx
add dl, 0xca
mov byte [esp + eax], dl
inc eax
add ebx, 2
cmp eax, 0xb
jne 0x41db90
cmp byte [esp + 0x43], 0
js 0x41dbe1
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov bl, 1
jmp 0x41dc32
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x41dc30
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040c9f0
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.00439390
test eax, eax
setns bl
js 0x41dc25
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040ca00
add esp, 4
jmp 0x41dc32
xor ebx, ebx
movzx eax, byte [ebp + 0x18]
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp + 0x10], eax
mov dword [esp], 0x969e8096
mov dword [esp + 4], 0x2581
mov byte [esp + 8], 0
mov ecx, 0xb6eb8189
mov edx, 0x77
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x49147e77]
mov edi, esi
not edi
or edi, edx
add edi, ecx
and esi, edx
or esi, edi
add esi, 0x6d667857
mov edi, esi
and edi, 1
xor esi, 1
lea eax, [esi + edi*2]
mov byte [esp + ecx + 0x49147e77], al
inc ecx
dec edx
cmp ecx, 0xb6eb8192
jne 0x41dc70
mov eax, dword [esp + 0x10]
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x41dcca
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
jmp 0x41dd22
mov edx, dword [ecx]
mov edi, dword [ecx + 4]
mov eax, edx
or eax, edi
je 0x41dd20
mov esi, dword [ecx + 8]
inc esi
push esi
mov dword [esp + 0x14], edx
call fcn.0040c9f0
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.00439390
test eax, eax
setns al
mov edi, eax
js 0x41dd13
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push esi
call fcn.0040ca00
add esp, 4
mov eax, edi
jmp 0x41dd22
xor eax, eax
and bl, al
mov dword [esp], 0x6d6b767c
mov dword [esp + 4], 0x567d7641
mov byte [esp + 8], 0xdc
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax]
lea esi, [eax + 0x6e9f00d9]
mov ecx, 0x26
sub ecx, eax
xor ecx, esi
and ecx, edx
xor ecx, esi
mov edx, ecx
not edx
and edx, 0x3e
and ecx, 0xc1
sub ecx, edx
inc cl
mov byte [esp + eax], cl
lea ecx, [eax + eax]
and ecx, 2
mov edx, ecx
and edx, eax
or ecx, eax
xor ecx, 1
add ecx, edx
mov eax, ecx
cmp ecx, 0x10
jb 0x41dd50
cmp byte [esp + 0x5b], 0
js 0x41ddb1
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
jmp 0x41de0d
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x48]
mov eax, ecx
or eax, edi
je 0x41de0b
mov esi, dword [esp + 0x4c]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040c9f0
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.00439390
test eax, eax
setns al
mov edi, eax
js 0x41ddfe
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push esi
call fcn.0040ca00
add esp, 4
mov eax, edi
jmp 0x41de0d
xor eax, eax
and bl, al
mov dword [esp], 0x4fba5848
mov byte [esp + 4], 0x34
mov dword [esp + 5], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb6
xor cl, byte [esp + eax]
add cl, 0x72
mov byte [esp + eax], cl
inc eax
cmp eax, 9
jne 0x41de30
cmp byte [esp + 0x73], 0
js 0x41de62
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
jmp 0x41debe
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x60]
mov eax, ecx
or eax, edi
je 0x41debc
mov esi, dword [esp + 0x64]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040c9f0
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.00439390
test eax, eax
setns al
mov edi, eax
js 0x41deaf
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push esi
call fcn.0040ca00
add esp, 4
mov eax, edi
jmp 0x41debe
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], 0x5a9e97ab
mov dword [esp + 4], 0x54675462
mov dword [esp + 8], 0xf9536363
mov dword [esp + 0xc], 0
mov edx, 0x4e776bfd
mov esi, 2
nop
movzx eax, byte [esp + edx - 0x4e776bfd]
mov ecx, edx
or ecx, eax
not eax
or eax, esi
and eax, ecx
mov ecx, eax
not ecx
and ecx, 0xf2
and eax, 0xd
sub eax, ecx
inc al
mov byte [esp + edx - 0x4e776bfd], al
inc edx
dec esi
cmp edx, 0x4e776c0d
jne 0x41df00
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
fild qword [esp + 0x18]
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.00405ef0
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x7c]
mov dword [esp + 0x10], eax
mov dword [esp], 0xc4dfcac7
mov dword [esp + 4], 0xc7c5d6d7
mov word [esp + 8], 0x77d3
mov dword [esp + 0xa], 0
mov edi, 0x15
mov edx, 0xea
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edi - 0x15]
mov ecx, edi
xor ecx, edx
and ecx, esi
xor ecx, edx
mov al, 0x96
sub al, cl
mov byte [esp + edi - 0x15], al
inc edi
dec edx
cmp edi, 0x23
jne 0x41dfa0
push dword [esp + 0x10]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f80
add esp, 0xc
mov edi, eax
movzx esi, byte [esp + 0x7d]
mov dword [esp], 0xafaaad90
mov dword [esp + 4], 0x8fb0ae9f
mov dword [esp + 8], 0x21b9
mov byte [esp + 0xc], 0
or edi, dword [esp + 0x14]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx]
lea edx, [ecx + 0xf6ea44a]
xor edx, eax
mov eax, edx
and eax, 0xd
xor edx, 0xb2d6ca8d
lea eax, [edx + eax*2]
and edx, 1
or eax, 1
add eax, edx
mov byte [esp + ecx], al
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0xd
jb 0x41e000
push esi
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f80
add esp, 0xc
or edi, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret