Function at 0x7c9df0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
mov edi, dword [ecx]
mov esi, ecx
mov eax, 7
cmp byte [edi + 0x51], 0
jne 0x7ca343
mov eax, dword [esi + 4]
cmp dword [eax], 0
jne 0x7ca346
mov eax, dword [esp + 0x18]
test byte [esi + 0x10], 1
je 0x7c9e36
mov ecx, edi
mov edx, eax
call fcn.0078a6b0
mov ecx, dword [esi + 4]
mov dword [ecx], eax
mov eax, 1
jmp 0x7ca343
test byte [edi + 0x20], 1
je 0x7c9e46
mov ecx, 0x7603
jmp 0x7ca339
mov ebp, 0x80ea20
xor eax, eax
movzx ebx, byte [0xbb605b]
imul ebp, ebp
and ebp, 3
cmp ebp, 3
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x7c9f7c
mov al, byte [0xbb605b]
xor ebx, ebx
cmp ebp, 3
mov ah, 1
sete bl
mov ecx, ebx
xor ecx, 1
lea ecx, [ebx + ecx*2 + 6]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb605b], ah
jne 0x7c9e7c
mov ecx, 0x80ea20
xor ebx, ebx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete bl
mov ebp, ebx
xor ebx, 1
lea ebx, [ebp + ebx*2 + 6]
and bl, 7
xor bl, 7
movzx ebx, bl
bt eax, ebx
jae 0x7c9ef7
xor eax, eax
cmp ecx, 3
movzx ebp, byte [0xbb605b]
sete al
mov ebx, eax
xor ebx, 1
lea eax, [eax + ebx*2 + 6]
and al, 7
movzx eax, al
bt ebp, eax
jae 0x7c9ed0
jmp 0x7c9f7c
xor eax, eax
cmp ecx, 3
movzx ebx, byte [0xbb605b]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x7c9f50
mov ecx, 0x80ea20
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete al
mov ecx, eax
not ecx
and ecx, 0x649
lea ecx, [eax + ecx*2 - 0x304756da]
mov al, 1
xor dword [0xbb6054], ecx
and cl, 7
shl al, cl
or byte [0xbb605b], al
mov eax, 0x80ea20
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 6]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb605b], al
mov ebp, fcn.007fcea0
xor eax, eax
movzx ebx, byte [0xbb6083]
and ebp, 1
inc ebp
mov ecx, ebp
xor ecx, fcn.007fcea0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt ebx, eax
jb 0x7ca174
mov al, byte [0xbb6083]
mov ebx, ebp
xor ecx, ecx
mov ah, 1
xor ebx, fcn.007fcea0
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb6083], ah
jne 0x7c9fb0
mov ecx, fcn.007fcea0
xor ebx, ebx
movzx eax, al
and ecx, 1
inc ecx
mov ebp, ecx
xor ebp, fcn.007fcea0
sete bl
mov ebp, ebx
xor ebx, 1
lea ebx, [ebp + ebx*2 + 2]
xor bl, 7
movzx ebx, bl
bt eax, ebx
jae 0x7ca02d
mov ebx, ecx
xor eax, eax
movzx ebp, byte [0xbb6083]
xor ebx, fcn.007fcea0
sete al
mov ebx, eax
xor ebx, 1
lea eax, [eax + ebx*2 + 2]
bt ebp, eax
jae 0x7ca006
jmp 0x7ca174
xor eax, eax
xor ecx, fcn.007fcea0
movzx ebx, byte [0xbb6083]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt ebx, eax
jb 0x7ca14b
mov ecx, fcn.007fcea0
xor eax, eax
and ecx, 1
inc ecx
xor ecx, fcn.007fcea0
sete al
mov ecx, eax
not ecx
and ecx, 0x921
lea ecx, [eax + ecx*2 - 0x34a1f926]
mov eax, dword [0xbb6060]
mov ebx, ecx
shr ebx, 0x1f
or ebx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb6060], eax
not eax
imul ebx, eax
mov eax, dword [0xbb6064]
lea ebp, [ebx + ebx]
xor eax, ebx
shr ebx, 0x1e
mov dword [0xbb6064], eax
or ebp, ebx
not eax
mov ebx, dword [0xbb6068]
imul eax, ebp
lea ebp, [eax*4]
xor ebx, eax
shr eax, 0x1d
mov dword [0xbb6068], ebx
or ebp, eax
not ebx
mov eax, dword [0xbb606c]
imul ebx, ebp
lea ebp, [ebx*8]
xor eax, ebx
shr ebx, 0x1c
mov dword [0xbb606c], eax
or ebp, ebx
not eax
mov ebx, dword [0xbb6070]
imul eax, ebp
mov ebp, eax
shl ebp, 4
xor ebx, eax
shr eax, 0x1b
mov dword [0xbb6070], ebx
or eax, ebp
not ebx
imul ebx, eax
mov eax, dword [0xbb6074]
mov ebp, ebx
shl ebp, 5
xor eax, ebx
shr ebx, 0x1a
mov dword [0xbb6074], eax
or ebx, ebp
not eax
imul eax, ebx
mov ebx, dword [0xbb6078]
mov ebp, eax
shl ebp, 6
xor ebx, eax
shr eax, 0x19
mov dword [0xbb6078], ebx
or eax, ebp
not ebx
imul ebx, eax
mov ah, 1
xor dword [0xbb607c], ebx
shl ah, cl
or byte [0xbb6083], ah
mov eax, fcn.007fcea0
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.007fcea0
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 [0xbb6083], al
test edx, edx
mov eax, 0xbb6054
cmovne eax, edx
push eax
push 0xbb6060
push edi
call fcn.0078df10
add esp, 0xc
mov ebx, dword [esp + 0x18]
test ebx, ebx
je 0x7ca32f
cmp byte [ebx], 0
je 0x7ca32f
mov ebp, fcn.008266b0
mov dword [esp], eax
xor eax, eax
not ebp
movzx edx, byte [0xbb6093]
and ebp, 1
mov ecx, ebp
add ecx, fcn.008266b0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7ca31c
mov al, byte [0xbb6093]
mov ebx, ebp
xor ecx, ecx
mov ah, 1
add ebx, fcn.008266b0
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb6093], ah
jne 0x7ca1da
mov ecx, fcn.008266b0
xor edx, edx
movzx eax, al
not ecx
and ecx, 1
mov ebp, ecx
add ebp, fcn.008266b0
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7ca25c
mov ebx, dword [esp + 0x18]
mov edx, ecx
xor eax, eax
movzx ebp, byte [0xbb6093]
add edx, fcn.008266b0
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt ebp, eax
jae 0x7ca235
jmp 0x7ca31c
xor eax, eax
add ecx, fcn.008266b0
movzx edx, byte [0xbb6093]
mov ebx, dword [esp + 0x18]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7ca2f2
mov ecx, fcn.008266b0
xor eax, eax
mov ebx, dword [0xbb6084]
not ecx
and ecx, 1
add ecx, fcn.008266b0
sete al
mov ecx, eax
not ecx
and ecx, 0x405
lea ecx, [eax + ecx*2 - 0x2c4a0536]
xor ebx, ecx
mov edx, ecx
mov dword [0xbb6084], ebx
shr edx, 0x1f
not ebx
mov ebp, dword [str.B7q_n]
or edx, ecx
and cl, 7
imul edx, ebx
lea ebx, [edx + edx]
xor ebp, edx
shr edx, 0x1e
mov dword [str.B7q_n], ebp
or ebx, edx
not ebp
mov dl, 1
imul ebp, ebx
mov ebx, dword [esp + 0x18]
shl dl, cl
xor dword [0xbb608c], ebp
or byte [0xbb6093], dl
mov eax, fcn.008266b0
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.008266b0
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 [0xbb6093], al
push ebx
push dword [esp + 4]
push 0xbb6084
push edi
call fcn.0078df10
add esp, 0x10
mov ecx, dword [esi + 4]
mov dword [ecx], eax
mov ecx, 0x760a
call fcn.007a5560
mov eax, 0xb
mov dword [esi + 0xc], eax
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret