Function at 0x409b30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov ebp, dword [esp + 0x9c]
mov dword [esp + 8], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x14], 0xd7acae83
mov dword [esp + 0x18], 0x6ad2aba1
mov dword [esp + 0x1c], 0xaedad0bc
mov dword [esp + 0x20], 0xdbaf6d96
mov dword [esp + 0x24], 0x9b9190e4
mov dword [esp + 0x28], 0xe3989099
mov dword [esp + 0x2c], 0x9457e157
mov dword [esp + 0x30], 0x9c9b979e
mov dword [esp + 0x34], 0x6e686cf4
mov word [esp + 0x38], 0x656e
mov dword [esp + 0x3a], 0
mov word [esp + 0x3e], 0
lea esi, [esp + 0x14]
mov edi, 0x6f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esi]
lea ebx, [edi - 0x59bedc00]
or ebx, eax
and eax, edi
not ebx
or ebx, eax
mov eax, ebx
xor eax, 0xd1
and ebx, 0x2e
add ebx, ebx
sub ebx, eax
inc bl
mov byte [esi], bl
inc esi
dec edi
cmp edi, 0x43
jne 0x409bc0
mov dword [esp + 0xc], 0xe9e49882
mov byte [esp + 0x10], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x57
xor al, byte [esp + ebx + 0xc]
add al, 0x4d
mov byte [esp + ebx + 0xc], al
inc ebx
cmp ebx, 5
jne 0x409c00
mov dword [esp + 0x44], 0x907b3d33
mov dword [esp + 0x48], 0x8b9daf96
mov dword [esp + 0x4c], 0x826248b0
mov dword [esp + 0x50], 0xb88b8bb5
mov dword [esp + 0x54], 0x808dbb8f
mov dword [esp + 0x58], 0xb3527986
mov dword [esp + 0x5c], 0x7eb9bdbd
mov dword [esp + 0x60], 0xa686a8b4
mov dword [esp + 0x64], 0xa2b06741
mov dword [esp + 0x68], 0x7f45bcb7
mov dword [esp + 0x6c], 0xa6aaa4a2
mov dword [esp + 0x70], 0xab7a5e7a
mov dword [esp + 0x74], 0xa7a9a3af
mov dword [esp + 0x78], 0x2aada4b3
mov word [esp + 0x7c], 0x6f0e
mov dword [esp + 0x7e], 0
mov byte [esp + 0x82], 0
mov esi, 0x20ab8889
mov ecx, dword [esp + 0x98]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + esi - 0x20ab8845]
xor eax, esi
mov edi, eax
and edi, 0x52
xor eax, 0x52
lea eax, [eax + edi*2]
inc al
mov byte [esp + esi - 0x20ab8845], al
inc esi
cmp esi, 0x20ab88c8
jne 0x409cb0
add ecx, edx
mov word [esp], 0x4c4d
mov byte [esp + 2], 0x96
mov dword [esp + 3], 0
mov edx, 0x7530f967
mov esi, 0x8acf0699
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx - 0x7530f967]
lea eax, [edi + edi]
not eax
add eax, edi
or eax, esi
add eax, edx
and edi, esi
or edi, eax
add edi, 0xb60b2101
mov eax, edi
and eax, 1
xor edi, 1
lea eax, [edi + eax*2]
mov byte [esp + edx - 0x7530f967], al
inc edx
dec esi
cmp edx, 0x7530f96e
jne 0x409d00
movzx ebx, byte [esp]
mov edx, ecx
test bl, bl
je 0x409d5b
lea esi, [esp + 1]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409d50
mov byte [edx], 0
mov eax, dword [esp + 8]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x409d7b
lea esi, [eax + 0x61]
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409d70
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x409d9b
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 0x409d90
mov byte [edx], 0
movzx ebx, byte [ebp]
test bl, bl
mov dword [esp + 0x40], ecx
je 0x409dbc
inc ebp
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409db0
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x409ded
lea esi, [esp + 0xd]
mov ebp, dword [esp + 0xa0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409de0
jmp 0x409df4
mov ebp, dword [esp + 0xa0]
mov byte [edx], 0
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x409e1b
lea esi, [esp + 0x15]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409e10
mov byte [edx], 0
mov ebx, dword [esp + 0xa4]
mov ecx, ebx
shr ecx, 2
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov esi, ebx
and esi, 0xfffffffc
add ebp, esi
add esi, edx
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, ebp
mov edi, esi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x409e62
mov eax, dword [esp + 0xa4]
and eax, 2
movzx ecx, byte [ebp + eax]
mov byte [esi + eax], cl
mov dword [esp + 0x44], 0x999f9b9d
mov byte [esp + 0x48], 0x64
mov dword [esp + 0x49], 0
mov ecx, 0xf5a8b518
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0xa574b2c]
mov eax, esi
not eax
and eax, ecx
mov edi, ecx
xor edi, esi
mov ebx, ecx
or ebx, esi
sub esi, edi
add esi, eax
not esi
and esi, ebx
mov edi, esi
and edi, 0x31a03485
mov eax, esi
and eax, 2
mov ebx, eax
xor ebx, 2
imul ebx, edi
or edi, 2
imul edi, eax
xor esi, 0x33b47687
add ebx, esi
add ebx, edi
and esi, 1
or ebx, 1
add ebx, esi
mov byte [esp + ecx + 0xa574b2c], bl
inc ecx
cmp ecx, 0xf5a8b521
jne 0x409e80
mov dword [esp + 0x14], 0x82836f6d
mov byte [esp + 0x18], 0x74
mov dword [esp + 0x19], 0
mov byte [esp + 0x1d], 0
mov ecx, 0xdb0d0c96
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x24f2f37e]
xor eax, ecx
mov esi, eax
not esi
or esi, 0xb8bec111
add esi, eax
or eax, 0xfbbfcd11
and eax, 0xfbbfcdff
add eax, esi
inc eax
mov esi, eax
and esi, 1
xor eax, 1
lea eax, [eax + esi*2]
mov byte [esp + ecx + 0x24f2f37e], al
inc ecx
cmp ecx, 0xdb0d0ca0
jne 0x409f00
add edx, dword [esp + 0xa4]
movzx ecx, byte [esp + 0x14]
test cl, cl
mov edi, dword [esp + 8]
je 0x409f6b
lea esi, [esp + 0x15]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409f60
mov byte [edx], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x409f8b
lea esi, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409f80
mov byte [edx], 0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x409fab
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 0x409fa0
mov byte [edx], 0
sub edx, dword [esp + 0x40]
mov eax, dword [edi + 0x80]
mov ecx, eax
and ecx, edx
xor edx, eax
lea eax, [edx + ecx*2]
mov dword [edi + 0x80], eax
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0x10