Function at 0x40c738
Capabilities:
Encode data using xor

Disassembly:
xchg byte [edi - 0x11], dh
add byte [eax], al
mov edx, 0x1010165
add dword [ecx], eax
mov cl, byte [bp - 0x1087]
add byte [eax], al
mov ebx, 0x101016d
mov dl, byte [bp - 0x1085]
add byte [eax], al
mov ecx, 0x101016d
mov al, byte [bp - 0x1083]
add byte [eax], al
xor al, 0xca
mov cl, byte [bp - 0x1081]
add byte [eax], al
mov dword [esi + 0xf5d1], 0xd286c753
cmc
add byte [eax], al
jne 0x40c740
xchg bl, dl
cmc
add byte [eax], al
insd dword es:[edi], dx
mov dword [esi + 0xf5d4], 0xd586c74a
cmc
add byte [eax], al
outsd dx, dword [esi]
mov dword [esi + 0xf5d6], 0xd786c76a
cmc
add byte [eax], al
jne 0x40c763
xchg al, bl
cmc
add byte [eax], al
push esi
mov dword [esi + 0xf5d9], 0xda86c76f
cmc
add byte [eax], al
push 0xffffffffffffffc7
xchg bl, bl
mov dword [esi + 0xf5da], 0xdb86c76a
cmc
add byte [eax], al
mov dword fs:[esi + 0xf5dc], 0xdd86c770
cmc
add byte [eax], al
mov dword gs:[esi + 0xf5de], 0xdf86c766
cmc
add byte [eax], al
invalid
invalid
xchg bh, bl
cmc
add byte [eax], al
push esp
mov dword [esi + 0xf5e0], 0xe186c775
cmc
add byte [eax], al
jae 0x40c7a9
xchg dl, ah
cmc
add byte [eax], al
push 0xffffffffffffffc7
xchg bl, ah
cmc
add byte [eax], al
outsd dx, dword [esi]
mov dword [esi + 0xf5e4], 0xe586c768
cmc
mov dword [esi + 0xf5e3], 0xe486c76f
cmc
add byte [eax], al
push 0xf5e586c7
add byte [eax], al
add edi, eax
xchg byte [ecx + 0x530000f5], cl
mov dword [esi + 0xf58a], 0x8b86c775
cmc
add byte [eax], al
insd dword es:[edi], dx
mov dword [esi + 0xf589], 0x8a86c753
cmc
add byte [eax], al
jne 0x40c7d3
xchg byte [ebx + 0x6d0000f5], cl
mov dword [esi + 0xf58c], 0x8d86c756
cmc
add byte [eax], al
jno 0x40c7e8
xchg byte [esi + 0x640000f5], cl
mov dword [esi + 0xf58f], 0x9086c762
cmc
add byte [eax], al
je 0x40c7fd
xchg byte [ecx + 0x660000f5], dl
mov dword [esi + 0xf592], 0x9386c756
cmc
add byte [eax], al
outsd dx, dword [esi]
mov dword [esi + 0xf594], 0x9586c76a
cmc
add byte [eax], al
mov dword fs:[esi + 0xf596], 0x9786c770
cmc
add byte [eax], al
mov dword gs:[esi + 0xf598], 0x9986c766
cmc
add byte [eax], al
push esp
mov dword [esi + 0xf59a], 0x9b86c775
cmc
add byte [eax], al
jae 0x40c84a
xchg byte [ebp + esi*8 - 0x38960000], bl
xchg byte [ebp + 0x6f0000f5], bl
mov dword [esi + 0xf59e], 0x9f86c768
cmc
mov dword [esi + 0xf59d], 0x9e86c76f
cmc
add byte [eax], al
push 0xf59f86c7
add byte [eax], al
add edi, eax
xchg byte [ecx + 0x530000f5], ah
mov dword [esi + 0xf5a2], 0xa386c775
cmc
add byte [eax], al
insd dword es:[edi], dx
mov dword [esi + 0xf5a1], 0xa286c753
cmc
add byte [eax], al
jne 0x40c874
xchg byte [ebx + 0x6d0000f5], ah
mov dword [esi + 0xf5a4], 0xa586c744
cmc
add byte [eax], al
jae 0x40c889
xchg byte [esi + 0x660000f5], ah
mov dword [esi + 0xf5a7], 0xa886c762
cmc
add byte [eax], al
jne 0x40c89e
xchg byte [ecx + 0x660000f5], ch
mov dword [esi + 0xf5aa], 0xab86c756
cmc
add byte [eax], al
outsd dx, dword [esi]
mov dword [esi + 0xf5ac], 0xad86c76a
cmc
add byte [eax], al
mov dword fs:[esi + 0xf5ae], 0xaf86c770
cmc
add byte [eax], al
mov dword gs:[esi + 0xf5b0], 0xb186c766
cmc
add byte [eax], al
push esp
mov dword [esi + 0xf5b2], 0xb386c775
cmc
add byte [eax], al
jae 0x40c8eb
xchg byte [ebp + esi*8 - 0x38960000], dh
xchg byte [ebp + 0x6f0000f5], dh
mov dword [esi + 0xf5b6], 0xb786c768
cmc
add byte [eax], al
add dword [ebx + 0x1010103], edi
insb byte es:[edi], dx
ret