Function at 0x79d9c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x40
mov eax, dword [0xbd33e0]
mov esi, dword [ebp + 8]
xor ebx, ebx
xor eax, ebp
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x30], edx
cmp dword [ecx + 0x24], 0
jg 0x79deba
mov edi, ecx
test esi, esi
jns 0x79da17
lea eax, [esp + 0x30]
push eax
push edi
call fcn.0079b060
add esp, 8
mov ebx, 0x70a
test eax, eax
jne 0x79deba
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, dword [edi + 0x38]
mov ecx, dword [edi + 0x3c]
mov ebx, esi
cmp eax, edx
mov esi, ecx
sbb esi, ebx
mov esi, ebx
jge 0x79da35
mov edx, eax
mov esi, ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov ebx, dword [0xc26a84]
mov dword [esp + 0x34], esi
dec ebx
not ebx
and ebx, edx
mov eax, ebx
mov dword [esp + 0x30], ebx
or eax, esi
jne 0x79da61
mov eax, dword [edi + 0x34]
cmp dword [edi + 0x30], 1
sbb eax, 0
jl 0x79da61
mov ecx, edi
call fcn.0079c5f0
mov eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x34]
mov dword [esp + 0x14], ebx
xor eax, ebx
xor ecx, esi
xor ebx, ebx
or ecx, eax
je 0x79deba
mov eax, fcn.007985d0
mov dword [esp + 0xc], esi
xor esi, esi
mov dword [esp + 0x10], edi
imul eax, eax
and eax, 3
mov dword [esp + 0x1c], eax
xor ebx, ebx
cmp dword [esp + 0x1c], 1
mov edi, dword [esi*4 + 0xb559d0]
mov dword [esp + 0x28], esi
mov eax, 1
seta bl
mov dword [esp + 0x24], edi
xor ebx, 0x93f90637
add ebx, 0x1090
xor ebx, dword [esi*4 + 0xb54570]
mov esi, dword [esi*4 + 0xb55b10]
mov ecx, ebx
and cl, 7
movzx edx, cl
shl eax, cl
xor cl, 7
mov dword [esp + 4], edx
mov edx, 1
shl edx, cl
movzx ecx, byte [edi + esi - 1]
mov edi, dword [esp + 4]
bt ecx, edi
mov edi, dword [esp + 0x24]
jb 0x79db84
mov dword [esp + 8], eax
mov al, byte [edi + esi - 1]
mov ecx, eax
or cl, dl
lock cmpxchg byte [edi + esi - 1], cl
jne 0x79db00
mov ecx, dword [esp + 8]
movzx eax, al
test edx, eax
je 0x79db22
movzx eax, byte [edi + esi - 1]
test ecx, eax
je 0x79db17
jmp 0x79db84
mov dword [esp + 0x18], edx
movzx eax, byte [edi + esi - 1]
test ecx, eax
jne 0x79db7a
lea eax, [esi - 4]
shr eax, 2
mov dword [esp + 0x20], eax
je 0x79db72
xor eax, eax
mov ecx, edi
mov edx, dword [ecx]
mov dword [esp + 0x2c], ecx
mov ecx, eax
mov dword [esp + 4], ebx
inc eax
shl dword [esp + 4], cl
and cl, 0x1f
xor cl, 0x1f
xor edx, ebx
shr ebx, cl
mov ecx, dword [esp + 0x2c]
or ebx, dword [esp + 4]
mov dword [ecx], edx
not edx
add ecx, 4
imul ebx, edx
cmp eax, dword [esp + 0x20]
jne 0x79db3f
mov eax, dword [esp + 8]
or byte [edi + esi - 1], al
mov eax, dword [esp + 0x18]
not al
and byte [edi + esi - 1], al
mov esi, dword [esp + 0x28]
inc esi
cmp esi, 0x50
jne 0x79da92
mov edi, dword [esp + 0x10]
mov ecx, edi
call fcn.0079c5f0
push 0
mov ebx, dword [esp + 0x18]
push ebx
mov esi, dword [esp + 0x14]
push esi
push 2
push 0
push dword [edi + 8]
call dword [0xbb34d4]
test eax, eax
mov dword [edi + 0x28], eax
jne 0x79dd2a
mov edx, fcn.0079d6b0
movzx ecx, byte [0xbb48c3]
mov ebx, 0
imul edx, edx
and edx, 3
cmp edx, 2
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jb 0x79dd00
mov al, byte [0xbb48c3]
cmp edx, 2
mov ah, 1
sete cl
or cl, 0xfa
add cl, 8
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb48c3], ah
jne 0x79dbf1
mov ecx, fcn.0079d6b0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 0xfa
add dl, 8
movzx edx, dl
bt eax, edx
jae 0x79dc4b
cmp ecx, 2
movzx edx, byte [0xbb48c3]
sete al
xor al, 5
movzx eax, al
bt edx, eax
jae 0x79dc2f
jmp 0x79dd00
cmp ecx, 2
movzx edx, byte [0xbb48c3]
sete al
xor al, 5
movzx eax, al
bt edx, eax
jb 0x79dcdf
mov eax, fcn.0079d6b0
xor ecx, ecx
mov edx, dword [0xbb48b0]
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
xor ecx, 0x1721a7fd
lea eax, [ecx + 0x1000]
and cl, 5
xor edx, eax
mov dword [0xbb48b0], edx
not edx
imul edx, eax
mov eax, dword [0xbb48b4]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb48b4], eax
or esi, edx
not eax
mov edx, dword [0xbb48b8]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb48b8], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbb48bc], edx
or byte [0xbb48c3], al
mov eax, fcn.0079d6b0
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 0xfa
add cl, 8
rol al, cl
and byte [0xbb48c3], al
call dword [0xbb35b8]
mov ecx, 0x180a
mov edx, eax
mov dword [edi + 0x14], eax
push 0x33aa
push dword [edi + 0x1c]
push 0xbb48b0
call fcn.0079cac0
add esp, 0xc
jmp 0x79deba
push ebx
push 0
push 0
push 4
push eax
call dword [0xbb36cc]
test eax, eax
jne 0x79deaf
mov edx, fcn.007b0ac0
movzx ecx, byte [0xbb48e3]
mov ebx, 0
imul edx, edx
and edx, 3
cmp edx, 2
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x79de7d
mov al, byte [0xbb48e3]
cmp edx, 2
mov ah, 1
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb48e3], ah
jne 0x79dd70
mov ecx, fcn.007b0ac0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 6
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x79ddca
cmp ecx, 2
movzx edx, byte [0xbb48e3]
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0x79ddae
jmp 0x79de7d
cmp ecx, 2
movzx edx, byte [0xbb48e3]
sete al
or al, 6
movzx eax, al
bt edx, eax
jb 0x79de5c
mov eax, fcn.007b0ac0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbb48d0]
sete cl
or ecx, 0x134b0546
add ecx, 0x1160
xor eax, ecx
mov dword [0xbb48d0], eax
not eax
mov edx, dword [0xbb48d4]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb48d4], edx
or esi, eax
not edx
mov eax, dword [0xbb48d8]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb48d8], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb48dc], eax
or byte [0xbb48e3], dl
mov eax, fcn.007b0ac0
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbb48e3], al
push dword [edi + 0x28]
call dword [0xbb34a4]
mov dword [edi + 0x28], 0
call dword [0xbb35b8]
mov ecx, 0x180a
mov edx, eax
mov dword [edi + 0x14], eax
push 0x33bc
push dword [edi + 0x1c]
push 0xbb48d0
jmp 0x79dd1d
mov dword [edi + 0x2c], eax
mov dword [edi + 0x30], ebx
xor ebx, ebx
mov dword [edi + 0x34], esi
mov ecx, dword [esp + 0x38]
xor ecx, ebp
call fcn.00989fe9
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret