Function at 0x4091c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x10], eax
mov dword [esp + 6], 0x5b2f4d23
xor edx, edx
mov al, 1
nop
nop
nop
movzx edi, word [esp + edx*2 + 6]
mov ebx, edi
xor ebx, 0x650d
and edi, 0x90f3
or edi, edx
xor edi, 0xffde
mov ebp, edx
xor ebp, 0x90f3
or ebp, ebx
and ebp, edi
add ebp, 0x5110
mov word [esp + edx*2 + 6], bp
mov edx, 1
xor ebx, ebx
test al, 1
mov eax, 0
jne 0x4091e0
mov dword [esp + 0xa], 0x2a302a0b
mov word [esp + 0xe], 0x2531
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, word [esp + ebx*2 + 0xa]
lea edx, [ebx + 0x6c020421]
xor edx, eax
mov eax, edx
xor eax, 0x2109
and edx, 0x5ef6
add edx, edx
sub edx, eax
inc edx
mov word [esp + ebx*2 + 0xa], dx
inc ebx
cmp ebx, 3
jne 0x409240
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1a], 0x59febf31
mov dword [esp + 0x1e], 0x5a9a4490
mov dword [esp + 0x22], 0x5fc59bb4
mov dword [esp + 0x26], 0x45ac58b1
mov dword [esp + 0x2a], 0x59ac44ad
mov dword [esp + 0x2e], 0x52e78ea8
mov dword [esp + 0x32], 0x9ba446a7
mov dword [esp + 0x36], 0x57bf57ae
mov dword [esp + 0x3a], 0x57a3a8f7
mov dword [esp + 0x3e], 0x96f253a3
mov word [esp + 0x42], 0xc910
xor ebx, ebx
mov ebp, 0x39d82b3
nop
nop
nop
nop
movzx eax, word [esp + ebx*2 + 0x1a]
lea ecx, [ebx + 0x5c627d4c]
mov edi, ebp
and edi, 0x2940030
and ecx, 0x5820780f
sub ecx, edi
mov edi, ecx
and edi, eax
mov edx, edi
and edx, 0x7ffd
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
xor esi, 2
imul esi, edx
add edi, esi
add ecx, eax
mov eax, edi
xor eax, ecx
not edi
and edi, ecx
add edi, edi
sub edi, eax
add edi, 0x4120
mov word [esp + ebx*2 + 0x1a], di
inc ebx
dec ebp
cmp ebx, 0x15
jne 0x4092d0
mov ebx, dword [esp + 0x58]
add ebx, dword [esp + 0x10]
mov dword [esp + 2], 0x8c6e6110
xor eax, eax
mov cl, 1
nop
nop
movzx edx, word [esp + eax*2 + 2]
lea esi, [eax + 0x22d87e45]
xor esi, edx
add esi, 0x5efb1f65
mov edx, esi
xor edx, 0x118d
and esi, 0x6e72
add esi, esi
sub esi, edx
mov word [esp + eax*2 + 2], si
mov eax, 1
test cl, 1
mov ecx, 0
jne 0x409340
movzx eax, byte [esp + 2]
mov edi, ebx
test al, al
je 0x40939b
lea ecx, [esp + 3]
mov edi, ebx
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409390
mov byte [edi], 0
mov edx, dword [esp + 0x14]
movzx eax, byte [edx + 0x60]
test al, al
je 0x4093bb
lea ecx, [edx + 0x61]
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4093b0
mov byte [edi], 0
movzx eax, byte [esp + 0x1a]
test al, al
je 0x4093db
lea ecx, [esp + 0x1b]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4093d0
mov byte [edi], 0
mov ecx, dword [esp + 0x5c]
movzx eax, byte [ecx]
test al, al
je 0x4093fb
inc ecx
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4093f0
mov byte [edi], 0
movzx eax, byte [esp + 0xa]
test al, al
je 0x40941b
lea ecx, [esp + 0xb]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409410
mov byte [edi], 0
mov ecx, dword [esp + 0x60]
movzx eax, byte [ecx]
test al, al
je 0x40943b
inc ecx
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409430
mov byte [edi], 0
movzx eax, byte [esp + 6]
test al, al
je 0x40945b
lea ecx, [esp + 7]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409450
mov byte [edi], 0
sub edi, ebx
add dword [edx + 0x80], edi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret 0xc