Function at 0x77d32685
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
push ebx
push esi
xor esi, esi
sub eax, esi
push edi
je 0x77d3d0ad
dec eax
je 0x77d39d50
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
pop ebp
ret 0xc
mov edi, dword [ebp - 0x14]
push 0x2e
push dword [ebp - 8]
push edi
call fcn.77d399e0
cmp eax, edi
mov dword [ebp + 8], eax
je 0x77d39fd7
mov esi, eax
sub esi, edi
sar esi, 1
cmp esi, 0x3f
jg 0x77d39d91
mov eax, dword [ebp - 8]
sub eax, edi
and eax, 0xfffffffe
cmp eax, 8
jl 0x77d39fb1
push 4
push 0x391144
push edi
call fcn.77d3af50
add esp, 0xc
test eax, eax
jne 0x77d39fb1
mov esi, dword [ebp + 8]
push 0x2d
lea eax, [esi - 2]
add edi, 8
push eax
push edi
mov dword [ebp - 0x14], edi
call fcn.77d399ba
add esi, 0xfffffffe
cmp eax, esi
je 0x77d39d91
test eax, eax
je 0x77d39d9d
cmp eax, edi
jbe 0x77d39d9d
mov edx, eax
sub edx, edi
xlatb
sar edx, 1
cmp edi, eax
mov esi, edi
je 0x77d39d9f
cmp ebx, dword [ebp - 4]
jae 0x77d39d8d
movzx ecx, word [esi]
cmp cx, 0x80
jae 0x77d39d91
cmp cx, 0x41
jb 0x77d39d7c
cmp cx, 0x5a
ja 0x77d39d7c
movzx ecx, cx
add ecx, 0x20
jmp 0x77d39d7f
movzx ecx, cx
mov word [ebx], cx
inc ebx
inc ebx
inc esi
inc esi
cmp esi, eax
mov dword [ebp + 0x10], ebx
jne 0x77d39d59
cmp esi, eax
je 0x77d39d9f
mov eax, 0xc0000716
pop edi
pop esi
pop ebx
leave
ret 0x10
xor edx, edx
test edx, edx
jle 0x77d39da8
lea eax, [edx + 1]
jmp 0x77d39daa
xor eax, eax
lea eax, [edi + eax*2]
xor edi, edi
and dword [ebp - 0x10], edi
cmp eax, dword [ebp + 8]
mov dword [ebp + 0xc], eax
mov dword [ebp - 0x1c], 0x80
mov dword [ebp - 0x18], 0x48
jb 0x77d39e0d
mov edi, dword [ebp - 0x14]
mov eax, dword [ebp + 8]
mov ecx, eax
sub ecx, edi
and ecx, 0xfffffffe
cmp ecx, 0x7e
jg 0x77d39d91
cmp ebx, dword [ebp - 0x20]
je 0x77d39d91
cmp eax, dword [ebp - 8]
je 0x77d39df3
cmp ebx, dword [ebp - 4]
jae 0x77d39d91
mov word [ebx], 0x2e
inc ebx
inc ebx
mov dword [ebp + 0x10], ebx
cmp eax, dword [ebp - 8]
lea ecx, [eax + 2]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x20], ebx
jb 0x77d39cd8
jmp 0x77d39fe0
mov eax, dword [ebp + 0xc]
push 0x24
xor ebx, ebx
pop esi
inc ebx
mov dword [ebp - 0xc], esi
sub esi, dword [ebp - 0x18]
mov dword [ebp - 0x24], edi
cmp eax, dword [ebp + 8]
jae 0x77d39d91
movzx eax, word [eax]
push eax
call fcn.77d39bb2
add dword [ebp + 0xc], 2
mov ecx, eax
test ecx, ecx
jl 0x77d39d91
mov eax, 0x7ffffff
sub eax, edi
cdq
idiv ebx
cmp ecx, eax
jg 0x77d39d91
mov eax, ecx
imul eax, ebx
add edi, eax
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0xc], eax
jg 0x77d39e62
xor eax, eax
inc eax
jmp 0x77d39e71
add eax, 0x1a
cmp dword [ebp - 0xc], eax
jl 0x77d39e6f
push 0x1a
pop eax
jmp 0x77d39e71
mov eax, esi
cmp ecx, eax
jl 0x77d39e9b
push 0x24
pop ecx
sub ecx, eax
mov eax, 0x7ffffff
cdq
idiv ecx
cmp ebx, eax
jg 0x77d39d91
add dword [ebp - 0xc], 0x24
imul ecx, ebx
mov eax, dword [ebp + 0xc]
mov ebx, ecx
add esi, 0x24
jmp 0x77d39e1c
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp - 0x20]
sub esi, ebx
sar esi, 1
sub esi, dword [ebp - 0x10]
inc esi
cmp dword [ebp - 0x24], 0
sete al
push eax
mov eax, edi
sub eax, dword [ebp - 0x24]
push esi
push eax
call fcn.77d39c36
mov dword [ebp - 0x18], eax
mov eax, edi
cdq
idiv esi
mov ecx, dword [ebp - 0x1c]
mov esi, 0x7ffffff
sub esi, ecx
cmp eax, esi
jg 0x77d39d91
add ecx, eax
cmp ecx, 0x10ffff
mov dword [ebp - 0x1c], ecx
mov edi, edx
ja 0x77d39d91
cmp ecx, 0xd800
jl 0x77d39efe
cmp ecx, 0xdfff
jle 0x77d39d91
cmp dword [ebp - 0x10], 0
jle 0x77d39f2e
test edi, edi
mov edx, edi
mov esi, ebx
jle 0x77d39f31
cmp esi, dword [ebp + 0x10]
jae 0x77d39d91
movzx eax, word [esi]
add eax, 0x2800
cmp ax, 0x7ff
ja 0x77d39f25
inc esi
inc esi
dec edx
inc esi
inc esi
test edx, edx
jg 0x77d39f0c
jmp 0x77d39f31
lea esi, [ebx + edi*2]
cmp ecx, 0x10000
jge 0x77d39f5a
mov eax, dword [ebp + 0x10]
cmp eax, dword [ebp - 4]
jae 0x77d39d91
cmp esi, eax
ja 0x77d39d91
lea eax, [ebp + 0x10]
push eax
push esi
push ecx
call fcn.77d39954
jmp 0x77d39f9c
mov eax, dword [ebp - 4]
add eax, 0xfffffffe
cmp dword [ebp + 0x10], eax
jae 0x77d39d91
cmp esi, dword [ebp + 0x10]
ja 0x77d39d91
lea eax, [ebp + 0x10]
push eax
push esi
push ecx
call fcn.77d37b46
push eax
call fcn.77d39954
lea eax, [ebp + 0x10]
push eax
add esi, 2
push esi
push dword [ebp - 0x1c]
call fcn.77d398b4
push eax
call fcn.77d39954
inc dword [ebp - 0x10]
mov eax, dword [ebp + 8]
inc edi
cmp dword [ebp + 0xc], eax
jb 0x77d39e0a
mov ebx, dword [ebp + 0x10]
jmp 0x77d39dc8
mov eax, dword [ebp - 4]
sub eax, ebx
sar eax, 1
cmp eax, esi
jl 0x77d39d91
add esi, esi
push esi
push edi
push ebx
call fcn.77d37ab6
add esp, 0xc
add ebx, esi
mov dword [ebp + 0x10], ebx
jmp 0x77d39dcb
cmp eax, dword [ebp - 8]
jne 0x77d39d91
movzx eax, word [ebx - 2]
mov esi, ebx
sub esi, dword [ebp - 0x28]
push eax
sar esi, 1
call fcn.77d39a06
neg al
mov ecx, 0xff
sbb eax, eax
inc eax
sub ecx, eax
cmp esi, ecx
jg 0x77d39d91
mov eax, dword [ebp + 0x14]
mov dword [eax], esi
xor eax, eax
jmp 0x77d39d96
xor al, 0x25
add byte [eax + 0x35], dl
and eax, 0x25341000