Function at 0x40159c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2a4
mov eax, dword [0x470594]
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
and dword [ebp - 4], 0
push 7
pop ecx
lea edi, [ebp - 0x28]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x24]
mov edi, eax
mov ebx, edx
imul edi, edi, 0x4008
imul ebx, ebx, 0x4008
mov ecx, section..ndata
add edi, ecx
add ebx, ecx
lea ecx, [ebp - 0x24]
mov dword [0x40a0a4], ecx
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffffe
cmp ecx, 0x44
ja 0x402c58
jmp dword [ecx*4 + 0x402c6c]
setno byte [eax]
invalid
mov dl, 0x28
mov ecx, gs
jb 0x402bb7
fdivp st(1)
pop edi
xor edx, dword gs:[esi*2 + 0x4907c132]
sti
mov bh, dl
push ebx
mov esp, 0xad9bf95e
push ebx
cwde
into
xlatb
mov bl, 0xc1
pop ds
push ebp
mov ah, 0x1e
and al, 0xc9
adc dl, byte [eax + edi + 0x3e]
sbb eax, 0x52270c3e
pop edx
dec eax
or eax, edi
imul ebx, dword [0x1585e570], 0x34
xor esp, dword [edi - 0x48]
cmp dword [ecx - 0x2fbc93f9], edx
mov dl, 0x27
sal byte [edx + 0x40735927], 1
daa
pop ecx
jae 0x402bfb
scasb al, byte es:[edi]
jp 0x402b73
dec edx
jge 0x402b42
je 0x402c41
jne 0x402c32
sub al, byte [ebx]
xor al, 0x84
xor byte [edi - 0x1bb83cfc], ah
retf 0xbbe6
cmpsd dword [esi], dword es:[edi]
add al, 0xc3
inc edi
in al, 0xca
out 0xbb, al
jb 0x402bb8
stosb byte es:[edi], al
push esp
push esp
push ecx
popal
sub byte [ecx + 0x142cf1dc], dh
aam 0xfc
jo 0x402bb5
imul ecx, dword [eax - 0x19], 0xffffffe7
sbb dword [esi + 0x6b11d925], ebx
xchg dword [edi - 0x7b], edi
xchg ebp, eax
stosb byte es:[edi], al
inc eax
call 0x62b978b9
popal
loop 0x402b85
mov dword [edx], ecx
retf 0xbaed
or cl, dl
in eax, dx
mov edx, 0xe04870b3
fmul st(4)
add al, 0x38
ror edi, 0x1f
imul dword [ebp - 0x62]
insd dword es:[edi], dx
or edx, 0xffffffe8
push ds
push esp
xchg edi, eax
add eax, 0x7f5b0347
in al, 0x84
xchg dword [edi + 0x7d], esi
ja 0x402c9d
sbb al, 0x31
aaa
je 0x402c26
sbb ah, ah
mov bh, 0xf7
cli
jge 0x402bcb
push edx
mov es, ebp
retf
and byte [ecx + 4], al
mov ecx, 0x7e48d0cd
clc
mov ebx, 0xbebf5f0
outsd dx, dword [esi]
movsb byte es:[edi], byte [esi]
or al, 0x3b
xor al, 0x7f
push esi
pop ebp
push ebx
or edx, edi
pop edx
add ah, ah
xchg edi, eax
aas
salc
add bl, byte [edx]
push ecx
loop 0x402cc2
loopne 0x402c1e
jo 0x402ccb
push ebx
mul ebp
xor ah, ah
jae 0x402ca0
push ecx
xchg esp, eax
sbb al, 0x7c
test al, cl
rol dword [ebx - 0x6fd47c2d], cl
push esp
inc edi
jbe 0x402c24
mov bl, 0xab
stosd dword es:[edi], eax
mov ah, 0x25
in al, dx
pop edx
pop es
inc ebp
and eax, 0x45075aec
mov eax, dword [0xffa608d]
xlatb
pop ds
out dx, eax
xor al, 0x52
cwde
pop es
and eax, 0x643fcfd6
jle 0x402c73
inc esp
xchg ecx, eax
or byte [edx + 0x2c], dl
mov word [eax + 0x68], fs
mov eax, 0xe92caa1f
cwde
jmp 0x416c142b
inc ecx
cmp dword [ecx + 0x23], edi
movsb byte es:[edi], byte [esi]
mov dl, 0x7a
cmp eax, 0xd2c3c6db
inc ebx
mov ah, 0x21
test eax, eax
push es
push cs
and al, 0x47
fdiv qword [edx]
jle 0x402d10
and esp, dword [edx + esi*4 - 0x3924c286]
ret
push cs
dec ebp
insd dword es:[edi], dx
sti
cmp al, 0x56
sbb ebx, dword [edi - 0x7cc08215]
invalid
xor eax, 0xffffffb6
enter 0x2bc0, 0x65
cmp eax, 0xd4bd06af
jnp 0x402c70
push es
mov ebp, 0x28a07bd4
dec esi
mov edx, 0x582c9d83
retf
sub byte [esi - 0x46], cl
sbb dword [ebp - 0x7d34a7d4], 0x7c
aas
cli
iretd
sub byte [ecx], bh
imul esp, dword [ecx + 0x288a5bd9], 0xffffffe1
cmp byte [eax + 0x1ae67156], cl
xor eax, 0x18a25746
retf