Function at 0x7f7260
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 0x7f728a
cmp ecx, 0x58
je 0x7f72a1
cmp edx, 0x56
jne 0x7f74d5
cmp ecx, 0x58
je 0x7f72a1
cmp ecx, 0x55
jne 0x7f74d5
mov edx, fcn.007a68e0
xor eax, eax
movzx ebx, byte [0xbbc277]
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 0x7f74af
mov al, byte [0xbbc277]
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 [0xbbc277], ah
jne 0x7f72d6
mov ecx, fcn.007a68e0
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 0x7f734e
xor eax, eax
cmp ecx, 3
movzx ebx, byte [0xbbc277]
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt ebx, eax
jae 0x7f7328
jmp 0x7f74af
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbbc277]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7f7484
mov ecx, fcn.007a68e0
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 [0xbbc250]
xor eax, ecx
mov dword [0xbbc250], eax
not eax
mov edx, dword [0xbbc254]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbbc254], edx
or ebx, eax
not edx
mov eax, dword [0xbbc258]
imul edx, ebx
lea ebx, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbbc258], eax
or ebx, edx
not eax
mov edx, dword [0xbbc25c]
imul eax, ebx
lea ebx, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbbc25c], edx
or ebx, eax
not edx
mov eax, dword [0xbbc260]
imul edx, ebx
mov ebx, edx
shl ebx, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbbc260], eax
or edx, ebx
not eax
imul eax, edx
mov edx, dword [0xbbc264]
mov ebx, eax
shl ebx, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbbc264], edx
or eax, ebx
not edx
mov ebp, dword [0xbbc268]
imul edx, eax
mov ebx, edx
shl ebx, 6
xor ebp, edx
shr edx, 0x19
mov dword [0xbbc268], 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 [0xbbc270], edx
mov dl, 1
shl dl, cl
or byte [0xbbc277], dl
mov eax, fcn.007a68e0
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 [0xbbc277], al
push 0xbbc250
push edi
call fcn.0078de60
add esp, 8
mov edx, dword [esp + 0x24]
mov ecx, dword [edi]
call fcn.007cb9e0
mov ecx, dword [edi]
mov edx, esi
call fcn.007cb9e0
xor ebp, ebp
jmp 0x7f753a
mov ecx, dword [edi]
mov edx, 0x64
mov byte [esp + 3], al
push 0
call fcn.0078a8a0
add esp, 4
mov edx, dword [esp + 0x24]
test eax, eax
je 0x7f74c1
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 0x7f751a
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.0083bbd0
mov ecx, edi
mov edx, esi
mov dword [ebp + 0x1c], eax
call fcn.0083bbd0
mov dword [ebp + 0x18], eax
mov eax, ebp
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret