Function at 0x409a00
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov esi, dword [esp + 0x9c]
mov dword [esp], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x14], 0xffe4e633
mov dword [esp + 0x18], 0x3ae2fbf1
mov dword [esp + 0x1c], 0xf6fae004
mov dword [esp + 0x20], 0xeb07452e
mov dword [esp + 0x24], 0xfb0100ec
mov dword [esp + 0x28], 0x13080009
mov dword [esp + 0x2c], 0xccf11cf
mov dword [esp + 0x30], 0xf40b0ff6
mov dword [esp + 0x34], 0xa6a8a41c
mov word [esp + 0x38], 0x8db6
mov dword [esp + 0x3a], 0
mov byte [esp + 0x3e], 0
mov eax, 0xec
mov ebp, 0xd97c1b13
movzx ebx, byte [esp + eax - 0xd8]
mov edi, eax
xor edi, ebp
and edi, ebx
xor edi, ebp
mov ebx, edi
not ebx
and ebx, 0x3f6c8763
xor edi, 0xc093789c
lea edi, [edi + ebx*2]
mov ebx, edi
and ebx, 0xb
xor edi, 0x1dd8ca8b
lea ebx, [edi + ebx*2]
and edi, 1
xor ebx, 1
lea ebx, [ebx + edi*2]
add bl, 0x75
mov byte [esp + eax - 0xd8], bl
inc eax
dec ebp
cmp eax, 0x117
jne 0x409a80
mov dword [esp + 0xc], 0x91e4e0fe
mov word [esp + 0x10], 0
mov edi, 0x93305325
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi + 0x6ccface7]
xor eax, edi
mov ebx, eax
and ebx, 1
xor eax, 1
lea eax, [eax + ebx*2]
add al, 0x46
mov byte [esp + edi + 0x6ccface7], al
inc edi
cmp edi, 0x9330532b
jne 0x409af0
mov dword [esp + 0x44], 0x44692f2d
mov dword [esp + 0x48], 0x414fb946
mov dword [esp + 0x4c], 0x361204bc
mov dword [esp + 0x50], 0xc4393dc3
mov dword [esp + 0x54], 0x343fc531
mov dword [esp + 0x58], 0x39620336
mov dword [esp + 0x5c], 0x6a2bcf33
mov dword [esp + 0x60], 0x3ad63c20
mov dword [esp + 0x64], 0x3624791f
mov dword [esp + 0x68], 0x6d172821
mov dword [esp + 0x6c], 0x121a282a
mov dword [esp + 0x70], 0x114a2a52
mov dword [esp + 0x74], 0x151b1d11
mov dword [esp + 0x78], 0x261f1005
mov word [esp + 0x7c], 0x615e
mov dword [esp + 0x7e], 0
mov byte [esp + 0x82], 0
xor ebx, ebx
mov ecx, dword [esp + 0x98]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x36
xor al, byte [esp + ebx + 0x44]
add al, 0xf2
mov byte [esp + ebx + 0x44], al
inc ebx
cmp ebx, 0x3f
jne 0x409bb0
add ecx, edx
mov word [esp + 4], 0x28d7
mov byte [esp + 6], 0xfa
mov word [esp + 7], 0
mov byte [esp + 9], 0
mov edx, 0x492622ff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx - 0x492622fb]
xor ebx, edx
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
add bl, 4
mov byte [esp + edx - 0x492622fb], bl
inc edx
cmp edx, 0x49262305
jne 0x409bf0
movzx ebx, byte [esp + 4]
mov edx, ecx
test bl, bl
je 0x409c3b
lea edi, [esp + 5]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409c30
mov byte [edx], 0
mov eax, dword [esp]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x409c5b
lea edi, [eax + 0x61]
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409c50
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x409c7b
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409c70
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
mov dword [esp + 0x40], ecx
je 0x409c9b
inc esi
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409c90
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x409ccd
lea edi, [esp + 0xd]
mov esi, dword [esp + 0xa4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409cc0
jmp 0x409cd4
mov esi, dword [esp + 0xa4]
mov byte [edx], 0
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x409cfb
lea edi, [esp + 0x15]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409cf0
mov byte [edx], 0
mov ecx, esi
shr ecx, 2
mov ebx, dword [esp + 0xa0]
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ebp, esi
and ebp, 0xfffffffc
add edx, ebp
add ebp, ebx
mov ebx, esi
and ebx, 3
mov ecx, ebx
shr ecx, 1
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
and esi, 2
add edx, esi
mov eax, ebx
xor eax, 0xfffffffe
or ebx, 1
and ebx, eax
je 0x409d6a
movzx eax, byte [ebp + esi]
mov byte [edx], al
cmp ebx, 1
jne 0x409d4d
inc edx
jmp 0x409d6a
movzx eax, byte [ebp + esi + 1]
mov byte [edx + 1], al
cmp ebx, 2
jne 0x409d5f
add edx, 2
jmp 0x409d6a
movzx eax, byte [ebp + esi + 2]
mov byte [edx + 2], al
add edx, 3
mov dword [esp + 0x44], 0x4f494d4f
mov byte [esp + 0x48], 0x38
mov dword [esp + 0x49], 0
mov byte [esp + 0x4d], 0
mov ecx, 0x8b
mov esi, 0x74
nop
nop
movzx ebx, byte [esp + ecx - 0x47]
mov eax, esi
or eax, ebx
not ebx
or ebx, ecx
and ebx, eax
mov al, 0x48
sub al, bl
mov byte [esp + ecx - 0x47], al
inc ecx
dec esi
cmp ecx, 0x95
jne 0x409d90
mov dword [esp + 0x14], 0xbebf9b9d
mov byte [esp + 0x18], 0xe4
mov dword [esp + 0x19], 0
mov dword [esp + 0x1c], 0
xor ecx, ecx
movzx eax, byte [esp + ecx + 0x14]
lea esi, [ecx + 0x634e8558]
mov ebx, 0xa7
sub ebx, ecx
xor ebx, esi
and ebx, eax
xor ebx, esi
mov eax, 0xb8
sub eax, ebx
not ebx
and ebx, 1
or eax, 1
sub ebx, eax
mov byte [esp + ecx + 0x14], bl
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0xc
jb 0x409dd0
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x409e2d
lea esi, [esp + 0x15]
mov eax, dword [esp]
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409e20
jmp 0x409e30
mov eax, dword [esp]
mov byte [edx], 0
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x409e4b
lea esi, [eax + 0x61]
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409e40
mov byte [edx], 0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x409e6b
lea esi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409e60
mov byte [edx], 0
sub edx, dword [esp + 0x40]
add dword [eax + 0x80], edx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0x10