Function at 0x41dcf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x160
mov ebx, edx
mov esi, ecx
call fcn.004048d0
mov dword [esp + 0x28], eax
push eax
call fcn.00404530
add esp, 4
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], ebx
mov ebx, dword [ebx + 0x3c]
lea edi, [esp + 0x38]
push 0x120
push 0
push edi
call fcn.0040c520
add esp, 0xc
mov dword [esp + 0x24], esi
mov ecx, esi
push 0
push 0
push 0x120
push edi
push ebx
push dword [esp + 0x30]
call fcn.0043c310
test eax, eax
js 0x41e18b
mov dword [esp + 0xc], 0x2229dc16
mov byte [esp + 0x10], 0xb8
mov word [esp + 0x11], 0
mov byte [esp + 0x13], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 7
ja 0x41ddc3
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0xc]
add eax, 0x910a171f
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x65
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0xc], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 8
jb 0x41dd90
lea edx, [esp + 0x40]
lea eax, [esp + 0xc]
mov edi, dword [esp + 0x24]
mov ecx, edi
mov esi, dword [esp + 0x2c]
push esi
push eax
call fcn.0041e240
add esp, 8
mov ebx, eax
mov dword [esp + 0xc], 0x3e32243a
mov word [esp + 0x10], 0x832f
mov dword [esp + 0x12], 0
mov byte [esp + 0x16], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xa
ja 0x41de50
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0xc]
lea edx, [eax + ecx]
add edx, 0xd6e7c5e1
add eax, 0xd6e7c5e1
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 8], edx
mov eax, dword [esp + 8]
add al, 0x9b
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0xc], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xb
jb 0x41de10
lea edx, [esp + 0x120]
mov ecx, edi
push esi
lea eax, [esp + 0x10]
push eax
call fcn.0041e240
add esp, 8
mov byte [esp + 0x1c], al
mov dword [esp + 0xc], 0xb7b1beb8
mov dword [esp + 0x10], 0xae43be4b
mov byte [esp + 0x14], 0x58
mov dword [esp + 0x15], 0
mov word [esp + 0x19], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xe
ja 0x41dede
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0xc]
mov edx, eax
xor edx, 0x961e2cb8
and eax, 0x161e2cb8
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x68
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0xc], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xf
jb 0x41dea0
lea edx, [esp + 0x58]
mov ecx, edi
push esi
lea eax, [esp + 0x10]
push eax
call fcn.0041e240
add esp, 8
mov byte [esp + 0x20], al
mov dword [esp + 0xc], 0x7166746c
mov byte [esp + 0x10], 0x98
mov dword [esp + 0x11], 0
mov word [esp + 0x15], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xa
ja 0x41df75
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0xc]
mov edx, eax
xor edx, 0x3b4740db
and eax, 0x3b4740db
lea eax, [edx + eax*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 8], edx
mov eax, dword [esp + 8]
add al, 0xb9
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0xc], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xb
jb 0x41df30
and bl, byte [esp + 0x1c]
lea edx, [esp + 0x70]
mov ecx, edi
push esi
lea eax, [esp + 0x10]
push eax
call fcn.0041e240
add esp, 8
mov byte [esp + 0x1c], al
fild qword [esp + 0x138]
mov dword [esp + 0xc], 0x5a9e97ab
mov dword [esp + 0x10], 0x54675462
mov dword [esp + 0x14], 0xf9536363
mov word [esp + 0x18], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xd
ja 0x41e00e
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0xc]
mov edx, eax
xor edx, 0x1086c7fd
and eax, 0x1086c7fd
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xf
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0xc], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xe
jb 0x41dfd0
and bl, byte [esp + 0x20]
sub esp, 0x10
fstp qword [esp + 8]
lea eax, [esp + 0x1c]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00405c40
add esp, 0x10
mov dword [esp + 0x20], eax
movzx eax, byte [esp + 0x90]
mov dword [esp + 0x34], eax
mov dword [esp + 0xc], 0xe015e2e9
mov dword [esp + 0x10], 0xfde30ef1
mov word [esp + 0x14], 0x69f5
mov dword [esp + 0x16], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xd
ja 0x41e0cf
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0xc]
mov edi, ecx
not edi
or edi, 0x38f0bf6c
add edi, ecx
xor ecx, 0xb8f0bf6c
lea eax, [ecx + edi*2]
lea ecx, [ecx + edi*2]
add ecx, 2
and ecx, edx
add eax, edx
add eax, 2
sub eax, ecx
mov edx, 0xb3c660ff
sub edx, eax
and edx, ecx
not ecx
and ecx, eax
sub ecx, edx
mov dword [esp + 8], ecx
mov eax, dword [esp + 8]
add al, 0xe4
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0xc], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xe
jb 0x41e070
and bl, byte [esp + 0x1c]
push dword [esp + 0x34]
lea eax, [esp + 0x10]
push eax
push esi
call fcn.00405cd0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x90]
mov dword [esp + 0xc], 0xd9c6c7d4
mov dword [esp + 0x10], 0xd1d4d6e9
mov word [esp + 0x14], 0x43c3
mov dword [esp + 0x16], 0
mov byte [esp + 0x1a], 0
or edi, dword [esp + 0x20]
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xe
ja 0x41e170
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0xc]
mov esi, ecx
xor esi, 0xbf76d873
and ecx, 0x3f76d873
lea ecx, [esi + ecx*2]
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0xc1
mov edx, dword [esp + 4]
mov byte [esp + edx + 0xc], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xf
jb 0x41e130
push eax
lea eax, [esp + 0x10]
push eax
push dword [esp + 0x34]
call fcn.00405cd0
add esp, 0xc
or edi, eax
sete al
and bl, al
jmp 0x41e18d
xor ebx, ebx
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, eax
or ecx, edx
je 0x41e1cb
mov esi, dword [esp + 0x24]
mov ecx, esi
push 0
push 0
push 0x40
lea edi, [esp + 0x44]
push edi
push edx
push eax
call fcn.0043c310
test eax, eax
js 0x41e1cb
lea edx, [esp + 0x38]
mov ecx, esi
push dword [ebp + 8]
call fcn.0041dcf0
add esp, 4
or bl, al
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov ecx, eax
or ecx, edx
je 0x41e20a
mov esi, dword [esp + 0x24]
mov ecx, esi
push 0
push 0
push 0x40
lea edi, [esp + 0x44]
push edi
push edx
push eax
call fcn.0043c310
test eax, eax
js 0x41e20a
lea edx, [esp + 0x38]
mov ecx, esi
push dword [ebp + 8]
call fcn.0041dcf0
add esp, 4
or bl, al
test bl, bl
je 0x41e21f
push dword [esp + 0x28]
push dword [ebp + 8]
call fcn.00405610
add esp, 8
jmp 0x41e22b
push dword [esp + 0x28]
call fcn.004047a0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret