Function at 0x486050
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x4c
call fcn.00525ec0
mov eax, dword [0x5af1b4]
xor eax, esp
mov dword [esp + 0x48], eax
cmp dword [ebp + 0xc], 0
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [esp + 0x2c], eax
je 0x486462
cmp dword [0x5be084], 0
je 0x4861c5
mov eax, dword [0x5bdfe0]
test eax, eax
je 0x4860a1
lea ecx, [esp + 0xc]
push ecx
call eax
add esp, 4
jmp 0x4860c2
mov eax, dword [0x5bdfdc]
test eax, eax
je 0x4860ae
call eax
jmp 0x4860b4
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
xor ecx, ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ecx
mov ebx, dword [0x5bdfd4]
test ebx, ebx
je 0x4860e5
push 0xdf
push str..crypto_randmd_rand.c
push 0x13
push 5
call ebx
mov ebx, dword [0x5bdfd4]
add esp, 0x10
lea ecx, [esp + 0xc]
mov edx, 0x5bd958
call fcn.00461480
mov esi, eax
neg esi
sbb esi, esi
inc esi
mov dword [esp + 0x30], esi
test ebx, ebx
je 0x48611b
push 0xe1
push str..crypto_randmd_rand.c
push 0x13
push 6
call ebx
mov ebx, dword [0x5bdfd4]
add esp, 0x10
test esi, esi
jne 0x48613c
test ebx, ebx
je 0x48613c
push 0xe6
push str..crypto_randmd_rand.c
push 0x12
push 9
call ebx
mov ebx, dword [0x5bdfd4]
add esp, 0x10
mov edx, dword [0x5be070]
mov ecx, dword [0x5be06c]
mov eax, dword [0x5be074]
mov dword [esp + 0x38], edx
mov edx, dword [0x5bdd74]
mov dword [esp + 0x3c], eax
mov eax, dword [0x5bdd78]
mov dword [esp + 0x40], edx
mov edx, dword [0x5bdd7c]
mov edi, ecx
add ecx, dword [ebp + 0xc]
mov dword [esp + 0x44], eax
cmp ecx, 0x3ff
mov eax, dword [0x5bdd80]
mov dword [esp + 0x48], edx
mov edx, dword [0x5bdd84]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
mov dword [0x5be06c], ecx
jl 0x4861dc
mov eax, 0x7fdff7fd
imul ecx
sub edx, ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x3ff
add ecx, eax
mov dword [0x5be06c], ecx
mov dword [0x5be068], 0x3ff
jmp 0x4861f2
mov ebx, dword [0x5bdfd4]
mov dword [esp + 0x30], 0
mov esi, dword [esp + 0x30]
jmp 0x48611f
mov eax, dword [0x5be068]
cmp eax, 0x3ff
jge 0x4861f2
cmp ecx, eax
jle 0x4861f2
mov dword [0x5be068], ecx
mov eax, 0x66666667
imul dword [ebp + 0xc]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp + 0xc]
lea ecx, [eax + eax*4]
add ecx, ecx
add ecx, ecx
sub edx, ecx
xor ecx, ecx
test edx, edx
setg cl
add ecx, eax
add dword [0x5be074], ecx
test esi, esi
jne 0x48623a
test ebx, ebx
je 0x48623a
push 0x106
push str..crypto_randmd_rand.c
push 0x12
push 0xa
call ebx
add esp, 0x10
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0xc]
test eax, eax
jle 0x486397
mov esi, eax
mov dword [esp + 0x34], esi
jmp 0x486274
mov esi, dword [esp + 0x34]
cmp esi, 0x14
jle 0x48627e
mov esi, 0x14
lea edx, [esp + 0x14]
push 0x574308
push edx
xor ecx, ecx
call fcn.00473e30
push 0x14
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x24]
push ecx
call dword [esp + 0x3c]
lea ebx, [esi + edi - 0x3ff]
add esp, 0x14
lea eax, [edi + 0x5bd960]
lea ecx, [esp + 0x14]
test ebx, ebx
jle 0x4862d2
mov edx, esi
sub edx, ebx
push edx
push eax
push ecx
call dword [esp + 0x34]
add esp, 0xc
push ebx
push 0x5bd960
lea edx, [esp + 0x1c]
push edx
jmp 0x4862d5
push esi
push eax
push ecx
call dword [esp + 0x34]
mov edx, dword [esp + 0x38]
add esp, 0xc
push esi
push edx
lea eax, [esp + 0x1c]
push eax
call dword [esp + 0x34]
add esp, 0xc
push 8
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x1c]
push edx
call dword [esp + 0x34]
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp dword [eax + 8], 0x40
jg 0x486431
mov eax, dword [eax + 0x18]
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x18]
push edx
call eax
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x20]
add esp, 8
test eax, eax
je 0x48633b
lea edx, [esp + 0x14]
push edx
call eax
add esp, 4
or dword [esp + 0x1c], 2
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x44]
mov edx, dword [esp + 0x20]
push ecx
push 0
push edx
call fcn.00516180
inc dword [esp + 0x48]
add dword [esp + 0x38], esi
add esp, 0xc
xor eax, eax
test esi, esi
jle 0x48637a
mov cl, byte [esp + eax + 0x40]
xor byte [edi + 0x5bd960], cl
inc edi
cmp edi, 0x3ff
jl 0x486375
xor edi, edi
inc eax
cmp eax, esi
jl 0x486360
mov eax, dword [esp + 0xc]
sub dword [esp + 0x34], 0x14
add eax, 0x14
cmp eax, dword [ebp + 0xc]
mov dword [esp + 0xc], eax
jl 0x486270
mov esi, dword [esp + 0x30]
lea edi, [esp + 0x14]
call fcn.00474260
mov ecx, dword [0x5bdfd4]
test esi, esi
jne 0x4863c7
test ecx, ecx
je 0x4863c7
push 0x137
push str..crypto_randmd_rand.c
push 0x12
push 9
call ecx
mov ecx, dword [0x5bdfd4]
add esp, 0x10
xor eax, eax
lea esp, [esp]
movzx edx, byte [esp + eax + 0x40]
xor byte [eax + 0x5bdd74], dl
movzx edx, byte [esp + eax + 0x41]
xor byte [eax + 0x5bdd75], dl
movzx edx, byte [esp + eax + 0x42]
xor byte [eax + 0x5bdd76], dl
movzx edx, byte [esp + eax + 0x43]
xor byte [eax + 0x5bdd77], dl
movzx edx, byte [esp + eax + 0x44]
xor byte [eax + 0x5bdd78], dl
add eax, 5
cmp eax, 0x14
jl 0x4863d0
fld qword [0x5a0b70]
fld qword [0x5be078]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x486445
fadd qword [ebp + 0x10]
fstp qword [0x5be078]
jmp 0x486447
push str.ctx__digest__md_size___EVP_MAX_MD_SIZE
mov ecx, 0x115
mov edx, str..cryptoevpdigest.c
call fcn.00461970
fstp st(0)
test esi, esi
jne 0x486462
test ecx, ecx
je 0x486462
push 0x144
push str..crypto_randmd_rand.c
push 0x12
push 0xa
call ecx
add esp, 0x10
mov ecx, dword [esp + 0x54]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00511c1b
mov esp, ebp
pop ebp
ret