Function at 0x4096b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x20], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x1c], eax
mov word [esp + 8], 0xb0d
mov byte [esp + 0xa], 2
mov word [esp + 0xb], 0
mov byte [esp + 0xd], 0
lea ebx, [esp + 8]
mov ebp, 0xffffffff
nop
nop
movzx edi, byte [ebx]
lea eax, [ebp + 0x3621a100]
or eax, edi
and edi, ebp
not eax
or eax, edi
add eax, 0x385f1ea5
mov edi, eax
and edi, 0xea824ff
xor eax, 0xea824ff
lea eax, [eax + edi*2]
add eax, 0xc7a0e15b
mov edi, eax
and edi, 1
xor eax, 1
lea eax, [eax + edi*2]
mov byte [ebx], al
inc ebx
dec ebp
cmp ebp, 0xfffffff9
jne 0x4096f0
mov dword [esp + 0x10], 0x62606c46
mov word [esp + 0x14], 0x9562
mov dword [esp + 0x16], 0
mov ebx, 0x1b2060e6
mov ebp, 0x19
movzx ecx, byte [esp + ebx - 0x1b2060d6]
mov eax, ebp
and eax, ecx
mov edi, ebx
xor edi, ecx
add edi, ecx
add eax, ecx
not ecx
or ecx, ebx
add eax, ecx
sub eax, edi
mov cl, 0x81
sub cl, al
mov byte [esp + ebx - 0x1b2060d6], cl
inc ebx
dec ebp
cmp ebx, 0x1b2060f0
jne 0x409750
mov dword [esp + 0x24], 0x103b7d73
mov dword [esp + 0x28], 0xb1def16
mov dword [esp + 0x2c], 0x22248f0
mov dword [esp + 0x30], 0xf80b0bf5
mov dword [esp + 0x34], 0xdfb0f
mov dword [esp + 0x38], 0xf3523906
mov dword [esp + 0x3c], 0xbef9fdfd
mov dword [esp + 0x40], 0xe606e8f4
mov dword [esp + 0x44], 0xe2f0a7c1
mov dword [esp + 0x48], 0xbfc5fcf7
mov byte [esp + 0x4c], 0x9c
mov dword [esp + 0x4d], 0
mov byte [esp + 0x51], 0
mov ebx, 0x69
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx - 0x45]
mov ecx, eax
and ecx, ebx
add cl, cl
sub al, cl
movzx eax, al
add eax, ebx
add al, 0xf3
mov byte [esp + ebx - 0x45], al
inc ebx
cmp ebx, 0x97
jne 0x4097f0
mov ebp, dword [esp + 0x68]
add ebp, dword [esp + 0x1c]
mov word [esp], 0xdcdd
mov byte [esp + 2], 0xb6
mov dword [esp + 3], 0
mov byte [esp + 7], 0
mov edi, 0x9e
mov ebx, 0x61
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi - 0x9e]
mov eax, ebx
xor eax, edi
and eax, ecx
xor eax, edi
add al, 0xea
mov byte [esp + edi - 0x9e], al
inc edi
dec ebx
cmp edi, 0xa6
jne 0x409840
movzx ebx, byte [esp]
mov edi, ebp
test bl, bl
je 0x40988b
lea eax, [esp + 1]
mov edi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409880
mov byte [edi], 0
mov ecx, dword [esp + 0x20]
movzx eax, byte [ecx + 0x60]
test al, al
je 0x4098ab
lea ebx, [ecx + 0x61]
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x4098a0
mov byte [edi], 0
movzx eax, byte [esp + 0x24]
test al, al
je 0x4098cb
lea ebx, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x4098c0
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x4098eb
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 0x4098e0
mov byte [edi], 0
movzx eax, byte [esp + 0x10]
test al, al
je 0x40990b
lea esi, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [esi]
inc esi
test al, al
jne 0x409900
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40992b
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 0x409920
mov byte [edi], 0
movzx eax, byte [esp + 8]
test al, al
je 0x40994b
lea edx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x409940
mov byte [edi], 0
mov eax, edi
not eax
and eax, ebp
not ebp
and ebp, edi
sub ebp, eax
add dword [ecx + 0x80], ebp
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret 0xc