Function at 0x7b0070
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, dword [0xbd33e0]
mov edi, edx
mov esi, ecx
mov ebp, esp
xor edx, edx
mov ecx, ebp
xor eax, esp
mov dword [esp + 0x18], eax
push 0
push 0x20
push esi
call fcn.007832c0
add esp, 0xc
movzx eax, word [edi + 8]
test al, 4
je 0x7b01fe
mov edx, 0x78a8d0
xor eax, eax
movzx ebx, byte [0xbb4e9f]
and edx, 1
inc edx
mov ecx, edx
xor ecx, 0x78a8d0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt ebx, eax
jb 0x7b01ee
mov al, byte [0xbb4e9f]
mov ebp, edx
xor ebx, ebx
mov ah, 1
xor ebp, 0x78a8d0
sete bl
mov ecx, ebx
xor ecx, 1
lea ecx, [ebx + ecx*2 + 2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb4e9f], ah
jne 0x7b00d9
mov ecx, 0x78a8d0
xor edx, edx
movzx eax, al
and ecx, 1
inc ecx
mov ebx, ecx
xor ebx, 0x78a8d0
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7b0158
mov ebp, esp
mov edx, ecx
xor eax, eax
movzx ebx, byte [0xbb4e9f]
xor edx, 0x78a8d0
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt ebx, eax
jae 0x7b0131
jmp 0x7b01ee
xor eax, eax
xor ecx, 0x78a8d0
movzx edx, byte [0xbb4e9f]
mov ebp, esp
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7b01c5
mov ecx, 0x78a8d0
xor eax, eax
mov ebx, dword [0xbb4e94]
mov dl, 1
and ecx, 1
inc ecx
xor ecx, 0x78a8d0
sete al
mov ecx, eax
not ecx
and ecx, 0x405
lea ecx, [eax + ecx*2 + 0x3afc932]
xor ebx, ecx
mov dword [0xbb4e94], ebx
not ebx
imul ebx, ecx
and cl, 7
shl dl, cl
xor dword [0xbb4e98], ebx
or byte [0xbb4e9f], dl
mov eax, 0x78a8d0
xor ecx, ecx
and eax, 1
inc eax
xor eax, 0x78a8d0
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 [0xbb4e9f], al
push dword [edi + 4]
push dword [edi]
push 0xbb4e94
push ebp
jmp 0x7b049f
test al, 0x20
je 0x7b036f
mov edx, fcn.0080ea40
xor eax, eax
movzx ebx, byte [0xbb4eab]
not edx
and edx, 1
mov ecx, edx
add ecx, fcn.0080ea40
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt ebx, eax
jb 0x7b0356
mov al, byte [0xbb4eab]
mov ebx, edx
xor ecx, ecx
mov ah, 1
add ebx, fcn.0080ea40
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 [0xbb4eab], ah
jne 0x7b023b
mov ecx, fcn.0080ea40
xor edx, edx
movzx eax, al
not ecx
and ecx, 1
mov ebx, ecx
add ebx, fcn.0080ea40
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7b02b9
mov edx, ecx
xor eax, eax
movzx ebx, byte [0xbb4eab]
add edx, fcn.0080ea40
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt ebx, eax
jae 0x7b0292
jmp 0x7b0356
xor eax, eax
add ecx, fcn.0080ea40
movzx edx, byte [0xbb4eab]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7b032c
mov ecx, fcn.0080ea40
xor eax, eax
mov ebx, dword [0xbb4ea0]
not ecx
and ecx, 1
add ecx, fcn.0080ea40
sete al
mov ecx, eax
not ecx
and ecx, 0x8a9
lea ecx, [eax + ecx*2 + 0x6d2da752]
mov edx, ecx
xor ebx, ecx
shr edx, 0x1f
mov dword [0xbb4ea0], ebx
not ebx
or edx, ecx
and cl, 7
imul edx, ebx
xor dword [0xbb4ea4], edx
mov dl, 1
shl dl, cl
or byte [0xbb4eab], dl
mov eax, fcn.0080ea40
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.0080ea40
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 [0xbb4eab], al
fild qword [edi]
sub esp, 0x10
fstp qword [esp + 8]
mov dword [esp], ebp
mov dword [esp + 4], 0xbb4ea0
jmp 0x7b049f
mov edx, 0x7ab1c0
movzx ecx, byte [0xbb4eb7]
not edx
and edx, 1
mov eax, edx
add eax, 0x7ab1c0
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7b048b
mov al, byte [0xbb4eb7]
mov ecx, edx
mov ah, 1
add ecx, 0x7ab1c0
sete cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb4eb7], ah
jne 0x7b039d
mov ecx, 0x7ab1c0
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, 0x7ab1c0
sete dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7b0404
mov eax, ecx
movzx edx, byte [0xbb4eb7]
add eax, 0x7ab1c0
sete al
or al, 4
movzx eax, al
bt edx, eax
jae 0x7b03e4
jmp 0x7b048b
add ecx, 0x7ab1c0
movzx ecx, byte [0xbb4eb7]
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7b0469
mov eax, 0x7ab1c0
xor ecx, ecx
not eax
and eax, 1
add eax, 0x7ab1c0
mov eax, dword [0xbb4eac]
sete cl
or ecx, 0xd8698858
add ecx, 0x24c
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb4eac], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbb4eb0], edx
mov dl, 1
shl dl, cl
or byte [0xbb4eb7], dl
mov eax, 0x7ab1c0
not eax
and eax, 1
add eax, 0x7ab1c0
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb4eb7], al
fld qword [edi]
sub esp, 0x10
fstp qword [esp + 8]
mov dword [esp], ebp
mov dword [esp + 4], 0xbb4eac
call fcn.00783530
add esp, 0x10
mov eax, dword [esp + 0x10]
mov byte [esi + eax], 0
mov ecx, dword [esp + 0x18]
xor ecx, esp
call fcn.00989fe9
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret