Function at 0x7fc890
Capabilities:
Encode data using xor

Disassembly:
test edx, edx
jne 0x7fc887
xor eax, eax
ret
jmp 0x7fc890
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov eax, dword [0xbd33e0]
mov ebp, ecx
mov edi, dword [esp + 0x30]
mov cl, byte [esp + 0x2c]
mov ebx, edx
xor eax, esp
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
movzx eax, byte [ebx]
cmp al, 0xab
je 0x7fce26
cmp al, 0xb2
je 0x7fce26
cmp al, 0xad
jne 0x7fc8d0
mov al, byte [ebx + 2]
cmp al, 0xaa
je 0x7fc936
cmp al, 0x24
je 0x7fc8e6
xor esi, esi
mov edi, 1
mov edx, 0xc26bb0
jmp 0x7fc95d
mov ecx, dword [ebx + 8]
xor edx, edx
call fcn.007f9cd0
movzx esi, al
mov edx, dword [ebx + 0xc]
movzx eax, byte [esp + 0x28]
mov ecx, ebp
push edi
push esi
push eax
call 0x7fc890
add esp, 0xc
mov ecx, dword [edi]
mov ebp, eax
test ecx, ecx
je 0x7fce11
mov edx, esi
push 1
call fcn.007bc350
add esp, 4
mov ecx, dword [edi]
movzx edx, byte [esp + 0x2c]
push 1
call fcn.007c2e20
add esp, 4
jmp 0x7fce11
mov ebx, dword [ebx + 0xc]
mov edi, 0xffffffff
mov edx, 0xbb7bd4
mov al, byte [ebx]
cmp al, 0x98
jne 0x7fc950
mov esi, 0xffffffff
jmp 0x7fc95d
cmp al, 0x96
mov esi, 0xffffffff
jne 0x7fcce7
mov dword [esp + 8], edx
mov edx, fcn.00822bd0
mov byte [esp], al
not edx
movzx ecx, byte [0xbb7bdb]
and edx, 1
mov eax, edx
add eax, fcn.00822bd0
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7fca65
mov al, byte [0xbb7bdb]
mov ecx, edx
mov ah, 1
add ecx, fcn.00822bd0
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb7bdb], ah
jne 0x7fc992
mov ecx, fcn.00822bd0
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, fcn.00822bd0
sete dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7fc9f6
mov eax, ecx
movzx edx, byte [0xbb7bdb]
add eax, fcn.00822bd0
sete al
or al, 2
movzx eax, al
bt edx, eax
jae 0x7fc9d9
jmp 0x7fca65
add ecx, fcn.00822bd0
movzx ecx, byte [0xbb7bdb]
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7fca43
mov eax, fcn.00822bd0
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.00822bd0
mov al, 1
sete cl
or ecx, 0x4f38248a
add ecx, 0x10a8
xor dword [0xbb7bd4], ecx
and cl, 7
shl al, cl
or byte [0xbb7bdb], al
mov eax, fcn.00822bd0
not eax
and eax, 1
add eax, fcn.00822bd0
mov al, 0xfe
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb7bdb], al
mov cl, byte [esp]
mov edx, ebp
xor ebp, ebp
mov eax, ecx
add al, 0x6a
cmp al, 0x14
jbe 0x7fce2e
cmp cl, 0x73
je case.0x7fce33.106
cmp cl, 0x77
mov ecx, 0
jne case.0x7fce33.103
mov ecx, edx
mov ebp, edx
call fcn.007fce40
test eax, eax
mov dword [esp + 0xc], eax
je 0x7fcac3
mov ecx, eax
mov esi, eax
call fcn.007899a0
xor ebp, ebp
mov ecx, esi
jmp case.0x7fce33.103
mov ecx, edx
mov ebp, edx
call fcn.007fce40
test eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], eax
jne 0x7fcae6
xor edi, edi
mov ecx, ebp
call fcn.0078a090
mov ecx, ebp
xor edx, edx
call fcn.00780810
mov ecx, edi
call fcn.007895e0
mov ebp, 7
jmp 0x7fce11
test byte [ebx + 5], 4
je 0x7fcb16
mov ecx, dword [ebx + 8]
mov eax, edi
mul ecx
imul esi, ecx
sar ecx, 0x1f
imul ecx, edi
mov edi, dword [esp + 4]
add ecx, edx
mov edx, eax
add esi, ecx
mov ecx, edi
push esi
call fcn.00789950
add esp, 4
jmp 0x7fcc7b
mov esi, fcn.007ff9d0
xor eax, eax
movzx edx, byte [0xbb7be7]
mov edi, dword [esp + 4]
imul esi, esi
and esi, 3
cmp esi, 2
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7fcc4b
mov al, byte [0xbb7be7]
xor edx, edx
cmp esi, 2
sete dl
mov ecx, edx
xor ecx, 1
lea ecx, [edx + ecx*2 + 2]
mov dl, 1
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb7be7], dl
jne 0x7fcb4b
mov ecx, fcn.007ff9d0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov esi, edx
xor edx, 1
lea edx, [esi + edx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7fcbbb
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb7be7]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt esi, eax
jae 0x7fcb99
jmp 0x7fcc4b
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb7be7]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7fcc22
mov ecx, fcn.007ff9d0
xor eax, eax
mov esi, dword [0xbb7bdc]
mov dl, 1
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete al
mov ecx, eax
not ecx
and ecx, 0x801
lea ecx, [eax + ecx*2 + 0x371ec3f2]
xor esi, ecx
mov dword [0xbb7bdc], esi
not esi
imul esi, ecx
and cl, 7
shl dl, cl
xor dword [0xbb7be0], esi
or byte [0xbb7be7], dl
mov eax, fcn.007ff9d0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb7be7], al
push dword [ebx + 8]
push dword [esp + 0xc]
push 0xbb7bdc
push ebp
call fcn.0078df10
add esp, 0x10
test eax, eax
je 0x7fcac5
mov ecx, edi
mov edx, eax
push fcn.00780fe0
push 1
call fcn.00793600
add esp, 8
mov cl, byte [esp]
mov al, byte [esp + 0x2c]
cmp cl, 0x98
je 0x7fcc8c
cmp cl, 0x96
jne 0x7fcc99
cmp al, 0x41
jne 0x7fcc99
mov ecx, edi
mov edx, 0x43
jmp 0x7fcc9e
movzx edx, al
mov ecx, edi
push 1
call fcn.007c2e20
add esp, 4
movzx eax, word [edi + 8]
mov cl, byte [esp + 0x28]
test al, 0x2c
je 0x7fccbd
and eax, 0xfffd
mov word [edi + 8], ax
cmp cl, 1
jne 0x7fcccb
xor ebp, ebp
mov ecx, edi
jmp case.0x7fce33.103
movzx edx, cl
mov ecx, edi
call fcn.007afa10
mov ebp, eax
mov ecx, edi
jmp case.0x7fce33.103
mov ebx, dword [ebx + 0xc]
mov cl, byte [esp + 0x2c]
mov ebp, edx
movzx edi, byte [esp + 0x28]
movzx esi, cl
lea eax, [esp + 0xc]
mov ecx, ebp
mov edx, ebx
push eax
push esi
mov dword [esp + 8], edi
push edi
call 0x7fc890
add esp, 0xc
mov edi, dword [esp + 0xc]
xor ebp, ebp
test eax, eax
je 0x7fcd17
mov ecx, edi
jmp case.0x7fce33.103
test edi, edi
jne 0x7fcd22
mov ecx, edi
jmp case.0x7fce33.103
mov ecx, edi
call fcn.007c2e30
movzx eax, word [edi + 8]
test al, 8
je 0x7fcd39
fld qword [edi]
fchs
fstp qword [edi]
jmp 0x7fcd70
mov edx, dword [edi + 4]
mov ecx, dword [edi]
mov ebx, edx
xor ebx, 0x80000000
or ebx, ecx
jne 0x7fcd65
and eax, 0x3e40
mov dword [edi + 4], 0x43e00000
mov dword [edi], 0
or eax, 8
mov word [edi + 8], ax
jmp 0x7fcd70
xor eax, eax
neg ecx
sbb eax, edx
mov dword [edi], ecx
mov dword [edi + 4], eax
mov eax, dword [esp]
mov ecx, edi
mov edx, esi
push eax
call fcn.007c2e20
add esp, 4
mov ecx, edi
jmp case.0x7fce33.103
mov ecx, edx
mov ebp, edx
call fcn.007fce40
test eax, eax
mov dword [esp + 0xc], eax
je 0x7fcac3
mov esi, dword [ebx + 8]
mov edi, eax
add esi, 2
mov ecx, esi
call fcn.00783170
lea ebx, [eax - 1]
mov ecx, ebp
mov edx, ebx
shr edx, 0x1f
lea ebp, [eax + edx - 1]
mov edx, esi
sar ebp, 1
push ebx
call fcn.007f9c50
add esp, 4
mov ecx, edi
mov edx, eax
push fcn.00780fe0
push 0
push ebp
call fcn.00789750
add esp, 0xc
jmp 0x7fccc2
mov ecx, edx
call fcn.007fce40
test eax, eax
mov dword [esp + 0xc], eax
je 0x7fce09
mov word [eax + 8], 4
xor ecx, ecx
mov edx, dword [ebx + 8]
cmp byte [edx + 4], 0
mov dword [eax + 4], 0
sete cl
mov dword [eax], ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [eax], ecx
mov ecx, dword [esp + 0x10]
xor ecx, esp
call fcn.00989fe9
mov eax, ebp
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, dword [ebx + 0xc]
jmp 0x7fc8b6
movzx eax, al
xor ecx, ecx
jmp dword [eax*4 + 0xb593ec]