Function at 0x4099d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x2c], ecx
mov eax, dword [ecx + 0x60]
mov dword [esp + 0x28], eax
mov word [esp + 8], 0x6b65
mov byte [esp + 0xa], 0x94
mov dword [esp + 0xb], 0
mov dword [esp + 0xf], 0
mov byte [esp + 0x13], 0
mov ebx, 0x38dcc86e
mov edi, 0x91
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx - 0x38dcc866]
lea eax, [ebx - 1]
lea edx, [edi + 1]
xor edx, eax
and edx, ecx
xor edx, eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x30]
add al, 5
mov byte [esp + ebx - 0x38dcc866], al
movzx eax, byte [esp + ebx - 0x38dcc865]
mov ecx, edi
xor ecx, ebx
and ecx, eax
xor ecx, ebx
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x30]
add al, 5
mov byte [esp + ebx - 0x38dcc865], al
add ebx, 2
add edi, 0xfffffffe
cmp edi, 0x85
jne 0x409a20
mov dword [esp + 0x18], 0x949a9664
mov word [esp + 0x1c], 0x9d98
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov byte [esp + 0x26], 0
mov edi, 0xbf777c6b
mov ebx, 0x40888394
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 0x408883ad]
mov eax, ebx
xor eax, 0xe70c90c6
mov edx, ebx
or edx, 0x800319
and edx, eax
mov eax, edi
and eax, 0xa7041046
or eax, 0x18f36f39
xor eax, edx
xor eax, ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
add al, 0x13
mov byte [esp + edi + 0x408883ad], al
inc edi
dec ebx
cmp edi, 0xbf777c7a
jne 0x409ab0
mov dword [esp + 0x30], 0x86804c4d
mov dword [esp + 0x34], 0x8282b0bc
mov dword [esp + 0x38], 0x8ffa80bd
mov dword [esp + 0x3c], 0x8a878e83
mov dword [esp + 0x40], 0xc2f78382
mov dword [esp + 0x44], 0xf8d51f19
mov dword [esp + 0x48], 0xf5ff8df6
mov dword [esp + 0x4c], 0xf6da3088
mov dword [esp + 0x50], 0x90ed9193
mov dword [esp + 0x54], 0xe8ef91ed
mov dword [esp + 0x58], 0xed2ad3e6
mov dword [esp + 0x5c], 0x22e39fe3
mov dword [esp + 0x60], 0xd2a6d0d4
mov dword [esp + 0x64], 0xd6d815ef
mov dword [esp + 0x68], 0x19e7dcd5
mov byte [esp + 0x6c], 0x3c
mov dword [esp + 0x6d], 0
mov dword [esp + 0x71], 0
mov word [esp + 0x75], 0
mov edi, 0xb1
nop
nop
nop
movzx eax, byte [esp + edi - 0x81]
lea ecx, [edi - 1]
and ecx, eax
add ecx, ecx
sub eax, ecx
add eax, edi
add eax, 0xe9cb0dff
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x30
mov byte [esp + edi - 0x81], al
cmp edi, 0xf7
je 0x409be8
movzx eax, byte [esp + edi - 0x80]
mov ecx, edi
and ecx, eax
add ecx, ecx
sub eax, ecx
add eax, edi
add eax, 0xe9cb0e00
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x30
mov byte [esp + edi - 0x80], al
add edi, 2
jmp 0x409b90
mov eax, dword [ebp + 8]
add eax, dword [esp + 0x28]
movzx ecx, byte [esp + 0x30]
mov edi, eax
test cl, cl
je 0x409c0b
lea ebx, [esp + 0x31]
mov edi, eax
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x409c00
mov byte [edi], 0
movzx ecx, byte [esi]
test cl, cl
mov edx, dword [ebp + 0x10]
je 0x409c2b
inc esi
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409c20
mov byte [edi], 0
movzx ecx, byte [esp + 0x18]
test cl, cl
je 0x409c4b
lea esi, [esp + 0x19]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409c40
mov byte [edi], 0
movzx ecx, byte [edx]
test cl, cl
je 0x409c6b
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 0x409c60
mov byte [edi], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x409c8b
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 0x409c80
mov byte [edi], 0
sub edi, eax
mov eax, dword [esp + 0x2c]
add dword [eax + 0x60], edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc