Function at 0x77a950
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x793adb
mov eax, dword fs:[0]
push eax
sub esp, 0x8ac
mov eax, dword [0x773564]
xor eax, esp
mov dword [esp + 0x8a8], eax
push ebp
push esi
push edi
mov eax, dword [0x773564]
xor eax, esp
push eax
lea eax, [esp + 0x8bc]
mov dword fs:[0], eax
lea ecx, [esp + 0x138]
call fcn.0077c940
push 0x7f
lea eax, [esp + 0x375]
push 0
push eax
mov dword [esp + 0x8d0], 0
mov byte [esp + 0x37c], 0
call fcn.00786f70
mov ecx, dword [0x7941a8]
add esp, 0xc
push 0x48
push ecx
lea ecx, [esp + 0x2c0]
call fcn.0077c8e0
mov edx, dword [eax]
mov dword [esp + 0x330], edx
mov ecx, dword [eax + 4]
mov dword [esp + 0x334], ecx
mov edx, dword [eax + 8]
mov dword [esp + 0x338], edx
mov eax, dword [eax + 0xc]
mov dword [esp + 0x33c], eax
xor ecx, ecx
lea esi, [esp + 0x370]
xor eax, eax
mov dl, byte [esp + eax + 0x330]
xor dl, cl
mov byte [esi + eax], dl
add eax, 1
cmp eax, 0x10
jl 0x77aa04
add ecx, 1
add esi, 0x10
cmp ecx, 8
jl 0x77aa02
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x374]
push 0x80
push ecx
call fcn.0077cf40
add esp, 0xc
xor esi, esi
nop
mov ecx, dword [0x7941ac]
lea edx, [esp + 0x44]
push edx
lea eax, [esp + esi + 0x344]
push eax
lea edx, [esi + ecx]
push edx
call fcn.0077d1b0
add esi, 0x10
add esp, 0xc
cmp esi, 0x30
jl 0x77aa40
mov edi, dword [0x7941ac]
mov ecx, 0xc
lea esi, [esp + 0x340]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [0x7941ac]
add edi, 0x14
mov eax, 4
mov ecx, 0x7748c4
mov edx, edi
mov esi, dword [edx]
or ebp, 0xffffffff
cmp esi, dword [ecx]
jne 0x77aaab
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x77aa90
test eax, eax
je 0x77ab0d
movzx ebp, byte [ecx]
movzx esi, byte [edx]
sub esi, ebp
jne 0x77aafa
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x77ab0a
movzx ebp, byte [ecx]
movzx esi, byte [edx]
sub esi, ebp
jne 0x77aafa
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x77ab0a
movzx ebp, byte [ecx]
movzx esi, byte [edx]
sub esi, ebp
jne 0x77aafa
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x77ab0a
movzx eax, byte [ecx]
movzx esi, byte [edx]
sub esi, eax
je 0x77ab0a
or ebp, 0xffffffff
test esi, esi
mov eax, 1
jg 0x77ab0f
mov eax, ebp
jmp 0x77ab0f
or ebp, 0xffffffff
xor eax, eax
test eax, eax
je 0x77aba1
mov eax, 4
mov ecx, 0x7748bc
mov edx, edi
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x77ab3b
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x77ab23
test eax, eax
je 0x77ab97
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x77ab8a
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x77ab97
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x77ab8a
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x77ab97
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x77ab8a
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x77ab97
movzx esi, byte [edx]
movzx ecx, byte [ecx]
sub esi, ecx
je 0x77ab97
test esi, esi
mov eax, 1
jg 0x77ab99
mov eax, ebp
jmp 0x77ab99
xor eax, eax
test eax, eax
jne 0x77b25f
mov al, 0x23
mov byte [esp + 0x324], al
mov byte [esp + 0x326], al
mov byte [esp + 0x320], 0x34
mov byte [esp + 0x321], 0x45
mov byte [esp + 0x322], 0x76
mov byte [esp + 0x323], 0x87
mov byte [esp + 0x325], 0xc6
mov byte [esp + 0x327], 0x74
mov byte [esp + 0x328], 0x88
mov byte [esp + 0x329], 0x79
mov byte [esp + 0x32a], 0x19
mov byte [esp + 0x32b], 8
mov byte [esp + 0x32c], 0x75
mov byte [esp + 0x32d], 0xf4
mov byte [esp + 0x32e], 0xd3
mov byte [esp + 0x32f], 0
xor eax, eax
jmp 0x77ac30
xor byte [esp + eax + 0x320], 0x79
add eax, 1
cmp eax, 0x10
jl 0x77ac30
lea edx, [esp + 0x320]
push edx
lea ecx, [esp + 0x13c]
call fcn.0077c960
mov eax, dword [0x7941ac]
push 8
push 0x7941a0
add eax, 0x18
push eax
lea ecx, [esp + 0x144]
call fcn.0077c9a0
mov si, word [0x7941a0]
mov di, word [0x7941a2]
push 0x52
push 0
push 0x794140
mov word [0x794194], si
mov word [0x794196], di
call fcn.00786f70
push 0x794140
push 1
mov word [0x79414a], si
mov word [0x79414c], di
call fcn.0077a710
add esp, 0x14
test eax, eax
je 0x77acca
mov dword [0x7941c4], 0x7748b0
jmp 0x77b25f
mov ecx, dword [0x794142]
push 0x794140
push 3
mov dword [0x794198], ecx
call fcn.0077a710
add esp, 8
test eax, eax
je 0x77acf8
mov dword [0x7941c4], 0x7748a4
jmp 0x77b25f
push 0x48
push 0
push 0x7941c8
call fcn.00786f70
mov eax, dword [0x7941ac]
mov edx, dword [eax + 0x18]
mov dword [0x7941f8], edx
mov ecx, dword [eax + 0x1c]
mov dword [0x7941fc], ecx
movzx edx, word [eax + 0xe]
mov word [0x7941d6], dx
mov ecx, dword [eax + 0x10]
mov dword [0x7941d8], ecx
mov edx, dword [eax + 0x14]
mov ecx, dword [0x7941a8]
mov dword [0x7941f4], edx
movzx edx, word [ecx + 0x1a]
mov word [0x7941c8], dx
mov ecx, dword [eax + 2]
mov dword [0x7941ca], ecx
mov edx, dword [eax + 6]
mov cx, word [0x794196]
mov dword [0x7941ce], edx
mov eax, dword [eax + 0xa]
mov dword [0x7941d2], eax
mov ax, word [0x794194]
add esp, 0xc
mov word [0x79414a], ax
mov word [0x79414c], cx
mov esi, 0x7941de
jmp 0x77ad90
movzx edx, ax
push 0x794140
push 8
mov dword [0x794146], edx
call fcn.0077a710
movzx ecx, word [0x79414c]
mov ax, word [0x79414a]
mov dx, word [0x79414e]
mov word [esi], cx
movzx ecx, word [0x794150]
mov word [esi - 2], ax
mov word [esi + 2], dx
mov word [esi + 4], cx
add esi, 8
add esp, 8
cmp esi, 0x7941f6
jl 0x77ad90
push 0x1e8
lea edx, [esp + 0x4bc]
push 0
push edx
call fcn.00786f70
add esp, 0xc
push 0x48
push 0x7941c8
lea ecx, [esp + 0x2c0]
call fcn.0077c8e0
mov ecx, dword [eax]
mov dword [esp + 0x330], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x334], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x338], ecx
mov edx, dword [eax + 0xc]
lea eax, [esp + 0x330]
push eax
lea ecx, [esp + 0x13c]
mov dword [esp + 0x340], edx
call fcn.0077c960
mov edx, dword [0x7941b0]
push 0x1e8
lea ecx, [esp + 0x4bc]
push ecx
push edx
lea ecx, [esp + 0x144]
call fcn.0077c9a0
mov edi, dword [0x7941b0]
mov ecx, 0x7a
lea esi, [esp + 0x4b8]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x7941ac]
mov ecx, dword [eax + 2]
test ecx, ecx
je 0x77ae99
cmp dword [0x794198], ecx
je 0x77ae99
mov dword [0x7941c4], 0x774898
jmp 0x77b250
mov cl, byte [eax + 0xe]
cmp cl, 0x40
jae 0x77aed8
movzx ax, cl
push 0x794140
push 0xc
mov word [0x79414a], ax
call fcn.0077a710
add esp, 8
cmp word [0x79414c], 0
jne 0x77aed3
mov dword [0x7941c4], 0x774888
jmp 0x77b250
mov eax, dword [0x7941ac]
cmp dword [eax + 6], 0
jne 0x77aee4
cmp dword [eax + 0xa], 0
je 0x77af10
push 0x794140
push 0xa
call fcn.0077a710
mov ecx, dword [0x794142]
mov eax, dword [0x7941ac]
add esp, 8
cmp ecx, dword [eax + 6]
jb 0x77b246
cmp ecx, dword [eax + 0xa]
ja 0x77b246
cmp byte [eax + 0x10], 0xff
je 0x77b220
push 0x794140
push 0x64
call fcn.0077a710
mov edi, dword [sym.imp.KERNEL32.dll_GetSystemTime]
add esp, 8
cmp dword [0x794146], 0x103
jb 0x77b0e4
lea ecx, [esp + 0x20]
push ecx
call edi
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [0x794152], edx
mov edx, dword [esp + 0x2c]
push 0x794140
push 0xa4
mov dword [0x794156], eax
mov dword [0x79415a], ecx
mov dword [0x79415e], edx
call fcn.0077a710
add esp, 8
test eax, eax
je 0x77af97
mov eax, dword [0x7941b0]
add eax, 0x148
mov dword [0x7941c4], eax
jmp 0x77b250
mov esi, dword [0x7941ac]
mov al, byte [esi + 0x10]
cmp al, 1
jne 0x77afd4
movzx cx, byte [esi + 0x11]
push 0x794140
push 0xa3
mov word [0x79414a], cx
call fcn.0077a710
add esp, 8
test eax, eax
jne 0x77b0cd
mov eax, dword [0x794152]
jmp 0x77b1dc
cmp al, 2
jne 0x77b088
push 0x40
push 0
push 0x794152
call fcn.00786f70
push 0x794140
push 0xa3
movzx ax, byte [esi + 0x11]
mov word [0x79414a], ax
call fcn.0077a710
add esp, 0x14
test eax, eax
je 0x77b022
mov ecx, dword [0x7941b0]
add ecx, 0xf8
mov dword [0x7941c4], ecx
jmp 0x77b250
lea edx, [esp + 0x30]
push edx
call edi
mov ecx, dword [0x794156]
mov edx, dword [0x79415a]
mov eax, dword [0x794152]
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0x30]
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], eax
mov eax, dword [0x79415e]
push ecx
lea edx, [esp + 0x14]
push edx
mov dword [esp + 0x24], eax
call fcn.0077a740
fadd qword [0x774880]
add esp, 8
call fcn.007873c0
test eax, eax
jge 0x77b1dc
mov eax, dword [0x7941b0]
add eax, 0xf8
mov dword [0x7941c4], eax
jmp 0x77b250
cmp al, 3
jne 0x77b1d8
movzx cx, byte [esi + 0x11]
push 0x40
push 0
push 0x794152
mov word [0x79414a], cx
call fcn.00786f70
push 0x794140
push 0xa1
call fcn.0077a710
add esp, 0x14
test eax, eax
jne 0x77b0cd
mov eax, dword [0x794152]
test eax, eax
jg 0x77b1dc
mov edx, dword [0x7941b0]
add edx, 0xf8
mov dword [0x7941c4], edx
jmp 0x77b250
lea eax, [esp + 0x20]
push eax
call edi
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov dword [0x794152], ecx
mov ecx, dword [esp + 0x2c]
push 0x794140
push 0x19
mov dword [0x794156], edx
mov dword [0x79415a], eax
mov dword [0x79415e], ecx
call fcn.0077a710
add esp, 8
test eax, eax
je 0x77b13c
mov edx, dword [0x7941b0]
add edx, 0x148
mov dword [0x7941c4], edx
jmp 0x77b250
mov esi, dword [0x7941ac]
mov al, byte [esi + 0x10]
cmp al, 2
jne 0x77b163
push 0x40
push 0
push 0x794152
call fcn.00786f70
push 0x794140
push 0x18
jmp 0x77aff4
cmp al, 1
jne 0x77b19e
movzx cx, byte [esi + 0x11]
push 0x794140
push 0x18
mov word [0x79414a], cx
call fcn.0077a710
add esp, 8
test eax, eax
jne 0x77b0cd
mov ax, word [0x79414c]
test ax, ax
je 0x77b0cd
movzx eax, ax
jmp 0x77b1dc
cmp al, 3
jne 0x77b1d8
movzx ax, byte [esi + 0x11]
push 0x794140
push 0x15
mov word [0x79414a], ax
call fcn.0077a710
add esp, 8
test eax, eax
jne 0x77b00b
mov ax, word [0x79414c]
test ax, ax
je 0x77b00b
movzx eax, ax
jmp 0x77b1dc
mov eax, dword [esp + 0x40]
mov ecx, dword [0x7941b0]
cmp word [ecx + 0xa6], 1
jne 0x77b220
push eax
add ecx, 0xa8
push ecx
lea edx, [esp + 0x3f8]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [0x7941b0]
add esp, 0xc
push 0
add eax, 6
push eax
lea ecx, [esp + 0x3f8]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0x794140
push 4
call fcn.0077a710
add esp, 8
lea ecx, [esp + 0x138]
mov dword [esp + 0x8c4], ebp
call fcn.0077c950
mov al, 1
jmp 0x77b274
mov dword [0x7941c4], 0x774870
push 0x794140
push 4
call fcn.0077a710
add esp, 8
lea ecx, [esp + 0x138]
mov dword [esp + 0x8c4], ebp
call fcn.0077c950
xor al, al
mov ecx, dword [esp + 0x8bc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x8a8]
xor ecx, esp
call fcn.00786f61
add esp, 0x8b8
ret