Function at 0x40178c
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword fs:[edx]
dec edi
sub esp, 0xffffffd4
sal ecx, 1
push eax
inc edx
xor esi, 0xc7a166cd
mov eax, dword [esp]
mov esi, 0xc
wait
add eax, esi
ror cx, 5
mov edi, dword [eax]
ror edx, 7
mov eax, 0x1c
and esi, edx
add edi, eax
ror cx, 0xe
mov esi, dword [edi]
or eax, 0x50aa42d6
mov ecx, dword [esi]
inc edi
mov edx, dword [ecx + 8]
sub ecx, ebp
dec edi
inc edi
push 0x531f4c98
or si, 0xffb0
mov ebp, edx
or cx, 0x26
xor edi, eax
mov eax, 0x40107b
add esi, 0x69f4bf8d
mov ecx, dword [eax]
push edx
rol edi, 0xf
call ecx
rol esi, 2
push 0x103d0
add ecx, ebp
mov eax, 0x40
xor edx, 0xec049be5
push eax
mov ecx, edi
or esi, 0xa821ea05
call ecx
mov edi, eax
mov ebx, edi
cmc
add eax, 0x1000b
mov dword [eax], ebp
sub si, 0x49
rol ax, 7
mov esi, 0x40107b
dec edi
mov ecx, dword [esi]
push 0xf598b5c2
inc edx
mov edi, ebp
xor eax, esi
push edi
rol dx, 0xa
call ecx
dec edx
mov eax, ebx
and esi, 0xfeed28ed
add eax, 0x10014
not ecx
mov dword [eax], edi
or cx, 0x75
push 0xb0eef95a
dec eax
push ebp
add esi, 0xee0a7dcd
add ecx, ecx
mov edi, 0
add edi, 0x40107b
add esi, 0x5c42a77e
mov edx, dword [edi]
sub eax, 0x335b14a5
call edx
add edx, ebp
mov eax, ebx
xor esi, 0x8ed9f03d
add eax, 0x10028
ror dx, 6
mov ecx, eax
add si, 0x5b
mov dword [ecx], edi
sub esi, 0xb3fd0c05
push 0xface3989
sar edx, 0x1c
xor edi, edi
xor edi, 0x40107b
add dx, 0x55
mov esi, dword [edi]
or cx, 0x6b
mov eax, ebp
add ecx, ebx
push eax
call esi
push esp
pop ecx
wait
sub ecx, 0x46
push ecx
mov esi, 0x40
push esi
mov ecx, 0xffbfffc3
not ecx
rol esi, 9
mov esi, dword [ecx]
or ax, 0xff8a
mov edx, 0xffbfffaf
not edx
add esi, edx
neg edx
mov eax, dword [esi]
push eax
xor esi, 0x443fcc3d
push 0x400000
call edi
inc esi
sub eax, eax
add eax, 0xad9b15ff
sar edx, 0x12
mov ecx, 0x401a53
rol di, 0xf
mov word [ecx], ax
or edx, 0x6ff2e53e
sub edi, edi
add edi, 0x3d5e718b
or ax, 0x13
push 0x3d1e6830
add ecx, edx
pop edx
sub si, 0x69
xor edx, edi
add eax, dword [esp]
mov esi, 0x42900288
add ecx, esi
mov dword [edx], esi
add eax, edi
sub si, 0xffb6
mov ecx, 0x3d1e684e
xor esi, esi
xor esi, 0x3d5e718b
not edi
xor ecx, esi
add ax, 0x31
sub edx, edx
add edx, 0xe29b9b90
add edi, dword [esp]
mov dword [ecx], edx
add di, 0xff89
and esi, esi
pop edx
sub eax, 0x78d9baa5
mov ecx, edx
sub esi, ecx
add ecx, 4
wait
mov esi, dword [ecx]
add ax, 0xc
inc esi
mov edx, 0x401051
add eax, dword [esp]
add esi, dword [edx]
mov edx, 0x400d1b
add eax, edx
add edx, esi
mov ecx, 0x30c
cld
mov eax, 0
sub si, 0xfffe
or di, 0x15
mov al, byte [edx]
add si, 0xffd3
xor edi, edi
xor al, 0xbf
ror si, 0xd
outsb dx, byte [esi]
xchg byte [ecx + 0x46f7812d], dh
jp 0x40195a
loop 0x401a29
push dword [esi + ecx]
fild word [ecx - 0x1a78f138]
inc esp
neg edx
mov edi, dword [esp - 4]
sub ax, 0xff8a
push edi
pop eax
sub ecx, ebp
jmp 0x401a23
adc dword [eax], eax
add byte [eax], al
add byte [eax + eax], bh
mov bh, 0xba
add byte [eax], al
push es
jge 0x401a1b
xchg edx, eax
add byte [eax], al
push edx
cmpsd dword [esi], dword es:[edi]
add byte [eax], al
pop ebp
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
sub dx, 0x5b
add byte [eax], al
add byte [eax], al
add byte [eax], al
sub edi, ebx
add byte [eax], al
add byte [eax], al
add byte [eax], al
add edx, 0xf80008d
add di, 0xff9b
and eax, edi
add byte [0x401066], bh
rol di, 0xc
ror esi, 0x10
out dx, al
jle 0x401a0d
imul eax, dword [eax], 0
add byte [edi + 0x5fa38b00], ah
add byte [ebp - 0x7dffffaf], bh
cmp al, 0
add byte [edx], cl
add cl, al
add byte [ebp], ch
add byte [eax], al
add bl, dl
add byte [esi], ah
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax - 0x47ffffa1], dh
add byte [edi - 0x4f330000], dh
pushfd
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ebx + 0x34110000], cl
mov al, 0xef
add byte [ebx], bl
inc ecx
add al, ch
add byte [eax], al
add ch, al
add byte [eax], al
add byte [eax], al
add byte [ecx + eax*8], al
add byte [eax], al
or dword [eax], eax
dec ebx
mov byte [eax], al
push esi
mov dl, 0
sahf
add byte [esi - 0x7c], dl
lodsb al, byte [esi]
ret 0x2820