Function at 0x409790
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov edx, dword [esp + 0x6c]
mov esi, dword [esp + 0x68]
mov dword [esp + 0x20], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x1c], eax
mov word [esp + 8], 0x2523
mov byte [esp + 0xa], 0x1e
mov dword [esp + 0xb], 0
mov byte [esp + 0xf], 0
mov ebx, 0xfbf3bc5
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx - 0xfbf3bbd]
mov ecx, ebx
and ecx, eax
add ecx, ecx
sub eax, ecx
add eax, ebx
mov ecx, eax
not ecx
and ecx, 0xda
and eax, 0x25
sub eax, ecx
inc al
mov byte [esp + ebx - 0xfbf3bbd], al
inc ebx
cmp ebx, 0xfbf3bcd
jne 0x4097d0
mov dword [esp + 0x10], 0x22202c06
mov dword [esp + 0x14], 0x3522
mov byte [esp + 0x18], 0
xor edi, edi
xor ebp, ebp
nop
nop
nop
nop
movzx ecx, byte [esp + ebp + 0x10]
mov ebx, edi
and ebx, 0xc
mov eax, ebp
xor eax, 0xa4cb38b6
add eax, ebx
xor eax, ecx
add eax, 0xc807e471
mov ecx, eax
xor ecx, 0xfe
or eax, 1
and ecx, eax
add ecx, eax
mov byte [esp + ebp + 0x10], cl
inc ebp
add edi, 2
cmp ebp, 9
jne 0x409820
mov dword [esp + 0x24], 0x6419dfdd
mov dword [esp + 0x28], 0x617f6966
mov dword [esp + 0x2c], 0x7612246c
mov dword [esp + 0x30], 0x64696d63
mov dword [esp + 0x34], 0x140f6571
mov dword [esp + 0x38], 0x9426316
mov dword [esp + 0x3c], 0x5a1b1f13
mov dword [esp + 0x40], 0xa160c00
mov dword [esp + 0x44], 0x1604496f
mov dword [esp + 0x48], 0x5d771801
mov byte [esp + 0x4c], 0xb0
mov word [esp + 0x4d], 0
mov byte [esp + 0x4f], 0
mov ebx, 0xd92e5dae
nop
nop
nop
nop
movzx eax, byte [esp + ebx + 0x26d1a276]
xor eax, ebx
mov ecx, eax
and ecx, 0x19
xor eax, 0xc2182b99
lea ecx, [eax + ecx*2]
and eax, 1
xor ecx, 1
lea eax, [ecx + eax*2]
mov byte [esp + ebx + 0x26d1a276], al
inc ebx
cmp ebx, 0xd92e5dda
jne 0x4098c0
mov ebp, dword [esp + 0x64]
add ebp, dword [esp + 0x1c]
mov word [esp], 0x6857
mov byte [esp + 2], 0xba
mov word [esp + 3], 0
mov byte [esp + 5], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi]
mov eax, 0x9d8197a0
sub eax, edi
mov ebx, eax
and ebx, 0x9d8091ab
or eax, 0x40674614
add eax, edi
add eax, 0x627e6860
or eax, ebx
xor eax, ecx
lea ecx, [eax + eax]
and ecx, 0x48
xor ecx, 0x40
xor eax, 0xcf
add eax, ecx
inc al
mov byte [esp + edi], al
mov eax, edi
xor eax, 0x85aea574
and edi, 4
lea edi, [eax + edi*2]
add edi, 0x7a515a8d
cmp edi, 6
jb 0x409920
movzx ebx, byte [esp]
mov edi, ebp
test bl, bl
je 0x40998b
lea eax, [esp + 1]
mov edi, ebp
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409980
mov byte [edi], 0
mov ecx, dword [esp + 0x20]
movzx ebx, byte [ecx + 0x60]
test bl, bl
je 0x4099ab
lea eax, [ecx + 0x61]
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x4099a0
mov byte [edi], 0
movzx ebx, byte [esp + 0x24]
test bl, bl
je 0x4099cb
lea eax, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x4099c0
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x4099eb
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x4099e0
mov byte [edi], 0
movzx ebx, byte [esp + 0x10]
test bl, bl
je 0x409a0b
lea eax, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409a00
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x409a2b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x409a20
mov byte [edi], 0
movzx edx, byte [esp + 8]
test dl, dl
je 0x409a4b
lea eax, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], dl
inc edi
movzx edx, byte [eax]
inc eax
test dl, dl
jne 0x409a40
mov byte [edi], 0
sub edi, ebp
add dword [ecx + 0x80], edi
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret 0xc