Function at 0x7eb9e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
test edx, edx
mov ebx, 0x59
mov edi, ecx
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
cmovne ebx, edx
mov edx, dword [esp + 0x18]
sete al
cmp edx, 0x55
jne 0x7eba0a
cmp ecx, 0x58
je 0x7eba21
cmp edx, 0x56
jne 0x7ebc55
cmp ecx, 0x58
je 0x7eba21
cmp ecx, 0x55
jne 0x7ebc55
mov edx, fcn.0079aff0
xor eax, eax
movzx ebx, byte [0xbb4917]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x7ebc2f
mov al, byte [0xbb4917]
xor ecx, ecx
cmp edx, 3
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ecx + ebx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb4917], ah
jne 0x7eba56
mov ecx, fcn.0079aff0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
mov ebx, edx
not ebx
lea edx, [edx + ebx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7ebace
xor eax, eax
cmp ecx, 3
movzx ebx, byte [0xbb4917]
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt ebx, eax
jae 0x7ebaa8
jmp 0x7ebc2f
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbb4917]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7ebc04
mov ecx, fcn.0079aff0
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete al
mov ecx, eax
not ecx
and ecx, 0x8b3
lea ecx, [eax + ecx*2 + 0x35e5d14c]
mov eax, dword [0xbb48f0]
xor eax, ecx
mov dword [0xbb48f0], eax
not eax
mov edx, dword [0xbb48f4]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb48f4], edx
or ebx, eax
not edx
mov eax, dword [0xbb48f8]
imul edx, ebx
lea ebx, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb48f8], eax
or ebx, edx
not eax
mov edx, dword [0xbb48fc]
imul eax, ebx
lea ebx, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb48fc], edx
or ebx, eax
not edx
mov eax, dword [0xbb4900]
imul edx, ebx
mov ebx, edx
shl ebx, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb4900], eax
or edx, ebx
not eax
imul eax, edx
mov edx, dword [0xbb4904]
mov ebx, eax
shl ebx, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbb4904], edx
or eax, ebx
not edx
mov ebp, dword [0xbb4908]
imul edx, eax
mov ebx, edx
shl ebx, 6
xor ebp, edx
shr edx, 0x19
mov dword [0xbb4908], ebp
or edx, ebx
not ebp
imul ebp, edx
mov edx, dword [str._oxX_4_v]
mov ebx, ebp
shl ebx, 7
xor edx, ebp
shr ebp, 0x18
mov dword [str._oxX_4_v], edx
or ebp, ebx
not edx
imul edx, ebp
xor dword [0xbb4910], edx
mov dl, 1
shl dl, cl
or byte [0xbb4917], dl
mov eax, fcn.0079aff0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
not eax
lea ecx, [ecx + eax*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb4917], al
push 0xbb48f0
push edi
call fcn.00782570
add esp, 8
mov edx, dword [esp + 0x24]
mov ecx, dword [edi]
call fcn.007c00e0
mov ecx, dword [edi]
mov edx, esi
call fcn.007c00e0
xor ebp, ebp
jmp 0x7ebcba
mov ecx, dword [edi]
mov edx, 0x64
mov byte [esp + 3], al
push 0
call fcn.0077efb0
add esp, 4
mov edx, dword [esp + 0x24]
test eax, eax
je 0x7ebc41
mov ecx, dword [esp + 0x18]
mov ebp, eax
mov al, byte [esp + 0x28]
mov byte [ebp + 0x10], bl
mov byte [ebp + 0x11], cl
mov ecx, dword [esp + 0x20]
test al, al
mov byte [ebp + 0x12], cl
jne 0x7ebc9a
mov eax, dword [edi]
mov al, byte [eax + 0x4c]
shl al, 6
sar al, 7
and al, 0x42
mov byte [ebp + 0x14], al
mov al, byte [esp + 3]
mov ecx, edi
mov byte [ebp + 0x13], al
call fcn.00830370
mov ecx, edi
mov edx, esi
mov dword [ebp + 0x1c], eax
call fcn.00830370
mov dword [ebp + 0x18], eax
mov eax, ebp
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret