Function at 0x4093a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
mov ebx, dword [ebp + 8]
mov dword [esp + 0x18], ecx
add ebx, dword [ecx + 0x60]
mov dword [esp + 0x80], 0xb7b8be83
mov dword [esp + 0x84], 0x62aabba5
mov dword [esp + 0x88], 0xbea2ac88
mov dword [esp + 0x8c], 0xa3bf7196
mov dword [esp + 0x90], 0xb3b5bca0
mov dword [esp + 0x94], 0x9b94b4ad
mov dword [esp + 0x98], 0x90579d57
mov dword [esp + 0x9c], 0x8083978e
mov dword [esp + 0xa0], 0x7e7c7890
mov word [esp + 0xa4], 0x697e
mov dword [esp + 0xa6], 0
mov dword [esp + 0xaa], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xb2], 0
mov dword [esp + 0xb6], 0
mov dword [esp + 0xba], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 0x3d
ja 0x4094be
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x20]
movzx edx, byte [esp + eax + 0x80]
lea eax, [ecx + edx]
add eax, 0x999d888a
add ecx, 0x999d888a
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x3a
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 0x80], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 0x3e
jb 0x409480
mov byte [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0x33282c12
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 0x14
ja 0x40957a
nop
nop
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x20]
movzx edx, byte [esp + eax + 0xc0]
lea esi, [ecx + 0x3b4a0e78]
lea eax, [ecx + edx]
add eax, 0x3b4a0e78
mov edi, 0xc4b5f187
sub edi, ecx
or edi, edx
add ecx, edx
not edx
or edx, esi
add ecx, edx
add ecx, edi
add ecx, 0x3b4a0e7a
mov edx, eax
not edx
and edx, ecx
not ecx
and ecx, eax
sub ecx, edx
mov eax, ecx
xor eax, 0xb7
and ecx, 0x37
lea eax, [eax + ecx*2]
inc al
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 0xc0], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 0x15
jb 0x409510
mov dword [esp + 0x20], 0xd6d48081
mov dword [esp + 0x24], 0xd2d28488
mov dword [esp + 0x28], 0xdfcadc81
mov dword [esp + 0x2c], 0xdad7decb
mov dword [esp + 0x30], 0xb2e7cbca
mov dword [esp + 0x34], 0xf4814f4d
mov dword [esp + 0x38], 0xf9eff1f6
mov dword [esp + 0x3c], 0xe68aa4fc
mov dword [esp + 0x40], 0xe4e1fdfb
mov dword [esp + 0x44], 0xe4ffe5f9
mov dword [esp + 0x48], 0xf1baabe6
mov dword [esp + 0x4c], 0xb2f3efeb
mov dword [esp + 0x50], 0x8296fcf8
mov dword [esp + 0x54], 0x8694c1df
mov dword [esp + 0x58], 0xcdd78089
mov dword [esp + 0x5c], 0x8a828082
mov dword [esp + 0x60], 0x99d2d2ca
mov dword [esp + 0x64], 0x85939d99
mov dword [esp + 0x68], 0xc69f9895
mov word [esp + 0x6c], 0x39de
mov byte [esp + 0x76], 0
mov dword [esp + 0x72], 0
mov dword [esp + 0x6e], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 0x56
ja 0x409678
nop
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
movzx edx, byte [esp + eax + 0x20]
lea eax, [ecx + edx]
add eax, 0x3252738e
add ecx, 0x3252738e
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x1e
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 0x57
jb 0x409640
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x20]
mov edx, ebx
test cl, cl
je 0x40969b
lea esi, [esp + 0x21]
mov edx, ebx
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409690
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x4096bb
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4096b0
mov byte [edx], 0
movzx eax, byte [esp + 0xc0]
test al, al
mov dword [esp + 0x14], ebx
je 0x4096eb
lea ecx, [esp + 0xc1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4096e0
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x80]
test al, al
je 0x40971b
lea ecx, [esp + 0x81]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409710
mov byte [edx], 0
mov ebx, dword [ebp + 0x14]
mov ecx, ebx
shr ecx, 2
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
and eax, 0xfffffffc
mov ecx, esi
lea esi, [edx + eax]
add eax, ecx
and ebx, 3
mov edi, ebx
not edi
or edi, 1
add edi, ebx
mov dword [esp + 0x1c], edi
shr ebx, 1
mov dword [esp + 0x10], eax
mov ecx, ebx
mov edi, esi
mov ebx, dword [esp + 0x10]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov edi, dword [esp + 0x1c]
inc edi
je 0x40980d
mov ecx, dword [ebp + 0x14]
and ecx, 2
add eax, ecx
add esi, ecx
mov dword [esp + 0x10], edi
mov ecx, edi
and ecx, 7
je 0x4097af
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [esi + edi], bl
inc edi
cmp ecx, edi
jne 0x409790
add eax, edi
mov ebx, dword [esp + 0x10]
sub ebx, edi
add esi, edi
cmp dword [esp + 0x1c], 7
jae 0x4097ba
jmp 0x40980d
mov ebx, dword [esp + 0x10]
cmp dword [esp + 0x1c], 7
jb 0x40980d
xor edi, edi
nop
nop
nop
nop
movzx ecx, byte [eax + edi]
mov byte [esi + edi], cl
movzx ecx, byte [eax + edi + 1]
mov byte [esi + edi + 1], cl
movzx ecx, byte [eax + edi + 2]
mov byte [esi + edi + 2], cl
movzx ecx, byte [eax + edi + 3]
mov byte [esi + edi + 3], cl
movzx ecx, byte [eax + edi + 4]
mov byte [esi + edi + 4], cl
movzx ecx, byte [eax + edi + 5]
mov byte [esi + edi + 5], cl
movzx ecx, byte [eax + edi + 6]
mov byte [esi + edi + 6], cl
movzx ecx, byte [eax + edi + 7]
mov byte [esi + edi + 7], cl
add edi, 8
cmp ebx, edi
jne 0x4097c0
mov dword [esp + 0x20], 0xcecfabad
mov dword [esp + 0x24], 0xc2fe1016
mov dword [esp + 0x28], 0x32ff2c2c
mov dword [esp + 0x2c], 0x2c31293c
mov dword [esp + 0x30], 0x31302439
mov dword [esp + 0x34], 0x9d9bf421
mov word [esp + 0x38], 0x8385
mov byte [esp + 0x3a], 0x9a
mov dword [esp + 0x3b], 0
mov dword [esp + 0x3f], 0
mov dword [esp + 0x43], 0
mov dword [esp + 0x47], 0
mov dword [esp + 0x4b], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x80]
cmp eax, 0x2e
ja 0x4098e0
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x80]
movzx ecx, byte [esp + ecx + 0x20]
lea esi, [eax + 0x18]
add eax, ecx
and esi, ecx
add esi, esi
sub eax, esi
add al, 0x70
mov ecx, dword [esp + 0x80]
mov byte [esp + ecx + 0x20], al
mov eax, dword [esp + 0x80]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x80]
cmp eax, 0x2f
jb 0x409890
add edx, dword [ebp + 0x14]
movzx eax, byte [esp + 0x20]
test al, al
je 0x40990d
lea ecx, [esp + 0x21]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409900
jmp 0x409915
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov byte [edx], 0
sub edx, edi
add dword [esi + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10