Function at 0x77466fc0
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
push esi
mov esi, dword [edx + 0x10]
mov ebx, ecx
movzx ecx, byte [edx + 0x1b]
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x28], esi
push edi
mov edi, dword [ebp + 0x14]
movzx eax, byte [edi + 2]
test ecx, ecx
jne 0x77467418
mov ecx, dword [ebx + eax*4 + 0x3c0]
mov al, byte [edi + 3]
mov dword [ebp - 0x14], ecx
test al, 6
jne 0x77467455
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
add edi, 8
mov ecx, dword [ebp + 0x10]
mov eax, edi
shr eax, 3
xor ebx, ebx
movzx eax, ax
mov dword [ebp - 0x20], eax
mov dword [esi], edx
lea eax, [ecx - 0x20]
xor edx, edx
mov dword [ebp + 0xc], edi
div edi
lea edx, [esi + ecx]
mov dword [ebp - 8], ebx
add eax, 0x1f
shr eax, 3
and eax, 0x1ffffffc
add eax, 0x20
and eax, 0xfffffff8
mov dword [ebp - 0x24], eax
add eax, esi
lea ecx, [eax + edi]
cmp ecx, edx
mov edx, dword [0x77538774]
mov dword [ebp - 0x10], edx
ja 0x774670ac
mov ecx, edi
mov edi, eax
shl ecx, 0xd
sub edi, esi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x1c], ecx
shl edi, 0xd
mov ecx, eax
shr ecx, 3
xor ecx, edi
add edi, dword [ebp - 0x1c]
xor ecx, edx
mov edx, dword [ebp - 0x18]
xor ecx, dword [edx + 0xc]
mov dword [eax], ecx
mov ecx, dword [eax + 4]
movzx edx, bx
and ecx, 0xff0000ff
shl edx, 8
inc ebx
or edx, ecx
mov dword [ebp - 8], ebx
mov dword [eax + 4], edx
mov edx, dword [ebp + 8]
add edx, dword [ebp + 0x10]
mov byte [eax + 7], 0x80
add eax, esi
lea ecx, [esi + eax]
mov esi, dword [ebp + 0xc]
cmp ecx, edx
mov edx, dword [ebp - 0x10]
jbe 0x77467064
mov esi, dword [ebp + 8]
lea eax, [esi + 0x1c]
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], eax
mov esi, ebx
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x18]
lea eax, [esi + 7]
shr eax, 3
push eax
push 0
push edi
call fcn.77498e60
mov ecx, esi
add esp, 0xc
mov eax, 1
mov dword [ebp - 0x2c], eax
and ecx, 0x1f
je 0x774670e9
shl eax, cl
shr esi, 5
dec eax
not eax
or dword [edi + esi*4], eax
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp + 0x14]
mov edi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp + 8]
mov word [esi + 0x14], di
mov word [esi + 0x18], bx
mov dword [esi], edx
mov al, byte [eax + 2]
mov byte [esi + 0x1a], al
xor eax, eax
mov word [esi + 0x16], ax
mov dword [esi + 4], ecx
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
lea eax, [edi*8]
mov word [ebp - 0x1a], ax
mov eax, dword [ebp - 0x24]
mov word [ebp - 0x1c], ax
mov eax, dword [ebp - 0x10]
xor eax, dword [ebp - 0x1c]
xor eax, dword [ebp - 0x18]
xor eax, ecx
mov dword [ecx + 0x10], eax
mov eax, dword [edx + 0x54]
test eax, eax
je 0x7746742c
inc word [edx + 0x60]
cmp word [edx + 0x60], 0x1c
ja 0x77467447
lea eax, [edx + 0x50]
mov dword [ebp - 0x10], eax
mov ecx, dword [eax]
mov edi, dword [eax + 4]
mov dword [ebp - 0x20], ecx
lea eax, [ecx + ebx]
mov dword [ebp - 0x24], eax
test ebx, ebx
jle 0x774b7cd7
lea esi, [edi + 1]
mov eax, ecx
mov edx, edi
mov ebx, dword [ebp - 0x24]
mov ecx, esi
mov esi, dword [ebp - 0x10]
lock cmpxchg8b qword [esi]
cmp eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x28]
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
jne 0x77467157
cmp edx, edi
jne 0x77467157
mov ecx, dword [ebp - 0x14]
mov edx, dword fs:[0x18]
mov eax, dword [ecx]
inc dword [eax + 0x10]
mov eax, dword [eax + 0x10]
mov dword [ecx + 0x58], eax
movzx eax, word [edx + 0xfaa]
mov edi, eax
inc eax
movzx ecx, al
lea eax, [ecx + 1]
movzx eax, al
mov word [edx + 0xfaa], ax
xor edx, edx
movzx eax, byte [ecx + 0x775364c0]
movzx ecx, byte [edi + 0x775364c0]
shl eax, 7
or eax, ecx
mov ecx, ebx
div ecx
mov eax, esi
shl edx, 0x10
mov dword [ebp - 0x1c], edx
mov edx, dword [ebp - 0xc]
mov word [ebp - 0x1c], cx
mov ecx, dword [ebp - 0x1c]
mov dword [edx + 0x1c], 1
lea esi, [edx + 0x10]
lock cmpxchg dword [esi], ecx
test byte [0x775384b0], 2
jne 0x774673f4
mov eax, dword fs:[0x18]
cmp dword [0x77538494], 0
movzx ebx, word [eax + 0xfaa]
mov dword [ebp - 0x1c], ebx
je 0x774b7cdf
mov eax, dword [0x775386cc]
xor esi, esi
mov ecx, eax
and cl, 3
cmp cl, 2
jne 0x774b7d5b
test esi, esi
js 0x774b7dce
cmp esi, 0x103
je 0x774b7d76
mov eax, dword [0x77536480]
mov ecx, 0x7fffffed
and eax, 0x7f
mov dword [ebp - 0x28], eax
mov eax, dword [0x77538494]
mul ecx
add eax, 0x7fffffc3
mov esi, eax
adc edx, 0
and eax, 0x7fffffff
mov ecx, edx
shr edx, 0x1e
shrd esi, ecx, 0x1f
and esi, 0x7fffffff
shr ecx, 0x1f
add esi, eax
xor eax, eax
add esi, edx
mov edi, esi
adc eax, eax
and esi, 0x7fffffff
shrd edi, eax, 0x1f
add edi, esi
shr eax, 0x1f
cmp edi, 0x7fffffff
je 0x774b7dff
mov eax, dword [ebp - 0x28]
mov dword [0x77538494], edi
lea eax, [eax*4 + 0x77536280]
xchg dword [eax], edi
cmp byte [0x7ffe0290], 0
je 0x774b7e10
xor edx, edx
mov esi, 1
rdrand ecx
mov eax, 0
cmovb eax, esi
test eax, eax
je 0x774b7e06
xor edi, ecx
mov ecx, 0x77536480
mov dword [ebp - 0x24], edi
mov eax, edi
lock xadd dword [ecx], eax
cmp dword [0x77538494], 0
je 0x774b7e17
mov eax, dword [0x775386cc]
xor esi, esi
mov ecx, eax
and cl, 3
cmp cl, 2
jne 0x774b7e96
test esi, esi
js 0x774b7f0b
cmp esi, 0x103
je 0x774b7eb3
mov eax, dword [0x77536480]
mov ecx, 0x7fffffed
and eax, 0x7f
mov dword [ebp - 0x28], eax
mov eax, dword [0x77538494]
mul ecx
add eax, 0x7fffffc3
mov esi, eax
adc edx, 0
and eax, 0x7fffffff
mov ecx, edx
shr edx, 0x1e
shrd esi, ecx, 0x1f
and esi, 0x7fffffff
shr ecx, 0x1f
add esi, eax
xor eax, eax
add esi, edx
mov ecx, esi
adc eax, eax
and esi, 0x7fffffff
shrd ecx, eax, 0x1f
add ecx, esi
shr eax, 0x1f
cmp ecx, 0x7fffffff
je 0x774b7f3c
mov eax, dword [ebp - 0x28]
mov dword [0x77538494], ecx
lea eax, [eax*4 + 0x77536280]
xchg dword [eax], ecx
cmp byte [0x7ffe0290], 0
je 0x774b7f4d
xor esi, esi
jmp 0x774673b0
rdrand edx
mov eax, 0
cmovb eax, dword [ebp - 0x2c]
test eax, eax
je 0x774b7f43
xor ecx, edx
mov edx, 0x77536480
mov eax, ecx
lock xadd dword [edx], eax
mov edx, dword [ebp - 0xc]
xor eax, eax
or eax, edi
and ecx, 0x7f7f7f7f
and eax, 0x7f7f7f7f
shr ebx, 3
mov dword [ebx*8 + 0x775364c0], ecx
mov dword [ebx*8 + 0x775364c4], eax
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0x50]
test eax, eax
jne 0x7746747b
mov eax, 0x7ffe0380
cmp byte [eax], 0
jne 0x77467493
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebx + eax*4 + 0x5c4]
imul ecx, ecx, 0x68
add ecx, 0xffffff98
add ecx, eax
jmp 0x77466ff3
mov ecx, dword [edx]
mov eax, dword [ecx + 0x14]
cmp eax, 0x20
jae 0x7746743c
add eax, 4
mov dword [ecx + 0x14], eax
xor eax, eax
mov word [edx + 0x60], ax
jmp 0x77467151
mov ecx, dword [edx]
mov eax, dword [ecx + 0x14]
test eax, eax
je 0x7746743c
add eax, 0xfffffffc
jmp 0x77467439
push edi
push dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov ecx, ebx
shr al, 1
and al, 3
push edi
movzx eax, al
push eax
push dword [ebp + 8]
call fcn.77492055
test eax, eax
jne 0x7746740f
mov edx, dword [ebp - 0xc]
jmp 0x77467004
cmp dword [eax], 0
je 0x77467401
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0x50]
add eax, 0x226
jmp 0x77467406
mov eax, dword fs:[0x30]
test byte [eax + 0x240], 1
je 0x7746740f
mov ax, word [edx + 0x14]
movzx ecx, ax
movzx eax, byte [edx + 0x1b]
push eax
movzx eax, word [edx + 0x18]
mov edx, dword [edx + 4]
push eax
mov eax, dword [ebp - 0x18]
push ecx
mov ecx, dword [eax + 0xc]
call fcn.7750335e
jmp 0x7746740f
lea esi, [edi - 1]
jmp 0x77467170
push 0
push 4
push 0x77538494
push 0x24
push 0xffffffffffffffff
call fcn.77492ad0
test eax, eax
jns 0x77467224
mov esi, dword [0x7ffe0004]
mov dword [ebp - 0x28], esi
cmp esi, 0x1000000
jb 0x774b7d1c
mov eax, 0x7ffe0320
mov eax, dword [eax]
mul esi
shrd eax, edx, 0x18
shr edx, 0x18
jmp 0x774b7d51
mov edi, 0x7ffe0324
mov esi, 0x7ffe0320
mov ebx, 0x7ffe0328
mov ecx, dword [edi]
mov edx, dword [esi]
mov eax, dword [ebx]
cmp ecx, eax
je 0x774b7d39
pause
jmp 0x774b7d2b
mov ebx, dword [ebp - 0x1c]
mov eax, edx
mul dword [ebp - 0x28]
shl ecx, 8
imul ecx, dword [ebp - 0x28]
shrd eax, edx, 0x18
shr edx, 0x18
add eax, ecx
mov dword [0x77538494], eax
jmp 0x77467224
mov ecx, eax
and ecx, 3
jne 0x774b7da6
mov ecx, eax
mov edx, 1
mov edi, 0x775386cc
lock cmpxchg dword [edi], edx
cmp eax, ecx
jne 0x774b7d5b
push 0
push 0
push 0x775386cc
call fcn.77492659
push 0
test eax, eax
je 0x774b7dd4
push 0
push 0x775386cc
call fcn.77485540
mov esi, eax
test esi, esi
jns 0x7746724d
mov byte [ebp - 1], 1
jmp 0x774b7dee
cmp ecx, 1
jne 0x774b7db9
mov edx, 0x775386cc
mov ecx, eax
call fcn.77447ed0
jmp 0x774b7d5b
and eax, 3
cmp al, 3
jne 0x77467239
mov esi, 0xc00000f0
jmp 0x77467239
mov byte [ebp - 1], 0
jmp 0x774b7dee
push 4
push 0x775386cc
call fcn.77485540
mov esi, eax
test esi, esi
jns 0x7746724d
mov byte [ebp - 1], 2
push 1
lea edx, [ebp - 1]
mov ecx, esi
call fcn.774fa602
jmp 0x7746724d
xor edi, edi
jmp 0x774672aa
inc edx
cmp edx, 0xa
jb 0x774672d0
xor ecx, ecx
jmp 0x774672e3
push 0
push 4
push 0x77538494
push 0x24
push 0xffffffffffffffff
call fcn.77492ad0
test eax, eax
jns 0x77467300
mov esi, dword [0x7ffe0004]
mov dword [ebp - 0x28], esi
cmp esi, 0x1000000
jb 0x774b7e54
mov eax, 0x7ffe0320
mov eax, dword [eax]
mul esi
shrd eax, edx, 0x18
shr edx, 0x18
jmp 0x774b7e8c
mov ebx, 0x7ffe0324
mov esi, 0x7ffe0320
mov edi, 0x7ffe0328
mov ecx, dword [ebx]
mov edx, dword [esi]
mov eax, dword [edi]
cmp ecx, eax
je 0x774b7e71
pause
jmp 0x774b7e63
mov edi, dword [ebp - 0x24]
mov eax, edx
mul dword [ebp - 0x28]
mov ebx, dword [ebp - 0x1c]
shl ecx, 8
imul ecx, dword [ebp - 0x28]
shrd eax, edx, 0x18
shr edx, 0x18
add eax, ecx
mov dword [0x77538494], eax
jmp 0x77467300
mov ecx, eax
and ecx, 3
jne 0x774b7ee3
mov dword [ebp - 0x28], eax
mov edx, 1
mov ecx, 0x775386cc
lock cmpxchg dword [ecx], edx
cmp eax, dword [ebp - 0x28]
jne 0x774b7e96
push 0
push 0
push 0x775386cc
call fcn.77492659
push 0
test eax, eax
je 0x774b7f11
push 0
push 0x775386cc
call fcn.77485540
mov esi, eax
test esi, esi
jns 0x77467329
mov byte [ebp - 2], 1
jmp 0x774b7f2b
cmp ecx, 1
jne 0x774b7ef6
mov edx, 0x775386cc
mov ecx, eax
call fcn.77447ed0
jmp 0x774b7e96
and eax, 3
cmp al, 3
jne 0x77467315
mov esi, 0xc00000f0
jmp 0x77467315
mov byte [ebp - 2], 0
jmp 0x774b7f2b
push 4
push 0x775386cc
call fcn.77485540
mov esi, eax
test esi, esi
jns 0x77467329
mov byte [ebp - 2], 2
push 1
lea edx, [ebp - 2]
mov ecx, esi
call fcn.774fa602
jmp 0x77467329
xor ecx, ecx
jmp 0x77467386
inc esi
cmp esi, 0xa
jb 0x774673b0
xor edx, edx
jmp 0x774673c4