Function at 0x7949a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 8
test edx, edx
je 0x794a01
mov ebp, dword [esp + 0x30]
cmp dword [esp + 0x28], 0
mov edi, edx
mov ebx, ecx
je 0x7949be
test ebp, ebp
jne 0x794a01
mov esi, dword [esp + 0x2c]
test ebp, ebp
sete al
test esi, esi
sete cl
xor cl, al
jne 0x794a01
cmp dword [esp + 0x34], 0
mov edx, dword [esp + 0x1c]
sete al
cmp dword [esp + 0x38], 0
lea edx, [edx + 1]
sete cl
cmp edx, 0x80
ja 0x794a01
xor al, cl
jne 0x794a01
mov ecx, edi
call fcn.00783170
cmp eax, 0x100
jl 0x794a15
mov ecx, 0x73d
call fcn.00780040
mov eax, 0x15
jmp 0x794cea
mov dword [esp], ebx
mov ebx, dword [esp + 0x20]
mov eax, ebx
and ebx, 7
and eax, 0x380800
cmp ebx, 4
mov dword [esp + 4], eax
jne 0x794a3a
mov ebx, 2
mov eax, dword [esp + 0x1c]
jmp 0x794ab4
cmp ebx, 5
jne 0x794a34
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp]
or eax, 1
mov edx, edi
push ebx
mov ebx, dword [esp + 0x3c]
push ebx
mov ebx, dword [esp + 0x3c]
push ebx
push ebp
push esi
push dword [esp + 0x3c]
mov ebx, dword [esp + 0x3c]
push ebx
push eax
mov eax, dword [esp + 0x3c]
mov ebx, eax
push eax
call fcn.007949a0
add esp, 0x24
test eax, eax
jne 0x794cea
mov eax, dword [esp + 4]
mov ecx, dword [esp]
mov edx, edi
or eax, 2
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push ebp
push esi
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push eax
push ebx
call fcn.007949a0
add esp, 0x24
test eax, eax
jne 0x794cea
mov eax, ebx
mov ebx, 3
mov ecx, dword [esp]
mov edx, edi
push 0
push ebx
push eax
call fcn.00794d80
add esp, 0xc
test eax, eax
je 0x794c70
mov ecx, dword [eax + 4]
and ecx, 3
cmp ecx, ebx
jne 0x794c70
movsx eax, byte [eax]
cmp eax, dword [esp + 0x1c]
jne 0x794c70
mov ecx, dword [esp]
cmp dword [ecx + 0xb0], 0
je 0x794c69
mov eax, fcn.007c0a40
mov edx, 3
mov esi, ecx
movzx ecx, byte [0xbbdee3]
sub edx, eax
mov eax, edx
xor eax, fcn.007c0a40
sete al
or al, 4
add al, 0x44
and al, 7
movzx eax, al
bt ecx, eax
jb 0x794c4f
mov al, byte [0xbbdee3]
mov ecx, edx
mov ah, 1
xor ecx, fcn.007c0a40
sete cl
or cl, 4
add cl, 0x44
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbdee3], ah
jne 0x794b2e
mov edx, fcn.007c0a40
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, fcn.007c0a40
sete dl
or dl, 4
add dl, 0x44
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x794ba7
mov eax, ecx
movzx edx, byte [0xbbdee3]
xor eax, fcn.007c0a40
sete al
or al, 4
add al, 0x44
and al, 7
movzx eax, al
bt edx, eax
jae 0x794b83
jmp 0x794c4f
xor edx, edx
xor ecx, fcn.007c0a40
movzx ecx, byte [0xbbdee3]
sete dl
or edx, 0x1064001c
add edx, 0x1344
mov eax, edx
and al, 7
movzx eax, al
bt ecx, eax
jb 0x794c24
mov esi, 0xbbdea0
xor eax, eax
mov edi, dword [esi]
mov ecx, eax
mov ebx, edx
inc eax
shl ebx, cl
xor cl, 0x1f
xor edi, edx
shr edx, cl
mov dword [esi], edi
or edx, ebx
not edi
add esi, 4
imul edx, edi
cmp eax, 0x10
jne 0x794bd8
mov eax, fcn.007c0a40
mov ecx, 3
sub ecx, eax
mov al, 1
xor ecx, fcn.007c0a40
sete cl
or cl, 4
add cl, 0x44
and cl, 7
shl al, cl
or byte [0xbbdee3], al
mov esi, dword [esp]
mov eax, fcn.007c0a40
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.007c0a40
sete cl
or cl, 4
add cl, 0x44
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbbdee3], al
push 0xbbdea0
push 5
push esi
call fcn.00787000
add esp, 0xc
mov eax, 5
jmp 0x794cea
xor edx, edx
call fcn.0078f410
movzx eax, bl
mov ebx, dword [esp]
mov edx, edi
mov ecx, ebx
push 1
push eax
push dword [esp + 0x24]
call fcn.00794d80
add esp, 0xc
test eax, eax
jne 0x794c94
mov eax, 7
jmp 0x794cea
mov ecx, ebx
mov edx, eax
mov edi, eax
call fcn.00846910
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x794ca9
inc dword [ecx]
mov eax, dword [edi + 4]
mov dword [edi + 0x24], ecx
and eax, 3
or eax, dword [esp + 4]
xor eax, 0x200000
mov dword [edi + 4], eax
mov eax, dword [esp + 0x28]
test eax, eax
cmovne esi, eax
mov eax, dword [esp + 0x34]
mov dword [edi + 0x10], esi
mov dword [edi + 0x14], ebp
mov dword [edi + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 0x24]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x1c]
mov byte [edi], al
xor eax, eax
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret