Function at 0x40d3e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x20], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x1c], eax
mov word [esp + 8], 0xbfbd
mov byte [esp + 0xa], 0xb6
mov word [esp + 0xb], 0
xor ecx, ecx
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 8]
mov ebx, ecx
and ebx, 0xc
mov ebp, eax
xor ebp, 0x6fce89de
add ebp, ebx
xor ebp, edi
add ebp, 0xd0f74ea9
mov edi, ebp
and edi, 1
xor ebp, 1
lea ebx, [edi*2]
add ebx, ebp
mov byte [esp + eax + 8], bl
inc eax
add ecx, 2
cmp eax, 5
jne 0x40d420
mov dword [esp + 0x10], 0xc2c0dc26
mov dword [esp + 0x14], 0xd5c2
mov byte [esp + 0x18], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0xae
xor al, byte [esp + ebx + 0x10]
add al, 0x9a
mov byte [esp + ebx + 0x10], al
inc ebx
cmp ebx, 9
jne 0x40d480
mov dword [esp + 0x24], 0xecd99795
mov dword [esp + 0x28], 0xd1c7e9ee
mov dword [esp + 0x2c], 0xcee28cd4
mov dword [esp + 0x30], 0xdcd9d5d3
mov dword [esp + 0x34], 0xdcc7ddc1
mov dword [esp + 0x38], 0xd99293de
mov dword [esp + 0x3c], 0x9adbc7c3
mov dword [esp + 0x40], 0xdaced4d0
mov dword [esp + 0x44], 0xdecc9987
mov dword [esp + 0x48], 0xe5ffd8d1
mov byte [esp + 0x4c], 0xc0
mov dword [esp + 0x4d], 0
mov word [esp + 0x51], 0
mov ebx, 0x5e7e0f1a
mov ebp, 0x2181f0e5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebx - 0x5e7e0ef6]
mov eax, ebp
and eax, 0x2000c01a
mov ecx, ebx
and ecx, 0x183e0765
or ecx, eax
xor ecx, edi
xor ecx, 0x19bf37e5
and ecx, ebx
add ecx, ecx
sub edi, ecx
add edi, ebx
mov eax, edi
and eax, 0x7d
xor edi, 0x7d
lea eax, [edi + eax*2]
inc al
mov byte [esp + ebx - 0x5e7e0ef6], al
inc ebx
dec ebp
cmp ebx, 0x5e7e0f49
jne 0x40d510
mov ebp, dword [esp + 0x68]
add ebp, dword [esp + 0x1c]
mov word [esp], 0x1415
mov byte [esp + 2], 0xce
mov word [esp + 3], 0
mov byte [esp + 5], 0
mov edi, 0x6d540832
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi - 0x6d540832]
xor ecx, edi
lea eax, [ecx - 0x22a428fb]
not ecx
add ecx, ecx
and ecx, 2
mov ebx, ecx
and ebx, eax
xor ecx, eax
xor ecx, 1
lea eax, [ecx + ebx*2]
mov byte [esp + edi - 0x6d540832], al
inc edi
cmp edi, 0x6d540838
jne 0x40d580
movzx ebx, byte [esp]
mov edi, ebp
test bl, bl
je 0x40d5db
lea ecx, [esp + 1]
mov edi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ecx]
inc ecx
test bl, bl
jne 0x40d5d0
mov byte [edi], 0
mov eax, dword [esp + 0x20]
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x40d5fb
lea ebx, [eax + 0x61]
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x40d5f0
mov byte [edi], 0
movzx ecx, byte [esp + 0x24]
test cl, cl
je 0x40d61b
lea ebx, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x40d610
mov byte [edi], 0
movzx ecx, byte [esi]
test cl, cl
je 0x40d63b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x40d630
mov byte [edi], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x40d65b
lea esi, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x40d650
mov byte [edi], 0
movzx ecx, byte [edx]
test cl, cl
je 0x40d67b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40d670
mov byte [edi], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x40d69b
lea edx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40d690
mov byte [edi], 0
sub edi, ebp
add dword [eax + 0x80], edi
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret 0xc