Function at 0x3e6c20
Capabilities:
Encode data using xor

Disassembly:
mov esi, ecx
pop ecx
and esi, 0x37f9eebf
add ecx, 0xdf77
jo 0x3e6c37
mov esi, eax
sti
mov eax, 0x37ba
mov bx, 0xf69d
add byte [esi - 0x45], ah
popfd
test byte [ebx - 0x4cf440ef], 0x3e
arpl word [ebp - 0xe], si
mov edx, dword [ecx]
mov edi, 0x633eb30b
jne 0x3e6c3c
cmp dword [esi + 0x68], esp
pop eax
jo 0x3e6c58
mov si, 0x49f3
sub edx, 0x5d326002
cmc
sub edx, 0x3da585d8
mov bx, di
mov dword [ecx], edx
jae 0x3e6c70
sub ecx, 4
mov di, ax
sub eax, 1
jne 0x3e6c90
movzx esi, di
sti
jmp 0x3e6ca5
jmp 0x3e6c9a
jmp 0x3e6c41
cmp dword [ebp + 0x122d0cc1], 0
je 0x3e6cbc
mov dword [ebp + 0x122d2b02], 1
mov eax, dword [ebp + 0x122d16c1]
mov esi, eax
mov ecx, dword [esi + 0x3c]
add esi, ecx
mov ecx, 0x400000
mov dword [ebp + 0x12465bc9], ecx
mov edi, dword [ebp + 0x122d2e22]
test edi, edi
jne 0x3e6ce7
jmp 0x3e6e28
mov esi, edi
mov ecx, 0x4a94
lodsb al, byte [esi]
xor al, 0x37
stosb byte es:[edi], al
dec ecx
jne 0x3e6cee
mov ecx, dword [ebp + 0x122d2e22]
mov edi, dword [ebp + 0x122d16c1]
mov esi, dword [ebp + 0x12465bc9]
cmp edi, esi
jne 0x3e6d18
jmp 0x3e6e19
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
sub dword [ebp + 0x122d16a9], edx
sub edx, 8
add ecx, 8
add eax, edi
pushal
mov ebx, eax
push ebx
push 0x1000
push ebx
call dword [ebp + 0x122d37d0]
pop ebx
test eax, eax
je 0x3e6d59
lea eax, [ebp + 0x1245dabe]
push eax
push 0x40
push 0x1000
push ebx
call dword [ebp + 0x122d3732]
popal
mov bx, word [ecx]
test bx, 0xf000
je 0x3e6e00
and ebx, 0xfff
add ebx, eax
cmp dword [ebp + 0x122d2caa], 1
jne 0x3e6d96
cmp byte [ebx - 2], 0xe8
jne 0x3e6d96
cmp byte [ebx + 3], 0x90
jne 0x3e6d96
jmp 0x3e6e00
cmp byte [ebx - 1], 0xc5
jne 0x3e6dc3
cmp dword [ebp + 0x122d2b26], 0
je 0x3e6dc3
cmp dword [ebp + 0x122d1121], 0
je 0x3e6dc3
mov byte [ebx - 1], 0xe9
jmp 0x3e6e00
cmp dword [ebp + 0x122d0cc1], 0
je 0x3e6df0
cmp byte [ebx - 1], 0xc5
jne 0x3e6df0
cmp dword [ebp + 0x122d2b26], 0
je 0x3e6df0
mov byte [ebx - 1], 0xe9
jmp 0x3e6e00
cmp dword [ebx], 0x90909090
je 0x3e6e00
sub dword [ebx], esi
add dword [ebx], edi
add ecx, 2
sub edx, 2
jne 0x3e6d5a
cmp dword [ebp + 0x122d16a9], 0
jne 0x3e6d18
mov edi, dword [ebp + 0x122d2e22]
mov ecx, 0x4a94
xor al, al
rep stosb byte es:[edi], al
mov edx, 0x28639002
mov edi, dword [ebp + 0x122d0785]
mov ecx, 0x79
lea esi, [ebp + 0x1253de7b]
rep movsb byte es:[edi], byte [esi]
xor edx, 0x28634112
mov edi, dword [ebp + 0x122d0785]
add edi, 0xe
test edx, edx
je 0x3e6e5d
add edx, dword [ebp + 0x122d16c1]
mov dword [edi + 1], edx
mov edx, dword [ebp + 0x122d3b6a]
mov edi, dword [ebp + 0x122d0785]
add edi, 0x54
mov dword [edi + 1], edx
mov edi, dword [ebp + 0x122d0785]
add edi, 0x49
mov dword [edi + 1], ebp
mov edi, dword [ebp + 0x122d0785]
add edi, 0x25
mov dword [edi + 1], ebp
jmp 0x3e6f08
mov eax, edx
jmp 0x3e6f37
mov eax, 0x6754
jmp 0x3e6f4a
jmp 0x3e92d7
mov edx, ebx
lea eax, [ebp + 0x1253fe11]
mov dword [ebp + 0x124656a5], eax
dec dl
push ebp
cmpsb byte [esi], byte es:[edi]
push 0xffffffffffffffa8
sub ch, byte [esi]
mov dl, byte cs:[eax - 0x5457955a]
aad 0xea
jne 0x3e9360
cmpsd dword [esi], dword es:[edi]
push 0xffffffffffffffa8
shr byte [edi], 1
mov bh, byte cs:[edx - 0x72a851a3]
das
mov bl, byte cs:[eax - 0x5c]
push 0xffffffffffffffa8
stosd dword es:[edi], eax
aad 0xea
jne 0x3e9333
movsb byte es:[edi], byte [esi]
push 0xffffffffffffffa8
sub al, 0x2e
mov ch, byte [ebp + 0x7da86aa4]
sub eax, 0xa5278a2e
push 0xffffffffffffffa8
stosd dword es:[edi], eax
aad 0xea
jne 0x3e934d
das
aam 0x54
push edi
jle 0x3e9335
add eax, eax
jno 0x3e9385
cld
inc esi
cmpsd dword [esi], dword es:[edi]
nop
loopne 0x3e9379
test byte [ebx + 0x21], 0xd1
std
pop ss
ficom word [edi + 0x2f]
aam 0x69
push eax
jle 0x3e934d
add eax, eax
jns 0x3e939d
cld
inc esi
cmpsd dword [esi], dword es:[edi]
nop
xchg ebx, eax
inc eax
test byte [ebx + 0x21], 0xd1
leave
pop ss
ficom word [edi + 0x2f]
aam 0xd8
push ecx
jle 0x3e9365
add eax, eax
inc ebp
push ebx
cld
inc esi
cmpsd dword [esi], dword es:[edi]
nop
dec edi
inc eax
test byte [ebx + 0x21], 0xd1
lds edx, [edi]
ficom word [edi + 0x2f]
aam 0xa1
push edx
jle 0x3e937d
add eax, eax
push ecx
push ebx
cld
inc esi
cmpsd dword [esi], dword es:[edi]
nop
fadd dword [ebx - 0xa]
inc ebx
and ecx, edx
rcl dword [edi]
pop ss
ficom word [edi + 0x2f]
aam 0x3b
push edx
jle 0x3e9395
add eax, eax
pop ebp
push ebx
cld
inc esi
cmpsd dword [esi], dword es:[edi]
nop
pop esi
inc ebx
test byte [ebx + 0x21], 0xd1
sub dword [esi], edx
push ss
ficom word [edi + 0x2f]
aam 0xbd
push ebx
jle 0x3e93ad
add eax, eax
movsd dword es:[edi], dword [esi]
push edx
cld
inc esi
cmpsd dword [esi], dword es:[edi]
nop
les eax, [edx - 0xa]
inc ebx
and ecx, edx
and dword [esi], edx
ficom word [edi - 0x3d]
mov eax, 0x152a5012
invalid