Function at 0x41d570
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x160
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
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.00438fc0
test eax, eax
js 0x41d630
mov dword [esp], 0xaea790a6
mov byte [esp + 4], 0x2c
mov dword [esp + 5], 0
mov dword [esp + 8], 0
mov edx, 0x4c
movzx eax, byte [esp + edx - 0x4c]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0x5d
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, 0x84
mov byte [esp + edx - 0x4c], al
inc edx
cmp edx, 0x58
jne 0x41d5d0
cmp byte [esp + 0x53], 0
js 0x41d637
lea eax, [esp + 0x3c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x41d692
xor eax, eax
jmp 0x41dac5
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, esi
or eax, ebx
je 0x41d68a
mov edi, dword [esp + 0x44]
inc edi
push edi
call fcn.0040cc80
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.00438fc0
test eax, eax
setns al
mov dword [esp + 0x20], eax
js 0x41d67f
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
push edi
call fcn.0040cc90
add esp, 4
jmp 0x41d692
mov dword [esp + 0x20], 0
movzx eax, byte [ebp + 0x18]
movzx ebx, al
lea eax, [ebx*8 + 0xe8]
mov dword [esp], 0x66a2ac9a
mov dword [esp + 4], 0xf357
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x7d
xor dl, byte [esp + ecx]
add dl, 0x8f
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 8
jne 0x41d6c0
lea ecx, [esp + eax]
add ecx, 0x34
cmp byte [esp + eax + 0x4b], 0
js 0x41d6f8
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
mov al, 1
mov dword [esp + 0x1c], eax
jmp 0x41d757
mov dword [esp + 0x10], ebx
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x41d74b
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040cc80
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.00438fc0
test eax, eax
setns al
mov dword [esp + 0x1c], eax
js 0x41d740
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
push edi
call fcn.0040cc90
add esp, 4
jmp 0x41d753
mov dword [esp + 0x1c], 0
mov ebx, dword [esp + 0x10]
mov dword [esp], 0x6b696a10
mov dword [esp + 4], 0x7a07121f
mov byte [esp + 8], 0xe0
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0x2a
xor cl, byte [esp + eax]
add cl, 0x2e
mov byte [esp + eax], cl
inc eax
cmp eax, 0xf
jne 0x41d780
cmp byte [esp + 0x6b], 0
js 0x41d7b6
lea eax, [esp + 0x54]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x41d819
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
mov eax, ebx
or eax, esi
je 0x41d80d
mov edi, dword [esp + 0x5c]
inc edi
push edi
call fcn.0040cc80
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.00438fc0
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x41d802
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
push edi
call fcn.0040cc90
add esp, 4
jmp 0x41d815
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 0x10]
mov dword [esp], 0x212e5c14
mov byte [esp + 4], 0xb8
mov word [esp + 5], 0
mov byte [esp + 7], 0
mov esi, 0xea02a55f
mov ecx, 0x20
nop
nop
nop
nop
nop
movzx edx, byte [esp + esi + 0x15fd5aa1]
mov edi, ecx
and edi, 0x3e
mov eax, esi
and eax, 0x41
or eax, edi
lea edi, [edx + edx]
not edi
add edi, edx
xor eax, 0xc1
and eax, edx
and edi, esi
or eax, edi
add al, 0x25
mov byte [esp + esi + 0x15fd5aa1], al
inc esi
dec ecx
cmp esi, 0xea02a567
jne 0x41d840
cmp byte [esp + 0x83], 0
js 0x41d89e
lea eax, [esp + 0x6c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x41d900
mov ecx, dword [esp + 0x6c]
mov edi, dword [esp + 0x70]
mov eax, ecx
or eax, edi
je 0x41d8f8
mov esi, dword [esp + 0x74]
inc esi
push esi
mov dword [esp + 0x14], ecx
call fcn.0040cc80
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.00438fc0
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x41d8ed
mov eax, esp
push esi
push eax
push dword [ebp + 0x14]
call fcn.00406320
add esp, 0xc
push esi
call fcn.0040cc90
add esp, 4
jmp 0x41d900
mov dword [esp + 0x10], 0
mov eax, dword [esp + ebx*8 + 0x134]
mov dword [esp + 0x14], eax
mov eax, dword [esp + ebx*8 + 0x138]
mov dword [esp + 0x24], eax
mov dword [esp], 0xf6eee1fd
mov dword [esp + 4], 0xc0d5f8ea
mov dword [esp + 8], 0xa7c1d5d5
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
mov edx, esp
mov ebx, 0x703133e5
movzx edi, byte [edx]
mov esi, ebx
or esi, 0x80003240
lea ecx, [ebx - 0x80000000]
and esi, ecx
mov eax, esi
xor eax, edi
not eax
add eax, esi
and esi, edi
sub eax, esi
lea esi, [ebx - 0x70313300]
and esi, edi
xor ecx, edi
sub ecx, edi
add ecx, esi
mov esi, ecx
and esi, eax
xor eax, ecx
sub eax, ecx
add eax, esi
add al, 0x7e
mov byte [edx], al
inc edx
dec ebx
cmp ebx, 0x703133d6
jne 0x41d940
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
fild qword [esp + 0x28]
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.00406370
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x8c]
mov dword [esp], 0xb8d5b6c1
mov dword [esp + 4], 0xbdbfcac9
mov dword [esp + 8], 0x31cd
mov byte [esp + 0xc], 0
mov ecx, 0x3e04d041
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x3e04d041]
lea edi, [ecx - 0x3e04cf4b]
and edi, esi
mov ebx, edi
and ebx, 0xfffffffd
mov edx, edi
or edx, 0xfffffffd
inc edx
imul edx, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add edx, esi
sub edx, edi
add edx, ecx
mov esi, edx
xor esi, 0x1a
and edx, 0x65
add edx, edx
sub edx, esi
inc dl
mov byte [esp + ecx - 0x3e04d041], dl
inc ecx
cmp ecx, 0x3e04d04e
jne 0x41d9f0
push eax
lea esi, [esp + 4]
push esi
push dword [ebp + 0x14]
call fcn.00406400
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x8d]
mov dword [esp], 0xa3bebda8
mov dword [esp + 4], 0xbbb8ba8b
mov word [esp + 8], 0x29a1
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
xor ecx, ecx
nop
nop
nop
mov edx, ecx
add dl, 0x8c
xor dl, byte [esp + ecx]
add dl, 0x44
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xf
jne 0x41da80
push eax
push esi
push dword [ebp + 0x14]
call fcn.00406400
add esp, 0xc
or edi, dword [esp + 0x14]
sete cl
mov edx, dword [esp + 0x20]
and dl, byte [esp + 0x1c]
mov ebx, dword [esp + 0x18]
and bl, byte [esp + 0x10]
and bl, dl
and bl, cl
test eax, eax
setne al
xor al, bl
and al, bl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret