Function at 0x78d670
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
mov ebp, dword [ecx]
mov esi, ecx
mov dword [esp], edx
test byte [ebp + 0x18], 0x10
jne 0x78d695
mov ecx, esi
call fcn.007d1540
mov ecx, eax
xor eax, eax
test ecx, ecx
jne 0x78de58
mov ebx, dword [esp + 0x18]
mov ecx, ebp
mov edx, ebx
push dword [esp + 0x1c]
call fcn.00797640
add esp, 4
test eax, eax
jne 0x78d87d
cmp byte [esi + 0x19], 0
jne 0x78d86b
lea ecx, [ebp + 0x168]
mov edx, ebx
call fcn.007cb020
mov edi, eax
test eax, eax
jne 0x78d852
mov edx, fcn.007a0f90
xor eax, eax
movzx edi, byte [0xbb6b43]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edi, eax
jb 0x78d833
mov al, byte [0xbb6b43]
mov edi, ebx
xor ebx, ebx
cmp edx, 2
mov ah, 1
sete bl
mov ecx, ebx
xor ecx, 1
lea ebx, [ebx + ecx*2]
mov cl, 7
or bl, 4
sub cl, bl
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb6b43], ah
jne 0x78d709
mov ecx, fcn.007a0f90
xor edx, edx
mov ah, 7
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2]
or dl, 4
sub ah, dl
movzx edx, ah
movzx eax, al
bt eax, edx
jae 0x78d785
mov ebx, edi
xor eax, eax
cmp ecx, 2
movzx edi, byte [0xbb6b43]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2]
or al, 4
movzx eax, al
bt edi, eax
jae 0x78d75f
jmp 0x78d833
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb6b43]
mov ebx, edi
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x78d808
mov ecx, fcn.007a0f90
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete al
mov ecx, eax
not ecx
and ecx, 0x41
lea ecx, [eax + ecx*2 + 0x1eec3bb4]
mov eax, dword [0xbb6b34]
xor eax, ecx
mov dword [0xbb6b34], eax
not eax
mov edx, dword [0xbb6b38]
imul eax, ecx
and cl, 7
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb6b38], edx
or eax, edi
not edx
imul edx, eax
xor dword [0xbb6b3c], edx
mov dl, 1
shl dl, cl
or byte [0xbb6b43], dl
mov eax, fcn.007a0f90
xor ecx, ecx
mov dl, 0xfe
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 1
lea eax, [ecx + eax*2]
mov cl, 7
or al, 4
sub cl, al
rol dl, cl
and byte [0xbb6b43], dl
push 7
push 0xbb6b34
push ebx
call fcn.00783750
add esp, 0xc
test eax, eax
jne 0x78d86b
mov ecx, ebp
mov edx, ebx
call fcn.007d1580
mov edi, eax
test edi, edi
je 0x78d86b
mov ecx, esi
mov edx, edi
call fcn.007d15c0
test eax, eax
je 0x78d86b
mov eax, dword [edi + 0x14]
jmp 0x78de58
xor eax, eax
test byte [esp], 2
jne 0x78de58
mov byte [esi + 0x11], 1
jmp 0x78d891
cmp dword [eax + 0x38], 0
je 0x78de58
cmp byte [esi + 0x19], 0
je 0x78de58
mov eax, fcn.007abfd0
mov edx, 3
movzx edi, byte [0xbb6b63]
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.007abfd0
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt edi, eax
jb 0x78da22
mov al, byte [0xbb6b63]
mov ebp, ebx
mov edi, edx
xor ecx, ecx
mov ah, 1
xor edi, fcn.007abfd0
sete cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb6b63], ah
jne 0x78d8c9
mov edx, fcn.007abfd0
mov ecx, 3
movzx eax, al
sub ecx, edx
xor edx, edx
mov edi, ecx
xor edi, fcn.007abfd0
sete dl
mov ebx, edx
xor ebx, 5
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x78d948
mov ebx, ebp
mov edx, ecx
xor eax, eax
movzx edi, byte [0xbb6b63]
xor edx, fcn.007abfd0
sete al
mov edx, eax
xor edx, 5
lea eax, [edx + eax*2]
bt edi, eax
jae 0x78d922
jmp 0x78da22
xor eax, eax
xor ecx, fcn.007abfd0
movzx edx, byte [0xbb6b63]
mov ebx, ebp
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x78d9f6
mov eax, fcn.007abfd0
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.007abfd0
sete al
mov ecx, eax
xor ecx, 0xfc701c35
lea ecx, [ecx + eax*2 + 0x590]
mov eax, dword [0xbb6b50]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb6b50], eax
not eax
imul edx, eax
mov eax, dword [0xbb6b54]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb6b54], eax
or edi, edx
not eax
mov edx, dword [0xbb6b58]
imul eax, edi
lea edi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb6b58], edx
or edi, eax
not edx
mov al, 1
imul edx, edi
shl al, cl
xor dword [0xbb6b5c], edx
or byte [0xbb6b63], al
mov eax, fcn.007abfd0
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.007abfd0
sete al
mov ecx, eax
xor ecx, 5
lea ecx, [ecx + eax*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb6b63], al
mov edx, 0x8408f0
xor eax, eax
movzx edi, byte [0xbb6b83]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt edi, eax
jb 0x78db86
mov al, byte [0xbb6b83]
mov edi, ebx
xor ecx, ecx
cmp edx, 3
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb6b83], ah
jne 0x78da54
mov ecx, 0x8408f0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
mov ebx, edx
xor ebx, 5
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x78dac3
mov ebx, edi
xor eax, eax
cmp ecx, 3
movzx edi, byte [0xbb6b83]
sete al
mov edx, eax
xor edx, 5
lea eax, [edx + eax*2]
bt edi, eax
jae 0x78daa2
jmp 0x78db86
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbb6b83]
mov ebx, edi
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x78db5e
mov eax, 0x8408f0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 0x23ded8e5
lea ecx, [eax + ecx*2 + 0xe30]
mov eax, dword [0xbb6b70]
xor eax, ecx
mov dword [0xbb6b70], eax
not eax
mov edx, dword [0xbb6b74]
imul eax, ecx
and cl, 7
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb6b74], edx
or edi, eax
not edx
mov eax, dword [0xbb6b78]
imul edx, edi
lea edi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb6b78], eax
or edi, edx
not eax
mov dl, 1
imul eax, edi
shl dl, cl
xor dword [0xbb6b7c], eax
or byte [0xbb6b83], dl
mov eax, 0x8408f0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 5
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb6b83], al
test byte [esp], 1
mov eax, 0xbb6b70
mov ebp, 0xbb6b50
cmove ebp, eax
cmp dword [esp + 0x1c], 0
je 0x78dd21
mov edi, fcn.007ad530
xor eax, eax
movzx edx, byte [0xbb6b93]
imul edi, edi
and edi, 3
cmp edi, 3
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x78dd08
mov al, byte [0xbb6b93]
xor ecx, ecx
cmp edi, 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 [0xbb6b93], ah
jne 0x78dbd7
mov ecx, fcn.007ad530
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 0x78dc53
mov ebx, dword [esp + 0x18]
xor eax, eax
cmp ecx, 3
movzx edi, byte [0xbb6b93]
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt edi, eax
jae 0x78dc2d
jmp 0x78dd08
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbb6b93]
mov ebx, dword [esp + 0x18]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x78dcdd
mov ecx, fcn.007ad530
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete al
mov ecx, eax
not ecx
and ecx, 0x13
lea ecx, [eax + ecx*2 + 0x681f1fcc]
mov eax, dword [0xbb6b84]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb6b84], eax
not eax
imul edx, eax
mov eax, dword [0xbb6b88]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb6b88], eax
or edi, edx
not eax
mov dl, 1
imul eax, edi
shl dl, cl
xor dword [0xbb6b8c], eax
or byte [0xbb6b93], dl
mov eax, fcn.007ad530
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 [0xbb6b93], al
push ebx
push dword [esp + 0x20]
push ebp
push 0xbb6b84
push esi
call fcn.0078de60
add esp, 0x14
jmp 0x78de56
mov edi, 0x994de4
movzx ecx, byte [0xbb6b9f]
imul edi, edi
and edi, 3
cmp edi, 1
seta al
or al, 4
add al, 0xf4
and al, 7
movzx eax, al
bt ecx, eax
jb 0x78de46
mov al, byte [0xbb6b9f]
cmp edi, 1
mov dl, 1
seta cl
or cl, 4
add cl, 0xf4
and cl, 7
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb6b9f], dl
jne 0x78dd50
mov ecx, 0x994de4
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
or dl, 4
add dl, 0xf4
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x78ddba
cmp ecx, 1
movzx edx, byte [0xbb6b9f]
seta al
or al, 4
add al, 0xf4
and al, 7
movzx eax, al
bt edx, eax
jae 0x78dd9a
jmp 0x78de46
cmp ecx, 1
movzx ecx, byte [0xbb6b9f]
seta al
or al, 4
add al, 0xf4
and al, 7
movzx eax, al
bt ecx, eax
jb 0x78de1f
mov eax, 0x994de4
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
mov eax, dword [0xbb6b94]
seta cl
or ecx, 0xa9d73d84
add ecx, 0x4f4
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb6b94], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbb6b98], edx
mov dl, 1
shl dl, cl
or byte [0xbb6b9f], dl
mov eax, 0x994de4
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 0xfe
seta cl
or cl, 4
add cl, 0xf4
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb6b9f], al
push ebx
push ebp
push 0xbb6b94
push esi
call fcn.0078de60
add esp, 0x10
xor eax, eax
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret