Function at 0x100776a4
Capabilities:
Encode data using xor

Disassembly:
push 0x94
mov eax, 0x101a814b
call fcn.1017516e
mov ebx, edx
mov esi, ecx
push 0
push 0
call dword [esi + 0x94]
test eax, eax
js 0x10077c30
xor eax, eax
push eax
push eax
push eax
push 3
push eax
push eax
push eax
push 0xffffffffffffffff
push eax
call dword [esi + 0x80]
mov edi, eax
test edi, edi
jns 0x100776ee
cmp edi, 0x80010119
jne 0x10077c28
and dword [ebp - 0x78], 0
lea eax, [ebp - 0x78]
push eax
push 0x101d644c
push 1
push 0
push 0x101d651c
call dword [esi + 0x84]
mov edi, eax
test edi, edi
js 0x10077c28
and dword [ebp - 0x74], 0
push 0x55
pop eax
mov word [ebp - 0x70], ax
push 0x52
pop eax
mov word [ebp - 0x6e], ax
mov word [ebp - 0x6c], ax
push 0x57
pop eax
mov word [ebp - 0x6a], ax
push 0x5f
pop eax
mov word [ebp - 0x68], ax
push 0x46
pop eax
mov word [ebp - 0x66], ax
push 0x4c
pop eax
mov word [ebp - 0x64], ax
push 0x50
pop eax
mov word [ebp - 0x62], ax
push 0x59
pop eax
mov word [ebp - 0x60], ax
push 0x35
pop eax
mov word [ebp - 0x5e], ax
xor eax, eax
mov word [ebp - 0x5c], ax
xor ecx, ecx
mov ax, word [ebp - 0x70]
mov ax, word [ebp + ecx*2 - 0x70]
movzx eax, ax
add eax, 0xfffffffd
mov word [ebp + ecx*2 - 0x70], ax
inc ecx
cmp ecx, 0xa
jb 0x10077767
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0x84]
call fcn.1007096f
and dword [ebp - 4], 0
mov edx, dword [eax]
test edx, edx
je 0x1007779a
mov edx, dword [edx]
jmp 0x1007779c
xor edx, edx
mov eax, dword [ebp - 0x78]
lea edi, [ebp - 0x74]
push edi
xor edi, edi
push edi
mov ecx, dword [eax]
push edi
push edi
push edi
push edi
push edi
push edx
push eax
call dword [ecx + 0xc]
mov edi, eax
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x84]
test ecx, ecx
je 0x100777d1
call fcn.100709e7
xor eax, eax
mov dword [ebp - 0x84], eax
jmp 0x100777d3
xor eax, eax
test edi, edi
jns 0x100777df
mov eax, dword [ebp - 0x78]
jmp 0x10077bde
push eax
push eax
push 3
push 3
push eax
push eax
push 0xa
push dword [ebp - 0x74]
call dword [esi + 0x88]
mov edi, eax
test edi, edi
jns 0x1007780f
mov ecx, dword [ebp - 0x74]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, dword [ebp - 0x78]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
jmp 0x10077c28
and dword [ebp - 0x7c], 0
push 0x32
pop ecx
mov dword [ebp - 0x44], ecx
mov eax, dword [ebp - 0x44]
push 0x53
pop edx
xor eax, edx
mov byte [ebp - 0x40], al
mov eax, dword [ebp - 0x44]
inc al
xor eax, 0x45
mov byte [ebp - 0x3f], al
mov eax, dword [ebp - 0x44]
add al, 2
xor eax, 0x4c
mov byte [ebp - 0x3e], al
mov eax, dword [ebp - 0x44]
add al, 3
xor eax, 0x45
mov byte [ebp - 0x3d], al
mov eax, dword [ebp - 0x44]
add al, 4
xor eax, 0x43
mov byte [ebp - 0x3c], al
mov eax, dword [ebp - 0x44]
add al, 5
xor eax, 0x54
mov byte [ebp - 0x3b], al
mov eax, dword [ebp - 0x44]
add al, 6
xor eax, 0x20
mov byte [ebp - 0x3a], al
mov eax, dword [ebp - 0x44]
add al, 7
xor eax, 0x55
mov byte [ebp - 0x39], al
mov eax, dword [ebp - 0x44]
add al, 8
xor eax, 0x55
mov byte [ebp - 0x38], al
mov eax, dword [ebp - 0x44]
add al, 9
xor eax, 0x49
mov byte [ebp - 0x37], al
mov eax, dword [ebp - 0x44]
add al, 0xa
xor eax, 0x44
mov byte [ebp - 0x36], al
mov eax, dword [ebp - 0x44]
add al, 0xb
xor eax, 0x20
mov byte [ebp - 0x35], al
mov eax, dword [ebp - 0x44]
add al, 0xc
xor eax, 0x46
mov byte [ebp - 0x34], al
mov eax, dword [ebp - 0x44]
add al, 0xd
xor eax, 0x52
mov byte [ebp - 0x33], al
mov eax, dword [ebp - 0x44]
add al, 0xe
xor eax, 0x4f
mov byte [ebp - 0x32], al
mov eax, dword [ebp - 0x44]
add al, 0xf
xor eax, 0x4d
mov byte [ebp - 0x31], al
mov eax, dword [ebp - 0x44]
add al, 0x10
xor eax, 0x20
mov byte [ebp - 0x30], al
mov eax, dword [ebp - 0x44]
add al, 0x11
xor eax, 0x57
mov byte [ebp - 0x2f], al
mov eax, dword [ebp - 0x44]
add al, 0x12
xor eax, 0x69
mov byte [ebp - 0x2e], al
mov eax, dword [ebp - 0x44]
add al, 0x13
xor eax, 0x6e
mov byte [ebp - 0x2d], al
mov eax, dword [ebp - 0x44]
add al, 0x14
xor eax, 0x33
mov byte [ebp - 0x2c], al
mov eax, dword [ebp - 0x44]
add al, 0x15
xor eax, ecx
mov byte [ebp - 0x2b], al
mov eax, dword [ebp - 0x44]
add al, 0x16
xor eax, 0x5f
mov byte [ebp - 0x2a], al
mov eax, dword [ebp - 0x44]
add al, 0x17
xor eax, 0x43
mov byte [ebp - 0x29], al
mov eax, dword [ebp - 0x44]
add al, 0x18
xor eax, 0x6f
mov byte [ebp - 0x28], al
mov eax, dword [ebp - 0x44]
add al, 0x19
xor eax, 0x6d
mov byte [ebp - 0x27], al
mov eax, dword [ebp - 0x44]
add al, 0x1a
xor eax, 0x70
mov byte [ebp - 0x26], al
mov eax, dword [ebp - 0x44]
add al, 0x1b
xor eax, 0x75
mov byte [ebp - 0x25], al
mov eax, dword [ebp - 0x44]
add al, 0x1c
xor eax, 0x74
mov byte [ebp - 0x24], al
mov eax, dword [ebp - 0x44]
add al, 0x1d
xor eax, 0x65
mov byte [ebp - 0x23], al
mov eax, dword [ebp - 0x44]
add al, 0x1e
xor eax, 0x72
mov byte [ebp - 0x22], al
mov eax, dword [ebp - 0x44]
add al, 0x1f
xor eax, edx
mov byte [ebp - 0x21], al
mov eax, dword [ebp - 0x44]
add al, 0x20
xor eax, 0x79
mov byte [ebp - 0x20], al
mov eax, dword [ebp - 0x44]
add al, 0x21
xor eax, 0x73
mov byte [ebp - 0x1f], al
mov eax, dword [ebp - 0x44]
add al, 0x22
xor eax, 0x74
mov byte [ebp - 0x1e], al
mov eax, dword [ebp - 0x44]
add al, 0x23
xor eax, 0x65
mov byte [ebp - 0x1d], al
mov eax, dword [ebp - 0x44]
add al, 0x24
xor eax, 0x6d
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x44]
add al, 0x25
xor eax, 0x50
mov byte [ebp - 0x1b], al
mov eax, dword [ebp - 0x44]
add al, 0x26
xor eax, 0x72
mov byte [ebp - 0x1a], al
mov eax, dword [ebp - 0x44]
add al, 0x27
xor eax, 0x6f
mov byte [ebp - 0x19], al
mov eax, dword [ebp - 0x44]
add al, 0x28
xor eax, 0x64
mov byte [ebp - 0x18], al
mov eax, dword [ebp - 0x44]
add al, 0x29
xor eax, 0x75
mov byte [ebp - 0x17], al
mov eax, dword [ebp - 0x44]
add al, 0x2a
xor eax, 0x63
mov byte [ebp - 0x16], al
mov eax, dword [ebp - 0x44]
add al, 0x2b
mov byte [ebp - 0x14], 0
xor eax, 0x74
xor edx, edx
mov byte [ebp - 0x15], al
mov al, byte [ebp - 0x40]
mov al, byte [ebp + edx - 0x40]
mov ecx, dword [ebp - 0x44]
add cl, dl
movsx eax, al
xor ecx, eax
mov byte [ebp + edx - 0x40], cl
inc edx
cmp edx, 0x2c
jb 0x10077a04
lea eax, [ebp - 0x40]
mov byte [ebp - 0x14], 0
push eax
lea ecx, [ebp - 0x8c]
call fcn.10070914
mov edi, eax
mov dword [ebp - 4], 1
mov dword [ebp - 0x4c], 0x1e
mov ecx, dword [ebp - 0x4c]
xor ecx, 0x57
mov byte [ebp - 0x48], cl
mov ecx, dword [ebp - 0x4c]
inc cl
xor ecx, 0x51
mov byte [ebp - 0x47], cl
mov eax, dword [ebp - 0x4c]
add al, 2
mov byte [ebp - 0x45], 0
xor eax, 0x4c
xor edx, edx
mov byte [ebp - 0x46], al
mov al, byte [ebp - 0x48]
mov al, byte [ebp + edx - 0x48]
mov ecx, dword [ebp - 0x4c]
add cl, dl
movsx eax, al
xor ecx, eax
mov byte [ebp + edx - 0x48], cl
inc edx
cmp edx, 3
jb 0x10077a67
lea eax, [ebp - 0x48]
mov byte [ebp - 0x45], 0
push eax
lea ecx, [ebp - 0x88]
call fcn.10070914
mov byte [ebp - 4], 2
mov ecx, dword [edi]
test ecx, ecx
je 0x10077aa0
mov edi, dword [ecx]
jmp 0x10077aa2
xor edi, edi
mov eax, dword [eax]
test eax, eax
je 0x10077aac
mov edx, dword [eax]
jmp 0x10077aae
xor edx, edx
mov eax, dword [ebp - 0x74]
mov ecx, dword [eax]
lea eax, [ebp - 0x7c]
push eax
mov eax, dword [ebp - 0x74]
push 0
push 0x30
push edi
push edx
push eax
call dword [ecx + 0x50]
mov edi, eax
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x88]
test ecx, ecx
je 0x10077ae0
call fcn.100709e7
and dword [ebp - 0x88], 0
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
je 0x10077afa
call fcn.100709e7
and dword [ebp - 0x8c], 0
test edi, edi
jns 0x10077b0c
mov eax, dword [ebp - 0x74]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x100777d7
and dword [ebp - 0x80], 0
and dword [ebp - 0x90], 0
mov ecx, dword [ebp - 0x7c]
test ecx, ecx
je 0x10077c0b
mov eax, dword [ecx]
lea edx, [ebp - 0x90]
push edx
lea edx, [ebp - 0x80]
push edx
push 1
push 0xffffffffffffffff
push ecx
call dword [eax + 0x10]
mov edi, eax
test edi, edi
jns 0x10077b54
mov ecx, dword [ebp - 0x74]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, dword [ebp - 0x78]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
jmp 0x10077bdb
cmp dword [ebp - 0x90], 0
jne 0x10077b64
mov edi, 0xe0010001
jmp 0x10077bc9
push 0x5f
pop eax
mov word [ebp - 0x58], ax
mov word [ebp - 0x56], ax
push 0x53
pop eax
mov word [ebp - 0x54], ax
push 0x4e
pop eax
mov word [ebp - 0x52], ax
xor eax, eax
mov word [ebp - 0x50], ax
xor ecx, ecx
mov ax, word [ebp - 0x58]
mov ax, word [ebp + ecx*2 - 0x58]
movzx eax, ax
add eax, 0xfffffff6
mov word [ebp + ecx*2 - 0x58], ax
inc ecx
cmp ecx, 4
jb 0x10077b89
mov eax, dword [ebp - 0x80]
lea edx, [ebp - 0xa0]
push 0
push 0
push edx
mov ecx, dword [eax]
lea edx, [ebp - 0x58]
xor edi, edi
push edi
push edx
push eax
call dword [ecx + 0x10]
mov edi, eax
test edi, edi
jns 0x10077be6
mov ecx, dword [ebp - 0x80]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [ebp - 0x74]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x78]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x7c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x10077c28
push dword [ebp - 0x98]
push dword [ebp + 8]
push ebx
call fcn.100078b2
lea eax, [ebp - 0xa0]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x80]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x74]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x78]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x7c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
xor edi, edi
call dword [esi + 0x8c]
mov eax, edi
call fcn.10175118
ret 4