Function at 0x40df10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x60
push eax
sub esp, 0x7c
mov edi, esp
sub esp, 0x100
mov dword [ebp - 0x30], esp
push eax
mov ecx, esp
push eax
mov dword [ebp - 0x58], esp
sub esp, 0x70
mov dword [ebp - 0x5c], esp
sub esp, 0x28
mov dword [ebp - 0x38], esp
sub esp, 0xc
mov dword [ebp - 0x64], esp
sub esp, 0x40
mov esi, esp
sub esp, 0x80
mov edx, esp
mov eax, dword [0x44d05c]
mov dword [ebp - 0x14], 0xf7f60108
mov word [ebp - 0x10], 0
mov byte [ebp - 0xe], 0
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x1c], 0
mov ecx, dword [ebp - 0x1c]
cmp ecx, 6
ja 0x40dfb9
nop
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x1c]
movzx edx, byte [ebp + edx - 0x14]
mov esi, ecx
xor esi, 0xb6f2ee7e
and ecx, 0x36f2ee7e
lea ecx, [esi + ecx*2]
xor ecx, edx
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x54]
add cl, 0x8a
mov edx, dword [ebp - 0x1c]
mov byte [ebp + edx - 0x14], cl
inc dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x1c]
cmp ecx, 7
jb 0x40df80
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x54], 0xb7df8913
mov dword [ebp - 0x50], 0xb3dab526
mov dword [ebp - 0x4c], 0xbf22b12c
mov dword [ebp - 0x48], 0xbbe8bd2c
mov dword [ebp - 0x44], 0xa732b9d4
mov dword [ebp - 0x40], 0xa3a2a530
mov dword [ebp - 0x20], 0
mov edx, dword [ebp - 0x20]
cmp edx, 0x17
ja 0x40e05e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x20]
movzx esi, byte [ebp + esi - 0x54]
mov edi, edx
xor edi, 0xa5b94e9e
add edx, edx
and edx, 0x4b729d3c
mov ebx, edx
and ebx, edi
xor edx, edi
lea edi, [edx + ebx*2]
mov edx, edi
and edx, esi
xor edi, esi
lea esi, [edi + edx*2]
mov edi, esi
xor edi, edx
mov ebx, edx
not ebx
and esi, ebx
add esi, esi
sub esi, edi
xor edx, esi
and esi, ebx
add esi, esi
sub esi, edx
mov dword [ebp - 0x1c], esi
mov edx, dword [ebp - 0x1c]
add dl, 0xea
mov esi, dword [ebp - 0x20]
mov byte [ebp + esi - 0x54], dl
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
cmp edx, 0x18
jb 0x40e000
lea edx, [ebp - 0x54]
push ecx
push 0
push edx
call eax
mov esi, dword [ebp - 0x30]
mov ecx, 0x44d024
push eax
call fcn.0043cfd0
movzx eax, al
mov eax, dword [eax*4 + 0x447ad4]
mov ecx, 0xad4c59ec
xor ecx, dword [0x447adc]
add eax, ecx
inc eax
jmp eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add al, bh
loopne 0x4687bf
adc byte [eax], al
add byte [eax], al
add dl, ah
lodsd eax, dword [esi]
add edx, dword [eax]
xchg edx, eax
ret 0x1003
add byte [eax], al
add byte [eax], al
add al, bh
loopne 0x4687ff
invalid
add byte [eax], dl
add byte [eax], al
add byte [eax], al
loop 0x4687b3
adc byte [eax], al
add byte [eax], al
add dl, ah
lodsd eax, dword [esi]
add edx, dword [eax]
out 0xc0, al
add edx, dword [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
clc
loopne 0x46881f
adc byte [eax], al
add byte [eax], al
add dl, ah
lodsd eax, dword [esi]
add edx, dword [eax]
sbb al, dl
add edx, dword [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
clc
loopne 0x46883f
adc byte [eax], al
add byte [eax], al
add dl, ah
lodsd eax, dword [esi]
add edx, dword [eax]
sbb al, al
add edx, dword [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
clc
loopne 0x46885f
adc byte [eax], al
add byte [eax], al
add dl, ah
lodsd eax, dword [esi]
add edx, dword [eax]
mov cl, 3
adc byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add al, bh
loopne 0x46887f
adc byte [eax], al
add byte [eax], al
add dl, ah
lodsd eax, dword [esi]
add edx, dword [eax]
invalid