Function at 0x46cba0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
cmp dword [0x656b80], 0
push ebx
push esi
push edi
je 0x46ccc8
mov eax, dword [0x656b10]
test eax, eax
je 0x46cbd5
push 0xdc
push str....._third_partiesopenssl_0.9.8kcrypto_randmd_rand.c
push 0x13
push 5
call eax
add esp, 0x10
mov eax, dword [0x656b18]
test eax, eax
jne 0x46cbe6
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
jmp 0x46cbe8
call eax
mov edi, dword [0x656b10]
xor ecx, ecx
cmp dword [0x656b84], eax
sete cl
mov esi, ecx
mov dword [esp + 0x14], esi
test edi, edi
je 0x46cc1c
push 0xde
push str....._third_partiesopenssl_0.9.8kcrypto_randmd_rand.c
push 0x13
push 6
call edi
mov edi, dword [0x656b10]
add esp, 0x10
test esi, esi
jne 0x46cc3d
test edi, edi
je 0x46cc3d
push 0xe3
push str....._third_partiesopenssl_0.9.8kcrypto_randmd_rand.c
push 0x12
push 9
call edi
mov edi, dword [0x656b10]
add esp, 0x10
mov edx, dword [0x656b6c]
mov eax, dword [0x656b70]
mov ecx, dword [0x656b68]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x1c], edx
mov edx, dword [0x65610c]
mov dword [esp + 0x20], eax
mov eax, dword [0x656110]
mov dword [esp + 0x34], edx
mov edx, dword [0x656114]
mov ebx, ecx
add ecx, esi
cmp ecx, 0x3ff
mov dword [esp + 0x38], eax
mov eax, dword [0x656118]
mov dword [esp + 0x3c], edx
mov edx, dword [0x65611c]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
mov dword [0x656b68], ecx
jl 0x46ccdb
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 [0x656b68], ecx
mov dword [0x656b64], 0x3ff
jmp 0x46ccf1
mov edi, dword [0x656b10]
mov dword [esp + 0x14], 0
jmp 0x46cc20
mov eax, dword [0x656b64]
cmp eax, 0x3ff
jge 0x46ccf1
cmp ecx, eax
jle 0x46ccf1
mov dword [0x656b64], ecx
mov eax, 0x66666667
imul esi
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
add ecx, ecx
mov edx, esi
sub edx, ecx
xor ecx, ecx
test edx, edx
setg cl
add ecx, eax
add dword [0x656b70], ecx
cmp dword [esp + 0x14], 0
jne 0x46cd3a
test edi, edi
je 0x46cd3a
push 0x103
push str....._third_partiesopenssl_0.9.8kcrypto_randmd_rand.c
push 0x12
push 0xa
call edi
add esp, 0x10
xor eax, eax
mov edi, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
test esi, esi
jle 0x46ceff
lea edx, [esi - 1]
mov eax, 0xcccccccd
mul edx
shr edx, 4
inc edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], edx
jmp 0x46cd74
mov esi, dword [esp + 0x10]
cmp esi, 0x14
jle 0x46cd7e
mov esi, 0x14
and dword [esp + 0x2c], 0xfffffffd
cmp edi, 0x619bf8
je 0x46cd9c
lea eax, [esp + 0x24]
push eax
mov eax, 0x619bf8
call fcn.004658d0
jmp 0x46cda6
mov edx, dword [edi + 0x10]
lea ecx, [esp + 0x24]
push ecx
call edx
mov edx, dword [esp + 0x28]
add esp, 4
push 0x14
lea eax, [esp + 0x38]
push eax
mov eax, dword [edx + 0x14]
lea ecx, [esp + 0x2c]
push ecx
call eax
lea edi, [esi + ebx - 0x3ff]
add esp, 0xc
test edi, edi
jle 0x46cdff
mov ecx, esi
sub ecx, edi
push ecx
mov ecx, dword [esp + 0x28]
lea edx, [ebx + 0x656308]
push edx
mov edx, dword [ecx + 0x14]
lea eax, [esp + 0x2c]
push eax
call edx
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + 0x14]
push edi
lea eax, [esp + 0x34]
push 0x656308
push eax
call edx
add esp, 0x18
jmp 0x46ce18
mov edx, dword [esp + 0x24]
push esi
lea eax, [ebx + 0x656308]
push eax
mov eax, dword [edx + 0x14]
lea ecx, [esp + 0x2c]
push ecx
call eax
add esp, 0xc
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x24]
push esi
push ecx
mov ecx, dword [eax + 0x14]
lea edx, [esp + 0x2c]
push edx
call ecx
mov ecx, dword [esp + 0x30]
push 8
lea edx, [esp + 0x2c]
push edx
mov edx, dword [ecx + 0x14]
lea eax, [esp + 0x38]
push eax
call edx
mov eax, dword [esp + 0x3c]
add esp, 0x18
cmp dword [eax + 8], 0x40
jle 0x46ce6e
push str.ctx__digest__md_size___EVP_MAX_MD_SIZE
push 0x150
push 0x62ee30
push str._s__d_:_OpenSSL_internal_error__assertion_failed:__s_n
call fcn.0045d1c0
add esp, 0x10
call fcn.005a0442
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x34]
push ecx
mov ecx, dword [eax + 0x18]
lea edx, [esp + 0x28]
push edx
call ecx
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x20]
add esp, 8
test eax, eax
je 0x46ce9e
lea ecx, [esp + 0x24]
push ecx
call eax
add esp, 4
or dword [esp + 0x2c], 2
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x44]
mov ecx, dword [esp + 0x30]
push eax
push 0
push ecx
call fcn.00597130
add dword [ebp + 8], esi
mov edi, 1
add dword [esp + 0x2c], edi
add esp, 0xc
xor eax, eax
test esi, esi
jle 0x46ceec
jmp 0x46ced0
mov dl, byte [esp + eax + 0x34]
xor byte [ebx + 0x656308], dl
add ebx, edi
cmp ebx, 0x3ff
jl 0x46cee6
xor ebx, ebx
add eax, edi
cmp eax, esi
jl 0x46ced0
sub dword [esp + 0x10], 0x14
sub dword [esp + 0x18], edi
mov edi, dword [esp + 0x24]
jne 0x46cd70
test edi, edi
je 0x46cf74
mov eax, dword [edi + 0x20]
test eax, eax
je 0x46cf1f
test byte [esp + 0x2c], 2
jne 0x46cf1f
lea ecx, [esp + 0x24]
push ecx
call eax
mov edi, dword [esp + 0x28]
add esp, 4
test edi, edi
je 0x46cf74
mov edi, dword [edi + 0x44]
test edi, edi
je 0x46cf74
mov esi, dword [esp + 0x30]
test esi, esi
je 0x46cf74
test byte [esp + 0x2c], 4
jne 0x46cf74
mov edx, edi
call fcn.00460f90
mov ecx, dword [0x656b30]
mov eax, dword [esp + 0x30]
mov esi, eax
test ecx, ecx
je 0x46cf58
push 0
push eax
call ecx
add esp, 8
push esi
call dword [0x649fa0]
mov eax, dword [0x656b30]
add esp, 4
test eax, eax
je 0x46cf74
push 1
push 0
call eax
add esp, 8
mov esi, dword [esp + 0x14]
mov ecx, dword [0x656b10]
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
test esi, esi
jne 0x46cfb1
test ecx, ecx
je 0x46cfb1
push 0x12e
push str....._third_partiesopenssl_0.9.8kcrypto_randmd_rand.c
push 0x12
push 9
call ecx
mov ecx, dword [0x656b10]
add esp, 0x10
xor eax, eax
jmp 0x46cfc0
movzx edx, byte [esp + eax + 0x34]
xor byte [eax + 0x65610c], dl
movzx edx, byte [esp + eax + 0x35]
xor byte [eax + 0x65610d], dl
movzx edx, byte [esp + eax + 0x36]
xor byte [eax + 0x65610e], dl
movzx edx, byte [esp + eax + 0x37]
xor byte [eax + 0x65610f], dl
movzx edx, byte [esp + eax + 0x38]
xor byte [eax + 0x656110], dl
add eax, 5
cmp eax, 0x14
jl 0x46cfc0
fld qword [0x631788]
fld qword [0x656b78]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x46d021
fadd qword [ebp + 0x10]
fstp qword [0x656b78]
jmp 0x46d023
fstp st(0)
test esi, esi
jne 0x46d03e
test ecx, ecx
je 0x46d03e
push 0x139
push str....._third_partiesopenssl_0.9.8kcrypto_randmd_rand.c
push 0x12
push 0xa
call ecx
add esp, 0x10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret