Function at 0x409360
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x70
mov edi, dword [esp + 0x88]
mov dword [esp + 0xc], ecx
mov ebp, dword [ecx + 0x80]
mov dword [esp + 0x10], 0x323b3b60
mov dword [esp + 0x14], 0x87cdc642
mov dword [esp + 0x18], 0xbbcdd5af
mov dword [esp + 0x1c], 0xc6b07095
mov dword [esp + 0x20], 0xceb6b5c7
mov dword [esp + 0x24], 0xded7adca
mov dword [esp + 0x28], 0xd190c494
mov dword [esp + 0x2c], 0xa1a4daad
mov dword [esp + 0x30], 0x7b7f79d7
mov word [esp + 0x34], 0x787d
mov eax, 0x7b
mov ecx, 0x84
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x6b]
mov edx, ecx
xor edx, eax
and edx, ebx
xor edx, eax
add dl, 0x28
mov byte [esp + eax - 0x6b], dl
inc eax
dec ecx
cmp eax, 0xa1
jne 0x4093e0
mov dword [esp + 4], 0x7e474159
mov ebx, 0xd7061d63
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx + 0x28f9e2a1]
mov edx, eax
mov esi, eax
and edx, ebx
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0x65
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, ebx
add al, 0xe8
mov byte [esp + ebx + 0x28f9e2a1], al
inc ebx
cmp ebx, 0xd7061d67
jne 0x409410
mov dword [esp + 0x36], 0xebd0080c
mov dword [esp + 0x3a], 0xd6f2e2eb
mov dword [esp + 0x3e], 0xd5ef17dd
mov dword [esp + 0x42], 0xd3d0dede
mov dword [esp + 0x46], 0xdbdad6d8
mov dword [esp + 0x4a], 0xde07ecdb
mov dword [esp + 0x4e], 0x1c6c8c6
mov dword [esp + 0x52], 0xd1cbdfd9
mov dword [esp + 0x56], 0xd5cd12fa
mov dword [esp + 0x5a], 0xeafad3c8
mov dword [esp + 0x5e], 0x2937332f
mov dword [esp + 0x62], 0x26ef05ef
mov dword [esp + 0x66], 0x3a263e38
mov dword [esp + 0x6a], 0x15223b24
mov word [esp + 0x6e], 0xdafb
xor eax, eax
movzx edx, byte [esp + eax + 0x36]
mov ecx, 0x26
sub ecx, eax
lea ebx, [eax + 0x31fe77d9]
xor ecx, ebx
and ecx, edx
xor ecx, ebx
add ecx, 0x2a4e3b9c
mov edx, ecx
and edx, 0xf00c4137
xor ecx, 0x700c4137
lea esi, [ecx + edx*2]
mov ebx, esi
not ebx
and ebx, 0x9c
mov edx, esi
and edx, 0x63
sub edx, ebx
add ecx, ecx
and ecx, 2
and esi, ecx
or ecx, 1
xor ecx, edx
lea ecx, [ecx + esi*2]
mov byte [esp + eax + 0x36], cl
mov ecx, eax
and ecx, 0x1a
or eax, 0x6feb46da
add eax, ecx
add eax, 0x9014b927
cmp eax, 0x3a
jb 0x4094d0
mov esi, dword [esp + 0x84]
add esi, ebp
mov word [esp + 1], 0xa9ae
mov byte [esp + 3], 0x75
xor eax, eax
mov ecx, eax
add cl, 0x2b
xor cl, byte [esp + eax + 1]
add cl, 0xa8
mov byte [esp + eax + 1], cl
inc eax
cmp eax, 3
jne 0x409550
movzx ecx, byte [esp + 1]
mov eax, esi
test cl, cl
mov ebx, dword [esp + 0xc]
je 0x40958b
lea edx, [esp + 2]
mov eax, esi
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409580
mov byte [eax], 0
movzx ecx, byte [ebx + 0x60]
test cl, cl
je 0x4095ab
lea edx, [ebx + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4095a0
mov byte [eax], 0
movzx ecx, byte [esp + 0x36]
test cl, cl
je 0x4095cb
lea edx, [esp + 0x37]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4095c0
mov byte [eax], 0
movzx ecx, byte [edi]
test cl, cl
je 0x4095eb
inc edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x4095e0
mov byte [eax], 0
movzx ecx, byte [esp + 4]
test cl, cl
je 0x40960b
lea edx, [esp + 5]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409600
mov byte [eax], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
mov dword [esp + 8], esi
je 0x40962b
lea edx, [esp + 0x11]
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409620
mov byte [eax], 0
mov esi, dword [esp + 0x90]
mov ecx, esi
shr ecx, 2
mov ebp, dword [esp + 0x8c]
mov edx, ebp
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ebx, esi
and ebx, 0xfffffffc
add eax, ebx
add ebx, ebp
mov ecx, esi
not ecx
or ecx, 3
lea edx, [esi + ecx]
inc edx
mov ecx, edx
shr ecx, 1
mov esi, ebx
mov edi, eax
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov ecx, edx
and ecx, 0xfffffffe
add eax, ecx
test dl, 1
je 0x409681
movzx ecx, byte [ebx + ecx]
mov byte [eax], cl
inc eax
mov dword [esp + 0x36], 0xeae2e4e0
mov byte [esp + 0x3a], 0xf1
xor edi, edi
mov ecx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edi + 0x36]
lea ebx, [edi - 0x56477cab]
and ebx, 0xa1300256
mov edx, 0x16477caa
sub edx, edi
and edx, 0x10431809
or edx, ebx
xor edx, esi
mov esi, edx
xor esi, 9
add esi, 0x57
and edx, 1
xor esi, 1
lea edx, [esi + edx*2]
mov byte [esp + edi + 0x36], dl
mov edx, edi
xor ecx, 1
add ecx, edi
and edi, 1
and edx, 6
sub ecx, edx
add ecx, edi
mov edi, ecx
cmp ecx, 5
jb 0x4096a0
mov dword [esp + 0x10], 0xa6a78385
mov byte [esp + 0x14], 0x8c
mov ecx, 0x7e
mov edi, 0x81
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edi
and esi, 0xb6
mov edx, ecx
and edx, 0x49
sub edx, esi
xor dl, byte [esp + ecx - 0x6e]
add dl, 0xc0
mov byte [esp + ecx - 0x6e], dl
inc ecx
dec edi
cmp ecx, 0x83
jne 0x409710
movzx ecx, byte [esp + 0x10]
test cl, cl
mov edi, dword [esp + 0xc]
je 0x40975d
lea edx, [esp + 0x11]
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409750
jmp 0x409761
mov esi, dword [esp + 8]
mov byte [eax], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x40977b
lea edx, [edi + 0x61]
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409770
mov byte [eax], 0
movzx ecx, byte [esp + 0x36]
test cl, cl
je 0x40979b
lea edx, [esp + 0x37]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409790
mov byte [eax], 0
sub eax, esi
add dword [edi + 0x80], eax
add esp, 0x70
pop esi
pop edi
pop ebx
pop ebp
ret 0x10