Function at 0x4099e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x78
mov eax, dword [ebp + 8]
add eax, dword [ecx + 0x60]
mov word [esp + 0x18], 0x30d
mov byte [esp + 0x1a], 0x1a
mov dword [esp + 0x1b], 0
mov dword [esp + 0x1f], 0
mov dword [esp + 0x22], 0
mov dword [esp + 8], 0
mov edx, dword [esp + 8]
cmp edx, 0xd
ja 0x409a86
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 8]
mov esi, dword [esp + 8]
movzx edi, byte [esp + esi + 0x18]
lea ebx, [edx + 0xafa6dd4]
lea esi, [edx + edi]
add esi, 0xafa6dd4
add edx, 0xd4
or edx, ebx
and ebx, edi
and edx, edi
add edx, ebx
mov edi, esi
not edi
and edi, edx
not edx
and edx, esi
sub edx, edi
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x28]
add dl, 0x34
mov esi, dword [esp + 8]
mov byte [esp + esi + 0x18], dl
inc dword [esp + 8]
mov edx, dword [esp + 8]
cmp edx, 0xe
jb 0x409a30
mov dword [esp + 8], 0x40206e4
mov word [esp + 0xc], 0xfd00
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0xb
ja 0x409b0c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 8]
mov edi, edx
and edi, 0x3441637f
xor edx, 0x3441637f
lea edx, [edx + edi*2]
lea edi, [edx + esi]
and edx, esi
add edx, edx
mov esi, edi
not esi
and esi, edx
not edx
and edx, edi
sub edx, esi
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x28]
add dl, 0x87
mov esi, dword [esp]
mov byte [esp + esi + 8], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0xc
jb 0x409ac0
mov dword [esp + 0x28], 0x9c9ad6d9
mov dword [esp + 0x2c], 0x9898cac2
mov dword [esp + 0x30], 0xa7b0aac9
mov dword [esp + 0x34], 0xa0afa0b3
mov dword [esp + 0x38], 0xf8afbbb4
mov dword [esp + 0x3c], 0xbec90705
mov dword [esp + 0x40], 0xbdb7a5a0
mov dword [esp + 0x44], 0xbcd0faa6
mov dword [esp + 0x48], 0xaea9a9a3
mov dword [esp + 0x4c], 0xaeb7a9b1
mov dword [esp + 0x50], 0x45001bb0
mov dword [esp + 0x54], 0x84b5753
mov dword [esp + 0x58], 0x485c4a42
mov dword [esp + 0x5c], 0x4c420d17
mov dword [esp + 0x60], 0x110f5641
mov byte [esp + 0x64], 0xf2
mov dword [esp + 0x65], 0
mov dword [esp + 0x69], 0
mov word [esp + 0x6d], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0x46
ja 0x409c06
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov esi, dword [esp + 4]
movzx esi, byte [esp + esi + 0x28]
lea edi, [edx + 0x6bd6b1d7]
add edx, 0xd7
and edx, esi
or edi, esi
sub edi, edx
mov dword [esp], edi
mov edx, dword [esp]
mov esi, edx
or esi, 0x1e
and edx, 0x1e
add edx, esi
inc dl
mov esi, dword [esp + 4]
mov byte [esp + esi + 0x28], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0x47
jb 0x409bc0
mov esi, dword [ebp + 0xc]
movzx ebx, byte [esp + 0x28]
mov edx, eax
test bl, bl
je 0x409c2b
lea edi, [esp + 0x29]
mov edx, eax
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409c20
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
je 0x409c4b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409c40
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx ebx, byte [esp + 8]
test bl, bl
je 0x409c6b
lea edi, [esp + 9]
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409c60
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
je 0x409c8b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409c80
mov byte [edx], 0
movzx ebx, byte [esp + 0x18]
test bl, bl
je 0x409cab
lea esi, [esp + 0x19]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409ca0
mov byte [edx], 0
mov esi, edx
xor esi, eax
not eax
and eax, edx
add eax, eax
sub eax, esi
add dword [ecx + 0x60], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc