Function at 0x4097f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov esi, dword [esp + 0x98]
mov dword [esp], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x14], 0xad9096f9
mov dword [esp + 0x18], 0xcaae959f
mov dword [esp + 0x1c], 0x868eb490
mov dword [esp + 0x20], 0xb999dbf2
mov dword [esp + 0x24], 0x898b94b8
mov dword [esp + 0x28], 0x81848c87
mov dword [esp + 0x2c], 0xb8f987fd
mov dword [esp + 0x30], 0xb8b5b1aa
mov dword [esp + 0x34], 0x161c1088
mov word [esp + 0x38], 0x31a
mov dword [esp + 0x3a], 0
mov edi, 0xc9c10349
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi + 0x363efccb]
xor ebx, edi
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
add bl, 0x92
mov byte [esp + edi + 0x363efccb], bl
inc edi
cmp edi, 0xc9c10373
jne 0x409870
mov dword [esp + 0xc], 0x57405c66
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
xor ebx, ebx
nop
nop
nop
mov eax, ebx
add al, 0x8e
xor al, byte [esp + ebx + 0xc]
add al, 0x3a
mov byte [esp + ebx + 0xc], al
inc ebx
cmp ebx, 7
jne 0x4098b0
mov dword [esp + 0x44], 0xbc611b1d
mov dword [esp + 0x48], 0xb943b1ba
mov dword [esp + 0x4c], 0xc21e04cc
mov dword [esp + 0x50], 0xccc1cdcf
mov dword [esp + 0x54], 0xcccbc5c9
mov dword [esp + 0x58], 0x31761fca
mov dword [esp + 0x5c], 0x16d7dbd7
mov dword [esp + 0x60], 0x2eda2c28
mov dword [esp + 0x64], 0x22dc610b
mov dword [esp + 0x68], 0x650b20d9
mov dword [esp + 0x6c], 0x1ee6e01e
mov dword [esp + 0x70], 0x195e365e
mov dword [esp + 0x74], 0xed17ede9
mov dword [esp + 0x78], 0x3a13e815
mov word [esp + 0x7c], 0x694a
mov dword [esp + 0x7e], 0
mov word [esp + 0x82], 0
xor edi, edi
mov ecx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi + 0x44]
lea ebx, [edi + 0x400578b8]
lea esi, [edi + 0x38]
or esi, ebx
or ebx, eax
and esi, eax
sub ebx, esi
add ebx, 0x4b4bf961
mov eax, ebx
and eax, 6
add eax, eax
xor ebx, 0xf9
sub eax, ebx
mov byte [esp + edi + 0x44], al
mov eax, edi
and eax, 1
xor edi, 1
lea edi, [edi + eax*2]
cmp edi, 0x40
jb 0x409960
add ecx, edx
mov word [esp + 4], 0xe4e5
mov byte [esp + 6], 0x12
mov word [esp + 7], 0
mov edx, 0xfc
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx - 0xf8]
mov eax, edx
and eax, ebx
mov ebp, eax
and ebp, 2
mov esi, eax
or esi, 0xfffffffd
inc esi
mov edi, eax
and edi, 0xfffffffd
imul edi, esi
or eax, 2
imul eax, ebp
add edi, ebx
sub edi, eax
lea eax, [edx + edi]
lea ebx, [edx + edi]
add ebx, 0xa19c24fe
xor ebx, 0xa76b01eb
lea eax, [eax*2 + 0x433849fc]
and eax, 0xb129fc28
sub ebx, eax
lea eax, [ebx + ebx]
sub ebx, eax
inc bl
mov byte [esp + edx - 0xf8], bl
inc edx
cmp edx, 0x101
jne 0x4099c0
movzx ebx, byte [esp + 4]
mov edx, ecx
test bl, bl
je 0x409a4b
lea edi, [esp + 5]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409a40
mov byte [edx], 0
mov eax, dword [esp]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x409a7d
lea edi, [eax + 0x61]
mov eax, dword [esp + 0x9c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409a70
jmp 0x409a84
mov eax, dword [esp + 0x9c]
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x409aab
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409aa0
mov byte [edx], 0
movzx ebx, byte [eax]
test bl, bl
mov dword [esp + 0x40], ecx
je 0x409acb
inc eax
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409ac0
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x409aeb
lea edi, [esp + 0xd]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409ae0
mov byte [edx], 0
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x409b0b
lea edi, [esp + 0x15]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409b00
mov byte [edx], 0
mov eax, dword [esp + 0xa4]
mov ecx, eax
mov ebx, eax
shr ecx, 2
mov esi, dword [esp + 0xa0]
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
and ebx, 0xfffffffc
add edx, ebx
add ebx, esi
mov ecx, eax
mov esi, eax
shr ecx, 1
and ecx, 1
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, esi
mov eax, esi
and eax, 2
add edx, eax
test cl, 1
je 0x409b5b
movzx eax, byte [ebx + eax]
mov byte [edx], al
inc edx
mov dword [esp + 0x44], 0xe1e3efed
mov byte [esp + 0x48], 0xf4
mov dword [esp + 0x49], 0
mov dword [esp + 0x4c], 0
xor ecx, ecx
xor edi, edi
nop
nop
nop
nop
mov eax, ecx
and eax, 0xc
mov esi, edi
xor esi, 0x2cb45356
add esi, eax
mov eax, esi
xor eax, 0x81
or esi, 0x7e
and esi, eax
mov ebx, edi
and ebx, 1
or ebx, 0x52
xor ebx, esi
xor bl, byte [esp + edi + 0x44]
xor bl, 0x52
add bl, 0x52
mov byte [esp + edi + 0x44], bl
inc edi
add ecx, 2
cmp edi, 0xc
jne 0x409b80
mov dword [esp + 0x14], 0x52533735
mov byte [esp + 0x18], 0x3c
mov dword [esp + 0x19], 0
mov word [esp + 0x1d], 0
mov ecx, 0x2618d10a
mov edi, 0xb3ce5df5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x2618d0f6]
lea ebp, [edi + 0x4c31a300]
mov eax, ebp
and eax, 0x97
mov ebx, ecx
and ebx, 8
or ebx, eax
xor ebx, 0x68
and ebx, edi
xor ebx, ebp
not ebx
and ebx, esi
xor ebx, ebp
mov al, 0xcd
sub al, bl
mov byte [esp + ecx - 0x2618d0f6], al
inc ecx
dec edi
cmp ecx, 0x2618d115
jne 0x409bf0
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x409c4d
lea edi, [esp + 0x15]
mov eax, dword [esp]
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409c40
jmp 0x409c50
mov eax, dword [esp]
mov byte [edx], 0
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x409c6b
lea edi, [eax + 0x61]
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409c60
mov byte [edx], 0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x409c8b
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409c80
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