Function at 0x7dc0b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov eax, dword [esp + 0x20]
mov esi, dword [ecx]
mov edi, edx
mov ebp, ecx
test edx, edx
jne 0x7dc0c9
xor ecx, ecx
jmp 0x7dc0cb
mov ecx, dword [edi]
mov ebx, dword [esp + 0x24]
test eax, eax
je 0x7dc383
test ebx, ebx
je 0x7dc383
cmp byte [ebx], 0x88
mov eax, dword [eax + 4]
mov dword [esp], ecx
je 0x7dc2f0
mov ecx, ebx
mov dword [esp + 4], eax
call fcn.007efd90
mov edx, eax
mov eax, dword [esp + 4]
cmp eax, edx
je 0x7dc2f0
mov ebx, esi
mov esi, fcn.007b0ce0
movzx ecx, byte [0xbb2cd3]
not esi
and esi, 1
mov eax, esi
add eax, fcn.007b0ce0
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7dc2d2
mov al, byte [0xbb2cd3]
mov ecx, esi
mov ah, 1
add ecx, fcn.007b0ce0
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb2cd3], ah
jne 0x7dc137
mov ecx, fcn.007b0ce0
not ecx
and ecx, 1
mov esi, ecx
add esi, fcn.007b0ce0
movzx esi, al
sete ah
or ah, 2
xor ah, 7
movzx eax, ah
bt esi, eax
jae 0x7dc19e
mov eax, ecx
movzx esi, byte [0xbb2cd3]
add eax, fcn.007b0ce0
sete al
or al, 2
movzx eax, al
bt esi, eax
jae 0x7dc17e
jmp 0x7dc2d2
add ecx, fcn.007b0ce0
movzx ecx, byte [0xbb2cd3]
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7dc2b0
mov eax, fcn.007b0ce0
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.007b0ce0
mov eax, dword [0xbb2cb0]
sete cl
or ecx, 0x2b3254f2
add ecx, 0x1008
xor eax, ecx
mov dword [esp], ecx
mov dword [0xbb2cb0], eax
not eax
mov esi, dword [0xbb2cb4]
imul eax, ecx
lea ecx, [eax + eax]
xor esi, eax
shr eax, 0x1e
mov dword [0xbb2cb4], esi
or ecx, eax
not esi
mov eax, dword [0xbb2cb8]
imul esi, ecx
lea ecx, [esi*4]
xor eax, esi
shr esi, 0x1d
mov dword [0xbb2cb8], eax
or ecx, esi
not eax
imul eax, ecx
mov ecx, dword [0xbb2cbc]
lea esi, [eax*8]
xor ecx, eax
shr eax, 0x1c
mov dword [0xbb2cbc], ecx
or esi, eax
not ecx
mov eax, dword [0xbb2cc0]
imul ecx, esi
mov esi, ecx
shl esi, 4
xor eax, ecx
shr ecx, 0x1b
mov dword [0xbb2cc0], eax
or ecx, esi
not eax
imul eax, ecx
mov ecx, dword [0xbb2cc4]
mov esi, eax
shl esi, 5
xor ecx, eax
shr eax, 0x1a
mov dword [0xbb2cc4], ecx
or eax, esi
not ecx
imul ecx, eax
mov eax, dword [0xbb2cc8]
mov esi, ecx
shl esi, 6
xor eax, ecx
shr ecx, 0x19
mov dword [0xbb2cc8], eax
or ecx, esi
not eax
imul eax, ecx
mov ecx, dword [esp]
xor dword [0xbb2ccc], eax
mov al, 1
and cl, 7
shl al, cl
or byte [0xbb2cd3], al
mov eax, fcn.007b0ce0
not eax
and eax, 1
add eax, fcn.007b0ce0
mov al, 0xfe
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb2cd3], al
push edx
push dword [esp + 8]
push 0xbb2cb0
push ebp
call fcn.00782570
add esp, 0x10
mov esi, ebx
mov ebx, dword [esp + 0x24]
jmp 0x7dc383
test eax, eax
mov dword [esp + 8], esi
jg 0x7dc2fe
mov ecx, dword [esp + 0x20]
jmp 0x7dc35b
xor esi, esi
mov ecx, ebp
mov edx, ebx
push esi
call fcn.00818370
add esp, 4
test eax, eax
jne 0x7dc317
mov ecx, dword [esp + 0x20]
jmp 0x7dc355
mov ebx, dword [esp + 0x20]
mov edx, edi
mov ecx, dword [ebx + 4]
mov dword [eax + 0x1c], ecx
mov ecx, ebp
push eax
call fcn.007d8ad0
add esp, 4
test eax, eax
jne 0x7dc336
xor edi, edi
jmp 0x7dc34f
mov edi, eax
mov eax, dword [ebx]
mov ecx, dword [edi]
mov eax, dword [eax + esi*8]
lea ecx, [ecx + ecx*4]
mov dword [edi + ecx*4 - 0xc], eax
mov eax, dword [ebx]
mov dword [eax + esi*8], 0
mov ecx, ebx
mov ebx, dword [esp + 0x24]
inc esi
cmp esi, dword [ecx + 4]
jl 0x7dc300
mov esi, dword [esp + 8]
cmp byte [esi + 0x51], 0
jne 0x7dc383
test edi, edi
je 0x7dc383
cmp byte [ebx], 0x88
jne 0x7dc383
mov eax, dword [esp]
lea eax, [eax + eax*4]
mov eax, dword [edi + eax*4 + 4]
mov dword [eax + 0x10], ebx
xor ebx, ebx
mov ecx, dword [ecx + 4]
mov dword [eax + 0x1c], ecx
mov ecx, ebp
mov edx, ebx
call fcn.007df1c0
mov edx, dword [esp + 0x20]
mov ecx, esi
call fcn.007c0430
mov eax, edi
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret