Function at 0x409380
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x58]
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0xc], eax
mov word [esp + 3], 0xcfc9
mov byte [esp + 5], 0xc6
mov ebx, 0x435f06e4
nop
nop
movzx ebp, byte [esp + ebx - 0x435f06e1]
xor ebp, ebx
mov edi, ebp
and edi, 0x5f
xor ebp, 0xdf
lea ecx, [edi*2]
add ecx, ebp
inc cl
mov byte [esp + ebx - 0x435f06e1], cl
inc ebx
cmp ebx, 0x435f06e7
jne 0x4093b0
mov dword [esp + 6], 0x8e888ca2
mov word [esp + 0xa], 0x858e
mov ebx, 0xa401a80
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx - 0xa401a7a]
xor ecx, ebx
lea edi, [ecx + ecx]
xor ecx, 0xadff2bff
mov ebp, edi
and ebp, ecx
xor ecx, edi
lea ecx, [ecx + ebp*2]
inc cl
mov byte [esp + ebx - 0xa401a7a], cl
inc ebx
cmp ebx, 0xa401a86
jne 0x409400
mov dword [esp + 0x17], 0x8ee33533
mov dword [esp + 0x1b], 0x8b81b78c
mov dword [esp + 0x1f], 0x80eccab2
mov dword [esp + 0x23], 0xbe83bbb9
mov dword [esp + 0x27], 0xbeb9bb87
mov dword [esp + 0x2b], 0xb3f4c9bc
mov dword [esp + 0x2f], 0xf4b585b9
mov dword [esp + 0x33], 0xbc88babe
mov dword [esp + 0x37], 0xa0aeffc5
mov dword [esp + 0x3b], 0xe7d9a6af
mov byte [esp + 0x3f], 6
mov ebp, 0x376ac4e
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebp - 0x376ac37]
mov ebx, ebp
and ebx, 0x36084ff
or ecx, 0x9c972800
or ebx, 0x4810000
xor ebx, ecx
lea ecx, [ebx + 0x244a9d8f]
lea edi, [ebx*2 + 0x48953b1e]
and edi, 2
mov eax, edi
and eax, ecx
and ecx, 0xfe
and ebx, 1
or ebx, ecx
or ebx, edi
add ebx, eax
mov byte [esp + ebp - 0x376ac37], bl
inc ebp
cmp ebp, 0x376ac77
jne 0x409490
mov ebp, dword [esp + 0x54]
add ebp, dword [esp + 0xc]
mov word [esp], 0x9b98
mov byte [esp + 2], 0x67
mov edi, 0x306dcca4
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi - 0x306dcca4]
lea ecx, [edi - 0x306dcc97]
and ecx, eax
add ecx, ecx
sub eax, ecx
add eax, edi
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov byte [esp + edi - 0x306dcca4], al
inc edi
cmp edi, 0x306dcca7
jne 0x409500
movzx ebx, byte [esp]
mov eax, ebp
mov edi, ebp
test bl, bl
je 0x40955c
lea ebp, [esp + 1]
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409550
mov byte [edi], 0
mov ecx, dword [esp + 0x10]
movzx ebx, byte [ecx + 0x60]
test bl, bl
je 0x40957c
lea ebp, [ecx + 0x61]
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409570
mov byte [edi], 0
movzx ebx, byte [esp + 0x17]
test bl, bl
je 0x40959c
lea ebp, [esp + 0x18]
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409590
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x4095bd
inc esi
mov ebp, eax
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x4095b0
jmp 0x4095bf
mov ebp, eax
mov byte [edi], 0
movzx ebx, byte [esp + 6]
test bl, bl
je 0x4095db
lea esi, [esp + 7]
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x4095d0
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x4095fb
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 0x4095f0
mov byte [edi], 0
movzx edx, byte [esp + 3]
test dl, dl
je 0x40961b
lea esi, [esp + 4]
nop
nop
nop
nop
nop
mov byte [edi], dl
inc edi
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x409610
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, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret 0xc