Function at 0x409270
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x70
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
mov dword [esp], edx
mov dword [esp + 8], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x10], 0x7bca7090
mov dword [esp + 0x14], 0xb2c271b0
mov dword [esp + 0x18], 0x4ad866a3
mov dword [esp + 0x1c], 0x7bab8f83
mov dword [esp + 0x20], 0x77af4edf
mov dword [esp + 0x24], 0x7bd04ad0
mov dword [esp + 0x28], 0x709d6790
mov dword [esp + 0x2c], 0x4ca775a3
mov dword [esp + 0x30], 0x927e92d7
mov word [esp + 0x34], 0xef7f
mov edi, 0x570b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, word [esp + edi*2 - 0xae06]
mov ebp, edi
and ebp, ebx
add ebp, ebp
sub ebx, ebp
add ebx, edi
add ebx, 0x47a8
mov word [esp + edi*2 - 0xae06], bx
inc edi
cmp edi, 0x571e
jne 0x4092f0
mov dword [esp + 0xc], 0xa0d22
mov dword [esp + 0x36], 0x8248fc87
mov dword [esp + 0x3a], 0x81688762
mov dword [esp + 0x3e], 0x9c4bc01a
mov dword [esp + 0x42], 0x865e8323
mov dword [esp + 0x46], 0x825a875b
mov dword [esp + 0x4a], 0x9895cd5a
mov dword [esp + 0x4e], 0xc05a8559
mov dword [esp + 0x52], 0x942d945c
mov dword [esp + 0x56], 0x9455d361
mov dword [esp + 0x5a], 0xd5609851
mov dword [esp + 0x5e], 0x98539c58
mov dword [esp + 0x62], 0x9881cd82
mov dword [esp + 0x66], 0x81469f4b
mov dword [esp + 0x6a], 0xb0408045
mov word [esp + 0x6e], 0xf284
xor edi, edi
xor esi, esi
nop
nop
nop
nop
mov ebp, edi
and ebp, 0x34
mov ebx, esi
xor ebx, 0x705a
add ebx, ebp
xor bx, word [esp + esi*2 + 0x36]
add ebx, 0x7d30
mov word [esp + esi*2 + 0x36], bx
inc esi
add edi, 2
cmp esi, 0x1d
jne 0x4093a0
add dword [esp], edx
mov dword [esp + 4], 0x9c88cf4a
xor edx, edx
mov bl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, word [esp + edx*2 + 4]
mov esi, 0x70237c10
sub esi, edx
lea edi, [esi + esi]
not edi
add edi, esi
lea esi, [edx + 0x83ef]
or esi, edi
and esi, ebp
lea edi, [edx - 0x70237c11]
or edi, ebp
xor edi, esi
mov esi, edi
and esi, 0x1f79
xor esi, 0x70201f79
and edi, 0x8118e086
sub edi, esi
mov esi, edi
and esi, 1
xor edi, 1
lea esi, [edi + esi*2]
mov word [esp + edx*2 + 4], si
mov edx, 1
test bl, 1
mov ebx, 0
jne 0x4093e0
movzx ebx, byte [esp + 4]
mov edx, dword [esp]
test bl, bl
je 0x40945b
lea edi, [esp + 5]
mov edx, dword [esp]
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409450
mov byte [edx], 0
mov ecx, dword [esp + 8]
movzx ebx, byte [ecx + 0x60]
test bl, bl
je 0x40947b
lea edi, [ecx + 0x61]
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409470
mov byte [edx], 0
movzx ebx, byte [esp + 0x36]
test bl, bl
je 0x40949b
lea edi, [esp + 0x37]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409490
mov byte [edx], 0
movzx ebx, byte [eax]
test bl, bl
je 0x4094bb
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x4094b0
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x4094db
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 0x4094d0
mov byte [edx], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x4094fb
lea edi, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x4094f0
mov byte [edx], 0
mov eax, dword [esp + 0x90]
mov ecx, eax
shr ecx, 2
mov ebp, dword [esp + 0x8c]
mov esi, ebp
mov edi, edx
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ebx, eax
and ebx, 0xfffffffc
add edx, ebx
add ebx, ebp
mov ecx, eax
shr ecx, 1
and ecx, 1
mov esi, ebx
mov edi, edx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov ecx, eax
and ecx, 2
add edx, ecx
test al, 1
je 0x409548
movzx ecx, byte [ebx + ecx]
mov byte [edx], cl
inc edx
mov dword [esp + 0x36], 0x45104511
mov word [esp + 0x3a], 0x531e
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [esp + ecx*2 + 0x36]
lea ebx, [ecx + 0x50c4f4fc]
xor ebx, esi
lea edi, [ebx + 0x79d8581f]
mov esi, edi
xor esi, 0x7ffffffe
mov ebp, edi
or ebp, 1
and ebp, esi
add ebp, ebp
and ebx, 1
mov esi, ebp
and esi, edi
and edi, 0xfffe
or edi, ebx
or edi, ebp
add edi, esi
mov word [esp + ecx*2 + 0x36], di
inc ecx
cmp ecx, 3
jne 0x409560
mov dword [esp + 0x10], 0x75f81099
mov word [esp + 0x14], 0x2a96
xor ecx, ecx
mov di, 0x4ccb
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edi
xor si, word [esp + ecx*2 + 0x10]
mov ebx, 0x665f
sub ebx, esi
mov word [esp + ecx*2 + 0x10], bx
inc ecx
dec edi
cmp ecx, 3
jne 0x4095c0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x4095fd
lea edi, [esp + 0x11]
mov eax, dword [esp + 8]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x4095f0
jmp 0x409601
mov eax, dword [esp + 8]
mov byte [edx], 0
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x40961b
lea edi, [eax + 0x61]
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409610
mov byte [edx], 0
movzx ecx, byte [esp + 0x36]
test cl, cl
je 0x40963b
lea edi, [esp + 0x37]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409630
mov byte [edx], 0
sub edx, dword [esp]
add dword [eax + 0x80], edx
add esp, 0x70
pop esi
pop edi
pop ebx
pop ebp
ret 0x10