Function at 0x408fc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x14], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xa0d
mov dword [esp + 6], 0x9fdf9fb6
mov word [esp + 0xa], 0xecdc
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [eax + 0x5774]
xor cx, word [esp + eax*2 + 6]
add ecx, 0x4460
mov word [esp + eax*2 + 6], cx
inc eax
cmp eax, 3
jne 0x409000
mov dword [esp + 0x1a], 0x5c39fb64
mov dword [esp + 0x1e], 0x5f195105
mov dword [esp + 0x22], 0x5a3a1e09
mov dword [esp + 0x26], 0x500f5d0c
mov dword [esp + 0x2a], 0x5c0b5108
mov dword [esp + 0x2e], 0x27540b0d
mov dword [esp + 0x32], 0x1e0b530a
mov dword [esp + 0x36], 0x23fc2213
mov dword [esp + 0x3a], 0x23f4ecc2
mov dword [esp + 0x3e], 0xe2c127f6
mov word [esp + 0x42], 0xcc8d
xor ebx, ebx
mov edi, 0x69b1e50e
nop
nop
nop
nop
nop
nop
movzx ecx, word [esp + ebx*2 + 0x1a]
mov eax, edi
xor eax, 0x481187e9
mov ebp, edi
or ebp, 0x21a06016
and ebp, eax
mov eax, edi
or eax, 0x581f8fe9
add eax, ebx
add eax, 0x964e1af2
or eax, ebp
xor eax, ecx
mov ecx, eax
xor ecx, 0xa7e07016
mov ebp, eax
and ebp, 0xb270d788
xor ebp, 0x5d9fafff
add ecx, ebp
inc ecx
mov ebp, ecx
and ebp, 0xfffd
mov edx, ecx
and edx, 2
or ecx, 2
imul ecx, edx
xor edx, 2
imul edx, ebp
xor eax, 0x5861
add eax, ecx
add eax, edx
inc eax
mov word [esp + ebx*2 + 0x1a], ax
inc ebx
dec edi
cmp ebx, 0x15
jne 0x409080
mov ebp, dword [esp + 0x58]
add ebp, dword [esp + 0x10]
mov dword [esp + 2], 0x10e1c3cd
xor eax, eax
mov bl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [esp + eax*2 + 2]
mov ecx, eax
or ecx, 0xf8a66fe0
xor ecx, edx
mov edx, ecx
not edx
and edx, 1
add ecx, 0x80ff
or ecx, 1
add ecx, edx
mov word [esp + eax*2 + 2], cx
mov eax, 1
test bl, 1
mov ebx, 0
jne 0x409110
movzx eax, byte [esp + 2]
mov edi, ebp
test al, al
je 0x40916b
lea ebx, [esp + 3]
mov edi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x409160
mov byte [edi], 0
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + 0x60]
test al, al
je 0x40919d
lea ebx, [ecx + 0x61]
mov edx, dword [esp + 0x60]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x409190
jmp 0x4091a1
mov edx, dword [esp + 0x60]
mov byte [edi], 0
movzx eax, byte [esp + 0x1a]
test al, al
je 0x4091cb
lea ebx, [esp + 0x1b]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x4091c0
mov byte [edi], 0
movzx eax, byte [esi]
test al, al
je 0x4091eb
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [esi]
inc esi
test al, al
jne 0x4091e0
mov byte [edi], 0
movzx eax, byte [esp + 6]
test al, al
je 0x40920b
lea esi, [esp + 7]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [esi]
inc esi
test al, al
jne 0x409200
mov byte [edi], 0
movzx eax, byte [edx]
test al, al
je 0x40922b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x409220
mov byte [edi], 0
movzx eax, byte [esp + 0xc]
test al, al
je 0x40924b
lea edx, [esp + 0xd]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x409240
mov byte [edi], 0
sub edi, ebp
add dword [ecx + 0x80], edi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret 0xc