Function at 0x41cd40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x160
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 + 0x34]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.00437ce0
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x41d25d
mov dword [esp + 4], 0x6e677066
mov byte [esp + 8], 0xac
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
mov ecx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
and edx, 0xc
mov esi, eax
xor esi, 0xdc
lea edx, [esi + edx*2]
xor dl, byte [esp + eax + 4]
add dl, 0x26
mov byte [esp + eax + 4], dl
mov edx, eax
xor ecx, 1
add ecx, eax
and eax, 1
and edx, 0xe
sub ecx, edx
add ecx, eax
mov eax, ecx
cmp ecx, 0xc
jb 0x41cdb0
cmp byte [esp + 0x53], 0
js 0x41ce07
lea eax, [esp + 0x3c]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
mov al, 1
mov dword [esp + 0x24], eax
jmp 0x41ce68
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, esi
or eax, ebx
je 0x41ce5c
mov edi, dword [esp + 0x44]
inc edi
push edi
call fcn.0040c880
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.00437ce0
test eax, eax
setns al
mov dword [esp + 0x24], eax
js 0x41ce51
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
jmp 0x41ce64
mov dword [esp + 0x24], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x1c], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp + 4], 0xa8a0baac
mov dword [esp + 8], 0x5fbb
mov byte [esp + 0xc], 0
xor ecx, ecx
xor edx, edx
nop
movzx esi, byte [esp + edx + 4]
mov ebx, ecx
and ebx, 0x10
mov edi, edx
xor edi, 0x22ad7d28
add edi, ebx
mov ebx, 0x102a91d1
sub ebx, edi
add edi, 0xefd56f2e
xor ebx, edi
and ebx, esi
xor ebx, edi
add bl, 0x9a
mov byte [esp + edx + 4], bl
inc edx
add ecx, 2
cmp edx, 9
jne 0x41ce90
lea ecx, [esp + eax]
add ecx, 0x34
cmp byte [esp + eax + 0x4b], 0
js 0x41ceed
lea eax, [esp + 4]
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x41cf46
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x41cf3e
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c880
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.00437ce0
test eax, eax
setns al
mov dword [esp + 0x20], eax
js 0x41cf33
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
jmp 0x41cf46
mov dword [esp + 0x20], 0
mov dword [esp + 4], 0x9b998a80
mov dword [esp + 8], 0x9a8f82f7
mov byte [esp + 0xc], 0x10
mov dword [esp + 0xd], 0
mov byte [esp + 0x11], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x32
xor cl, byte [esp + eax + 4]
add cl, 0x22
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xe
jne 0x41cf70
cmp byte [esp + 0x6b], 0
js 0x41cfaa
lea eax, [esp + 0x54]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x41d007
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
mov eax, ebx
or eax, esi
je 0x41cfff
mov edi, dword [esp + 0x5c]
inc edi
push edi
call fcn.0040c880
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.00437ce0
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x41cff4
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
jmp 0x41d007
mov dword [esp + 0x18], 0
mov dword [esp + 4], 0xdbced0c0
mov byte [esp + 8], 0x7c
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
mov edx, 0xbd175314
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x42e8acf0]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0x3d
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0xc
mov byte [esp + edx + 0x42e8acf0], al
inc edx
cmp edx, 0xbd175320
jne 0x41d030
cmp byte [esp + 0x83], 0
js 0x41d09e
lea eax, [esp + 0x6c]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x41d0fb
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x70]
mov eax, ebx
or eax, esi
je 0x41d0f3
mov edi, dword [esp + 0x74]
inc edi
push edi
call fcn.0040c880
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.00437ce0
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x41d0e8
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405e30
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
jmp 0x41d0fb
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + ecx*8 + 0x134]
mov ecx, dword [esp + ecx*8 + 0x138]
mov dword [esp + 4], 0x5e5a4357
mov dword [esp + 8], 0xa44b5c46
mov dword [esp + 0xc], 0xc15f4f4f
mov edx, 0x29
mov esi, 0xd6
nop
mov edi, esi
and edi, 0xd1
mov ebx, edx
and ebx, 0x2e
or ebx, edi
xor bl, byte [esp + edx - 0x25]
xor bl, 0xd1
add bl, 0x73
mov byte [esp + edx - 0x25], bl
inc edx
dec esi
cmp edx, 0x35
jne 0x41d130
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
fild qword [esp + 0x28]
sub esp, 0x10
lea edi, [esp + 0x14]
mov dword [esp + 4], edi
mov esi, dword [ebp + 0x14]
mov dword [esp], esi
fstp qword [esp + 8]
call fcn.00405e80
add esp, 0x10
mov dword [esp + 0x1c], eax
movzx eax, byte [esp + 0x8c]
mov dword [esp + 6], 0xbaa3acbb
mov dword [esp + 0xa], 0x53a7abd5
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov word [esp + 4], 0xae69
push eax
push edi
push esi
call fcn.00405f10
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x8d]
mov dword [esp + 4], 0x999e9f8c
mov dword [esp + 8], 0x819c9e89
mov word [esp + 0xc], 0x3393
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov ecx, 0xf80609c7
mov ebx, 0x38
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x7f9f63d]
mov edx, ebx
xor edx, ecx
and edx, esi
xor edx, ecx
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
add dl, 0x9e
mov byte [esp + ecx + 0x7f9f63d], dl
inc ecx
dec ebx
cmp ecx, 0xf80609d7
jne 0x41d200
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405f10
add esp, 0xc
mov ecx, dword [esp + 0x24]
and cl, byte [esp + 0x20]
mov edx, dword [esp + 0x18]
and dl, byte [esp + 0x14]
and dl, cl
or edi, dword [esp + 0x1c]
or edi, eax
sete al
and al, dl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret