Function at 0x409a30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x80
mov dword [esp + 8], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x14], 0x6b6c6a3f
mov dword [esp + 0x18], 0xce766f19
mov dword [esp + 0x1c], 0x2767814
mov dword [esp + 0x20], 0x7f0bc53a
mov dword [esp + 0x24], 0x709087c
mov dword [esp + 0x28], 0x7000801
mov dword [esp + 0x2c], 0x4bb0943
mov dword [esp + 0x30], 0x7c7f7b72
mov dword [esp + 0x34], 0x9290940c
mov word [esp + 0x38], 0x9d92
mov dword [esp + 0x3a], 0
mov byte [esp + 0x3e], 0
mov esi, 0xaa
mov edi, 0x55
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + esi - 0x96]
mov ebx, edi
xor ebx, esi
and ebx, ebp
xor ebx, esi
add bl, 0xae
mov byte [esp + esi - 0x96], bl
inc esi
dec edi
cmp esi, 0xd5
jne 0x409ab0
mov dword [esp + 0xc], 0x497c7892
mov dword [esp + 0x10], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x93
xor al, byte [esp + ebx + 0xc]
add al, 0x21
mov byte [esp + ebx + 0xc], al
inc ebx
cmp ebx, 8
jne 0x409af0
mov dword [esp + 0x44], 0x182f6577
mov dword [esp + 0x48], 0x1f051b1a
mov dword [esp + 0x4c], 0x1e364018
mov dword [esp + 0x50], 0x70705
mov dword [esp + 0x54], 0x8150f1b
mov dword [esp + 0x58], 0x175e410a
mov dword [esp + 0x5c], 0xb2f1f50d
mov dword [esp + 0x60], 0xe2f2e0e4
mov dword [esp + 0x64], 0xeef8abb9
mov dword [esp + 0x68], 0xabcde4fb
mov dword [esp + 0x6c], 0xfafefce6
mov dword [esp + 0x70], 0xffb6aab6
mov dword [esp + 0x74], 0xebf1f7fb
mov dword [esp + 0x78], 0xdef5ecff
mov dword [esp + 0x7c], 0xa3ba
mov esi, 0xb0f714e7
mov ecx, dword [esp + 0x94]
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi + 0x4f08eb5d]
xor ebx, esi
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
add bl, 0x7c
mov byte [esp + esi + 0x4f08eb5d], bl
inc esi
cmp esi, 0xb0f71523
jne 0x409b90
add ecx, edx
mov word [esp], 0xc4c5
mov byte [esp + 2], 0x92
mov word [esp + 3], 0
mov byte [esp + 5], 0
xor edx, edx
mov ebp, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx]
lea eax, [edx - 0x35f5b35c]
lea esi, [edx + 0x24]
or esi, eax
and esi, edi
mov eax, esi
and eax, 0xffffffad
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
xor ebx, 2
imul ebx, eax
add esi, ebx
lea eax, [edx + edi]
add eax, 0xca0a4ca4
mov edi, eax
not edi
and edi, esi
not esi
and esi, eax
sub esi, edi
mov eax, esi
and eax, 0x4b
xor esi, 0xcb
lea eax, [esi + eax*2]
inc al
mov byte [esp + edx], al
mov eax, edx
not eax
or eax, 1
add eax, edx
lea eax, [eax*2 + 2]
mov esi, eax
and esi, edx
xor edx, eax
xor edx, 1
lea edx, [edx + esi*2]
cmp edx, 6
jb 0x409be0
movzx ebx, byte [esp]
mov edx, ecx
test bl, bl
je 0x409c7b
lea esi, [esp + 1]
mov edx, ecx
nop
nop
nop
nop
nop
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 0x409c70
mov byte [edx], 0
movzx ebx, byte [ebp + 0x60]
test bl, bl
mov eax, dword [esp + 0x98]
je 0x409c9b
lea esi, [ebp + 0x61]
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409c90
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x409cbb
lea esi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409cb0
mov byte [edx], 0
movzx ebx, byte [eax]
test bl, bl
mov dword [esp + 0x40], ecx
je 0x409cdb
inc eax
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409cd0
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x409cfb
lea esi, [esp + 0xd]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409cf0
mov byte [edx], 0
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x409d1b
lea esi, [esp + 0x15]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409d10
mov byte [edx], 0
mov eax, dword [esp + 0xa0]
mov ecx, eax
mov esi, eax
shr ecx, 2
mov ebp, dword [esp + 0x9c]
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, esi
mov ebx, esi
and ebx, 0xfffffffc
lea esi, [edx + ebx]
add ebx, ebp
mov ecx, eax
mov ebp, eax
shr ecx, 1
and ecx, 1
mov eax, ebx
mov edi, esi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, ebp
test al, 1
je 0x409d70
mov eax, dword [esp + 0xa0]
and eax, 2
movzx ecx, byte [ebx + eax]
mov byte [esi + eax], cl
mov dword [esp + 0x44], 0x2b212523
mov byte [esp + 0x48], 0x10
mov dword [esp + 0x49], 0
xor ecx, ecx
xor esi, esi
mov ebp, dword [esp + 8]
nop
nop
nop
mov eax, ecx
and eax, 0xa
mov ebx, esi
xor ebx, 0xc5
add ebx, eax
xor bl, byte [esp + esi + 0x44]
add bl, 0x27
mov byte [esp + esi + 0x44], bl
inc esi
add ecx, 2
cmp esi, 9
jne 0x409d90
mov dword [esp + 0x14], 0xf6f18d93
mov byte [esp + 0x18], 0x80
mov dword [esp + 0x19], 0
mov dword [esp + 0x1c], 0
xor ecx, ecx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi + 0x14]
mov eax, ecx
and eax, 2
mov edi, esi
xor edi, 0xa1
add edi, eax
lea eax, [ebx + ebx]
not eax
add eax, ebx
and eax, 0x8f
and ebx, 0x70
or ebx, eax
xor ebx, edi
xor bl, 0x8f
add bl, 0xdb
mov byte [esp + esi + 0x14], bl
inc esi
add ecx, 2
cmp esi, 0xc
jne 0x409de0
add edx, dword [esp + 0xa0]
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x409e3b
lea esi, [esp + 0x15]
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409e30
mov byte [edx], 0
movzx ecx, byte [ebp + 0x60]
test cl, cl
je 0x409e5b
lea esi, [ebp + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409e50
mov byte [edx], 0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x409e7b
lea esi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409e70
mov byte [edx], 0
sub edx, dword [esp + 0x40]
add dword [ebp + 0x80], edx
add esp, 0x80
pop esi
pop edi
pop ebx
pop ebp
ret 0x10