Function at 0x80cd00
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
mov esi, dword [edx + 0x14]
test esi, esi
jne 0x80cd13
xor ebx, ebx
jmp 0x80cfba
cmp dword [esi], 1
je 0x80cd1f
xor ebx, ebx
jmp 0x80cfba
test byte [edx + 7], 1
je 0x80cd2c
xor ebx, ebx
jmp 0x80cfba
mov ebx, fcn.007748b0
mov eax, fcn.007748b0
mov edi, ecx
movzx ecx, byte [0xbb288b]
and ebx, 1
xor ebx, eax
cmp ebx, 0xffffffff
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x80ce3e
mov al, byte [0xbb288b]
cmp ebx, 0xffffffff
mov ah, 1
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb288b], ah
jne 0x80cd5d
mov ecx, fcn.007748b0
mov ebx, fcn.007748b0
and ecx, 1
xor ecx, ebx
cmp ecx, 0xffffffff
sete ah
or ah, 2
xor ah, 7
movzx ebx, ah
movzx eax, al
bt eax, ebx
jae 0x80cdbb
cmp ecx, 0xffffffff
movzx ebx, byte [0xbb288b]
sete al
or al, 2
movzx eax, al
bt ebx, eax
jae 0x80cd9f
jmp 0x80ce3e
cmp ecx, 0xffffffff
movzx ebx, byte [0xbb288b]
sete al
or al, 2
movzx eax, al
bt ebx, eax
jb 0x80ce19
mov ebx, fcn.007748b0
mov eax, fcn.007748b0
xor ecx, ecx
and ebx, 1
xor ebx, eax
mov eax, dword [0xbb2880]
cmp ebx, 0xffffffff
sete cl
or ecx, 0x34c93842
add ecx, 0xb10
xor eax, ecx
mov dword [0xbb2880], eax
not eax
imul eax, ecx
and cl, 7
xor dword [0xbb2884], eax
mov ah, 1
shl ah, cl
or byte [0xbb288b], ah
mov ecx, fcn.007748b0
mov eax, fcn.007748b0
and ecx, 1
xor ecx, eax
mov al, 0xfe
cmp ecx, 0xffffffff
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb288b], al
mov ebx, dword [edx + 8]
mov edx, 0xbb2880
mov ecx, ebx
call fcn.00777e20
test eax, eax
jne 0x80ce5d
mov byte [esp + 3], 2
mov bl, 1
jmp 0x80cf9a
mov eax, fcn.007b72f0
mov edx, 3
movzx ecx, byte [0xbb2897]
sub edx, eax
mov eax, edx
xor eax, fcn.007b72f0
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x80cf83
mov al, byte [0xbb2897]
mov ecx, edx
mov ah, 1
xor ecx, fcn.007b72f0
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb2897], ah
jne 0x80ce8d
mov edx, fcn.007b72f0
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, fcn.007b72f0
sete dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x80cef6
mov eax, ecx
movzx edx, byte [0xbb2897]
xor eax, fcn.007b72f0
sete al
or al, 2
movzx eax, al
bt edx, eax
jae 0x80ced6
jmp 0x80cf83
xor ecx, fcn.007b72f0
movzx ecx, byte [0xbb2897]
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x80cf5e
mov eax, fcn.007b72f0
mov edx, 3
xor ecx, ecx
sub edx, eax
mov eax, dword [0xbb288c]
xor edx, fcn.007b72f0
sete cl
or ecx, 0x9dd60b7a
add ecx, 0x900
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb288c], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbb2890], edx
mov dl, 1
shl dl, cl
or byte [0xbb2897], dl
mov eax, fcn.007b72f0
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.007b72f0
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb2897], al
mov ecx, ebx
mov edx, 0xbb288c
call fcn.00777e20
test eax, eax
jne 0x80cfc4
mov bl, 2
mov byte [esp + 3], 1
mov ebp, dword [esp + 0x18]
mov ecx, edi
mov edx, esi
push 0
call fcn.007f4030
add esp, 4
test eax, eax
mov dword [ebp], eax
je 0x80cfba
mov cl, byte [esp + 3]
mov byte [eax + 0xc], cl
mov eax, ebx
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
jmp 0x80cfba