Function at 0x7f1010
Capabilities:
Encode data using xor

Disassembly:
test edx, edx
jne 0x7f1007
xor eax, eax
ret
jmp 0x7f1010
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov eax, dword [0xbcbae0]
mov ebp, ecx
mov edi, dword [esp + 0x30]
mov cl, byte [esp + 0x2c]
mov ebx, edx
xor eax, esp
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
movzx eax, byte [ebx]
cmp al, 0xab
je 0x7f15a6
cmp al, 0xb2
je 0x7f15a6
cmp al, 0xad
jne 0x7f1050
mov al, byte [ebx + 2]
cmp al, 0xaa
je 0x7f10b6
cmp al, 0x24
je 0x7f1066
xor esi, esi
mov edi, 1
mov edx, 0xc1f2c0
jmp 0x7f10dd
mov ecx, dword [ebx + 8]
xor edx, edx
call fcn.007ee450
movzx esi, al
mov edx, dword [ebx + 0xc]
movzx eax, byte [esp + 0x28]
mov ecx, ebp
push edi
push esi
push eax
call 0x7f1010
add esp, 0xc
mov ecx, dword [edi]
mov ebp, eax
test ecx, ecx
je 0x7f1591
mov edx, esi
push 1
call fcn.007b0a40
add esp, 4
mov ecx, dword [edi]
movzx edx, byte [esp + 0x2c]
push 1
call fcn.007b7520
add esp, 4
jmp 0x7f1591
mov ebx, dword [ebx + 0xc]
mov edi, 0xffffffff
mov edx, 0xbb0274
mov al, byte [ebx]
cmp al, 0x98
jne 0x7f10d0
mov esi, 0xffffffff
jmp 0x7f10dd
cmp al, 0x96
mov esi, 0xffffffff
jne 0x7f1467
mov dword [esp + 8], edx
mov edx, fcn.00817390
mov byte [esp], al
not edx
movzx ecx, byte [0xbb027b]
and edx, 1
mov eax, edx
add eax, fcn.00817390
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7f11e5
mov al, byte [0xbb027b]
mov ecx, edx
mov ah, 1
add ecx, fcn.00817390
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb027b], ah
jne 0x7f1112
mov ecx, fcn.00817390
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, fcn.00817390
sete dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7f1176
mov eax, ecx
movzx edx, byte [0xbb027b]
add eax, fcn.00817390
sete al
or al, 2
movzx eax, al
bt edx, eax
jae 0x7f1159
jmp 0x7f11e5
add ecx, fcn.00817390
movzx ecx, byte [0xbb027b]
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7f11c3
mov eax, fcn.00817390
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.00817390
mov al, 1
sete cl
or ecx, 0x4f38248a
add ecx, 0x10a8
xor dword [0xbb0274], ecx
and cl, 7
shl al, cl
or byte [0xbb027b], al
mov eax, fcn.00817390
not eax
and eax, 1
add eax, fcn.00817390
mov al, 0xfe
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb027b], al
mov cl, byte [esp]
mov edx, ebp
xor ebp, ebp
mov eax, ecx
add al, 0x6a
cmp al, 0x14
jbe 0x7f15ae
cmp cl, 0x73
je case.0x7f15b3.106
cmp cl, 0x77
mov ecx, 0
jne case.0x7f15b3.103
mov ecx, edx
mov ebp, edx
call fcn.007f15c0
test eax, eax
mov dword [esp + 0xc], eax
je 0x7f1243
mov ecx, eax
mov esi, eax
call fcn.0077e0b0
xor ebp, ebp
mov ecx, esi
jmp case.0x7f15b3.103
mov ecx, edx
mov ebp, edx
call fcn.007f15c0
test eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], eax
jne 0x7f1266
xor edi, edi
mov ecx, ebp
call fcn.0077e7a0
mov ecx, ebp
xor edx, edx
call fcn.00774f10
mov ecx, edi
call fcn.0077dcf0
mov ebp, 7
jmp 0x7f1591
test byte [ebx + 5], 4
je 0x7f1296
mov ecx, dword [ebx + 8]
mov eax, edi
mul ecx
imul esi, ecx
sar ecx, 0x1f
imul ecx, edi
mov edi, dword [esp + 4]
add ecx, edx
mov edx, eax
add esi, ecx
mov ecx, edi
push esi
call fcn.0077e060
add esp, 4
jmp 0x7f13fb
mov esi, fcn.007f4150
xor eax, eax
movzx edx, byte [0xbb0287]
mov edi, dword [esp + 4]
imul esi, esi
and esi, 3
cmp esi, 2
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7f13cb
mov al, byte [0xbb0287]
xor edx, edx
cmp esi, 2
sete dl
mov ecx, edx
xor ecx, 1
lea ecx, [edx + ecx*2 + 2]
mov dl, 1
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb0287], dl
jne 0x7f12cb
mov ecx, fcn.007f4150
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov esi, edx
xor edx, 1
lea edx, [esi + edx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7f133b
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb0287]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt esi, eax
jae 0x7f1319
jmp 0x7f13cb
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb0287]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7f13a2
mov ecx, fcn.007f4150
xor eax, eax
mov esi, dword [0xbb027c]
mov dl, 1
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete al
mov ecx, eax
not ecx
and ecx, 0x801
lea ecx, [eax + ecx*2 + 0x371ec3f2]
xor esi, ecx
mov dword [0xbb027c], esi
not esi
imul esi, ecx
and cl, 7
shl dl, cl
xor dword [0xbb0280], esi
or byte [0xbb0287], dl
mov eax, fcn.007f4150
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
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 [0xbb0287], al
push dword [ebx + 8]
push dword [esp + 0xc]
push 0xbb027c
push ebp
call fcn.00782620
add esp, 0x10
test eax, eax
je 0x7f1245
mov ecx, edi
mov edx, eax
push fcn.007756e0
push 1
call fcn.00787d00
add esp, 8
mov cl, byte [esp]
mov al, byte [esp + 0x2c]
cmp cl, 0x98
je 0x7f140c
cmp cl, 0x96
jne 0x7f1419
cmp al, 0x41
jne 0x7f1419
mov ecx, edi
mov edx, 0x43
jmp 0x7f141e
movzx edx, al
mov ecx, edi
push 1
call fcn.007b7520
add esp, 4
movzx eax, word [edi + 8]
mov cl, byte [esp + 0x28]
test al, 0x2c
je 0x7f143d
and eax, 0xfffd
mov word [edi + 8], ax
cmp cl, 1
jne 0x7f144b
xor ebp, ebp
mov ecx, edi
jmp case.0x7f15b3.103
movzx edx, cl
mov ecx, edi
call fcn.007a4110
mov ebp, eax
mov ecx, edi
jmp case.0x7f15b3.103
mov ebx, dword [ebx + 0xc]
mov cl, byte [esp + 0x2c]
mov ebp, edx
movzx edi, byte [esp + 0x28]
movzx esi, cl
lea eax, [esp + 0xc]
mov ecx, ebp
mov edx, ebx
push eax
push esi
mov dword [esp + 8], edi
push edi
call 0x7f1010
add esp, 0xc
mov edi, dword [esp + 0xc]
xor ebp, ebp
test eax, eax
je 0x7f1497
mov ecx, edi
jmp case.0x7f15b3.103
test edi, edi
jne 0x7f14a2
mov ecx, edi
jmp case.0x7f15b3.103
mov ecx, edi
call fcn.007b7530
movzx eax, word [edi + 8]
test al, 8
je 0x7f14b9
fld qword [edi]
fchs
fstp qword [edi]
jmp 0x7f14f0
mov edx, dword [edi + 4]
mov ecx, dword [edi]
mov ebx, edx
xor ebx, 0x80000000
or ebx, ecx
jne 0x7f14e5
and eax, 0x3e40
mov dword [edi + 4], 0x43e00000
mov dword [edi], 0
or eax, 8
mov word [edi + 8], ax
jmp 0x7f14f0
xor eax, eax
neg ecx
sbb eax, edx
mov dword [edi], ecx
mov dword [edi + 4], eax
mov eax, dword [esp]
mov ecx, edi
mov edx, esi
push eax
call fcn.007b7520
add esp, 4
mov ecx, edi
jmp case.0x7f15b3.103
mov ecx, edx
mov ebp, edx
call fcn.007f15c0
test eax, eax
mov dword [esp + 0xc], eax
je 0x7f1243
mov esi, dword [ebx + 8]
mov edi, eax
add esi, 2
mov ecx, esi
call fcn.00777870
lea ebx, [eax - 1]
mov ecx, ebp
mov edx, ebx
shr edx, 0x1f
lea ebp, [eax + edx - 1]
mov edx, esi
sar ebp, 1
push ebx
call fcn.007ee3d0
add esp, 4
mov ecx, edi
mov edx, eax
push fcn.007756e0
push 0
push ebp
call fcn.0077de60
add esp, 0xc
jmp 0x7f1442
mov ecx, edx
call fcn.007f15c0
test eax, eax
mov dword [esp + 0xc], eax
je 0x7f1589
mov word [eax + 8], 4
xor ecx, ecx
mov edx, dword [ebx + 8]
cmp byte [edx + 4], 0
mov dword [eax + 4], 0
sete cl
mov dword [eax], ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [eax], ecx
mov ecx, dword [esp + 0x10]
xor ecx, esp
call fcn.00980459
mov eax, ebp
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, dword [ebx + 0xc]
jmp 0x7f1036
movzx eax, al
xor ecx, ecx
jmp dword [eax*4 + 0xb50d8c]