Function at 0x14002ff10
Capabilities:
Hash data using djb2

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r14
lea rbp, [rsp - 0x10568]
mov eax, 0x10668
call fcn.1401be380
sub rsp, rax
mov rax, qword [0x1402581e0]
xor rax, rsp
mov qword [rbp + 0x10550], rax
movzx eax, byte [rdx + 0x1cc]
xor r12d, r12d
mov r14, rdx
mov rdi, rcx
imul rsi, rax, 0x6f8
lea rax, [0x1402c7ed0]
add rsi, rax
mov eax, dword [rdx + 0x1c8]
mov qword [rsp + 0x50], rsi
test eax, eax
je 0x14002ff7c
cmp eax, dword [0x1402cb9c8]
lea ebx, [r12 + 1]
jb 0x14002ff7f
mov ebx, r12d
cmp dword [0x1402cb6dc], r12d
jne 0x140030005
test ebx, ebx
jne 0x140030005
cmp dword [reloc.WS2_32.dll_accept], r12d
je 0x140030005
lea rcx, [rsp + 0x64]
xor edx, edx
mov r8d, 0xbc
mov dword [rsp + 0x60], r12d
call sub.MSVCR120.dll_memset
lea rcx, [rbp + 0x20]
xor edx, edx
mov r8d, 0x10130
call sub.MSVCR120.dll_memset
lea rdx, [rsp + 0x60]
mov rcx, rdi
call fcn.140030bf0
test eax, eax
je 0x140030005
mov r8d, dword [r14 + 0x1c8]
test r8d, r8d
je 0x140030005
cmp r8d, dword [rbp + 0x128]
jae 0x140030005
cmp dword [0x1402c7bbc], r12d
je 0x14002fffb
lea rdx, str.block__u_was_already_solved
lea ecx, [rbx + 1]
call fcn.140040950
mov eax, 1
jmp 0x14003082e
cmp dword [0x1402c7894], r12d
jne 0x140030036
test ebx, ebx
je 0x140030036
cmp dword [0x1402c7bbc], r12d
je 0x14002fffb
lea rdx, str.stale_work_detected__discarding
mov ecx, 1
call fcn.140040950
mov eax, 1
jmp 0x14003082e
test byte [rsi + 1], 2
mov qword [rsp + 0x106b0], r13
mov qword [rsp + 0x10660], r15
je 0x140030522
movsxd rax, dword [0x140258268]
mov word [rsp + 0x48], r12w
cmp eax, 0x18
ja case.0x14003007d.5
lea r11, [0x140000000]
movzx eax, byte [r11 + rax + 0x30864]
mov ecx, dword [r11 + rax*4 + 0x30850]
add rcx, r11
jmp rcx
mov dword [0x1402c7cc4], 1
mov ecx, dword [r14 + 0x44]
mov eax, ecx
mov byte [rsp + 0x44], cl
shr eax, 8
mov byte [rsp + 0x45], al
mov eax, ecx
shr ecx, 0x18
mov byte [rsp + 0x47], cl
mov ecx, dword [r14 + 0x4c]
shr eax, 0x10
mov byte [rsp + 0x40], cl
mov byte [rsp + 0x46], al
mov eax, ecx
shr eax, 8
mov byte [rsp + 0x41], al
mov eax, ecx
shr eax, 0x10
shr ecx, 0x18
mov byte [rsp + 0x43], cl
mov byte [rsp + 0x42], al
mov ecx, 9
call qword [sym.imp.MSVCR120.dll_malloc]
mov r13, rax
test rax, rax
jne 0x140030195
mov r13, r12
jmp 0x1400301c3
mov ecx, dword [r14 + 0x88]
movzx eax, word [r14 + 0x64]
mov byte [rsp + 0x49], al
shr ax, 8
mov byte [rsp + 0x47], cl
mov byte [rsp + 0x48], al
mov eax, ecx
shr eax, 8
mov byte [rsp + 0x46], al
mov eax, ecx
shr eax, 0x10
shr ecx, 0x18
mov byte [rsp + 0x44], cl
mov ecx, dword [r14 + 0x8c]
mov byte [rsp + 0x45], al
mov eax, ecx
mov byte [rsp + 0x43], cl
shr eax, 8
mov byte [rsp + 0x42], al
mov eax, ecx
shr eax, 0x10
shr ecx, 0x18
mov byte [rsp + 0x40], cl
mov byte [rsp + 0x41], al
jmp 0x1400300cb
mov ecx, dword [r14 + 0x64]
mov dword [0x1402c7cc4], 1
mov eax, ecx
mov byte [rsp + 0x44], cl
shr eax, 8
mov byte [rsp + 0x45], al
mov eax, ecx
shr ecx, 0x18
mov byte [rsp + 0x47], cl
mov ecx, dword [r14 + 0x6c]
jmp 0x1400300a7
mov ecx, dword [r14 + 0x28]
mov eax, ecx
mov byte [rsp + 0x47], cl
shr eax, 8
mov byte [rsp + 0x46], al
mov eax, ecx
shr eax, 0x10
shr ecx, 0x18
mov byte [rsp + 0x44], cl
mov ecx, dword [r14 + 0x20]
jmp 0x140030122
lea rbx, [rsp + 0x40]
mov rdi, rax
mov esi, 4
movzx r8d, byte [rbx]
lea rdx, [0x14023ec38]
mov rcx, rdi
call qword [sym.imp.MSVCR120.dll_sprintf]
add rdi, 2
lea rbx, [rbx + 1]
dec rsi
jne 0x1400301a2
cmp dword [0x1402c7cc4], r12d
je 0x140030237
mov edx, dword [rsp + 0x40]
lea rcx, [r14 + 0xe4]
call fcn.140047630
mov ebx, eax
test eax, eax
je 0x140030237
xor ecx, ecx
call qword [sym.imp.MSVCR120.dll__time64]
sub eax, ebx
cmp dword [0x1402c7cc0], r12d
jne 0x140030218
lea rdx, str.nonce__s_was_already_sent__u_seconds_ago
mov r9d, eax
mov r8, r13
mov ecx, 1
call fcn.140040950
lea rcx, [r14 + 0xe4]
call fcn.1400480f0
mov rcx, r13
call qword [sym.imp.MSVCR120.dll_free]
mov qword [0x1402c7ca0], r12
call fcn.1400328d0
mov eax, 1
jmp 0x14003081e
mov ecx, 9
call qword [sym.imp.MSVCR120.dll_malloc]
mov qword [rsp + 0x58], rax
test rax, rax
jne 0x140030253
mov qword [rsp + 0x58], r12
jmp 0x140030281
lea rbx, [rsp + 0x44]
mov rdi, rax
mov esi, 4
movzx r8d, byte [rbx]
lea rdx, [0x14023ec38]
mov rcx, rdi
call qword [sym.imp.MSVCR120.dll_sprintf]
add rdi, 2
lea rbx, [rbx + 1]
dec rsi
jne 0x140030260
mov eax, dword [0x140258268]
mov r15d, 2
cmp eax, 1
jne 0x1400302a5
mov rdx, qword [0x1402c79f8]
lea rcx, [r14 + 0x90]
jmp 0x140030320
mov eax, dword [0x140258268]
cmp eax, 0x18
jne 0x140030312
mov eax, dword [r14 + 0x24]
mov edx, 0xff
mov ecx, eax
shl ax, 8
shr ecx, 8
and cx, dx
or cx, ax
mov word [rsp + 0x4c], cx
mov ecx, 5
call qword [sym.imp.MSVCR120.dll_malloc]
mov r12, rax
test rax, rax
je 0x140030328
lea rbx, [rsp + 0x4c]
mov rdi, rax
mov rsi, r15
nop dword [rax + rax]
movzx r8d, byte [rbx]
lea rdx, [0x14023ec38]
mov rcx, rdi
call qword [sym.imp.MSVCR120.dll_sprintf]
add rdi, r15
lea rbx, [rbx + 1]
dec rsi
jne 0x1400302f0
jmp 0x140030328
mov rdx, qword [r14 + 0x168]
lea rcx, [r14 + 0x170]
call fcn.140041f70
mov r12, rax
movsd xmm1, qword [0x1402c7c40]
movsd xmm2, qword [r14 + 0x1b8]
xorps xmm0, xmm0
ucomisd xmm1, xmm0
movsd qword [0x1402c79e8], xmm2
jp 0x14003034c
je 0x14003037c
comisd xmm2, xmm1
jbe 0x14003037c
cmp dword [0x1402c7bbc], 0
jne 0x140030364
cmp dword [0x1402c7ad8], 0
je 0x1400303a2
movq r8, xmm2
lea rdx, str.share_diff:__.5f__possible_block_found___
mov ecx, 3
call fcn.140040950
jmp 0x1400303a2
cmp dword [0x1402c7ad8], 0
je 0x1400303a2
movq r8, xmm2
lea r9, [r14 + 0x1a8]
lea rdx, str.share_diff:__.5f__x__.1f_
mov ecx, 4
call fcn.140040950
cmp word [0x140258b4c], 0
je 0x14003043f
mov ecx, 5
call qword [sym.imp.MSVCR120.dll_malloc]
mov rsi, rax
test rax, rax
jne 0x1400303c7
xor edi, edi
jmp 0x1400303f4
lea rbx, [rsp + 0x48]
mov rdi, rax
nop
movzx r8d, byte [rbx]
lea rdx, [0x14023ec38]
mov rcx, rdi
call qword [sym.imp.MSVCR120.dll_sprintf]
add rdi, 2
lea rbx, [rbx + 1]
dec r15
jne 0x1400303d0
mov rdi, rsi
mov r8, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x58]
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], r13
lea r9, [r14 + 0xec]
lea rdx, str._method_:__mining.submit____params_:____s_____s_____s_____s_____s_____s_____id_:4
lea rcx, [rbp + 0x10150]
add r8, 0x288
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r12
call qword [sym.imp.MSVCR120.dll_sprintf]
mov rcx, rdi
call qword [sym.imp.MSVCR120.dll_free]
jmp 0x14003047a
mov r8, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x58]
mov qword [rsp + 0x30], r13
lea r9, [r14 + 0xec]
lea rdx, str._method_:__mining.submit____params_:____s_____s_____s_____s_____s_____id_:4
lea rcx, [rbp + 0x10150]
add r8, 0x288
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r12
call qword [sym.imp.MSVCR120.dll_sprintf]
mov rcx, r12
call qword [sym.imp.MSVCR120.dll_free]
mov rcx, rbx
call qword [sym.imp.MSVCR120.dll_free]
mov rcx, r13
call qword [sym.imp.MSVCR120.dll_free]
lea rcx, [0x1402c7aa0]
call fcn.14002b010
cmp dword [0x1402c7ad4], 0
je 0x1400304c2
lea r8, [rbp + 0x10150]
lea rdx, [0x14023ece0]
mov ecx, 4
call fcn.140040950
lea rcx, [0x1402cb728]
call fcn.1401b9380
mov rcx, qword [0x1402c79c8]
lea rdx, [rbp + 0x10150]
call fcn.1400423e0
lea rcx, [0x1402cb728]
mov ebx, eax
call fcn.1401b9960
test ebx, ebx
jne 0x1400304ff
lea rdx, str.submit_upstream_work_stratum_send_line_failed
jmp 0x140030815
cmp dword [0x1402c7cc4], 0
je 0x140030807
mov edx, dword [rsp + 0x40]
mov rcx, r14
call fcn.140047770
mov eax, 1
jmp 0x14003081e
mov eax, dword [0x140258268]
mov ecx, 0x20
lea r9d, [rcx + 0x60]
cmp eax, 1
jne 0x140030643
mov ecx, 0x2d
mov r9d, 0xc0
movsxd r8, ecx
test ecx, ecx
jle 0x140030575
lea rdx, [r14 + 2]
mov ecx, dword [rdx - 2]
lea rdx, [rdx + 4]
mov eax, ecx
mov byte [rdx - 6], cl
shr eax, 8
mov byte [rdx - 5], al
mov eax, ecx
shr ecx, 0x18
shr eax, 0x10
mov byte [rdx - 3], cl
mov byte [rdx - 4], al
dec r8
jne 0x140030550
movsxd rbx, r9d
lea rcx, [rbx*2 + 1]
call qword [sym.imp.MSVCR120.dll_malloc]
mov r15, rax
mov qword [rsp + 0x50], rax
test rax, rax
je 0x14003080e
mov r8, rbx
mov rdx, r14
mov rcx, rax
call fcn.140041ef0
lea rdx, str._method_:__getwork____params_:____s_____id_:4_r_n
lea rcx, [rbp + 0x10150]
mov r8, r15
call qword [sym.imp.MSVCR120.dll_sprintf]
lea rcx, [rsi + 0x308]
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], r12b
jne 0x1400305c7
neg rax
mov qword [rsp + 0x28], rcx
lea r9, [rsi + 0x288]
sbb eax, eax
lea r8, str._s_c_s
lea rcx, [rbp + 0x10350]
and eax, 0x3a
mov edx, 0x200
mov dword [rsp + 0x20], eax
call qword [sym.imp.MSVCR120.dll__snprintf]
mov qword [rsp + 0x38], r12
mov dword [rsp + 0x30], r12d
lea rdx, [rsi + 0x48]
lea r9, [rbp + 0x10150]
lea r8, [rbp + 0x10350]
mov rcx, rdi
mov dword [rsp + 0x28], r12d
mov dword [rsp + 0x20], r12d
call fcn.1400411b0
mov r13, rax
test rax, rax
jne 0x140030665
lea rdx, str.submit_upstream_work_json_rpc_call_failed
jmp 0x140030815
mov eax, dword [0x140258268]
cmp eax, 0x18
jne 0x140030545
mov r8, r14
mov rdx, rsi
mov rcx, rdi
call fcn.14018c320
jmp 0x14003081e
mov ebx, dword [rax]
lea r11, [0x140000000]
mov esi, 0x1505
mov r10d, WSACleanup
test ebx, ebx
jne 0x140030707
lea rdi, [0x1401d357c]
mov r9d, esi
mov ecx, r10d
mov rax, rdi
imul r9, r9, 0x21
lea rax, [rax + 1]
add r9, rcx
movsx rcx, byte [rax]
test rcx, rcx
jne 0x140030691
mov rcx, qword [r13 + 0x20]
xor edx, edx
mov rax, r9
div qword [r11 + rcx*8 + 0x1d3190]
lea rax, [r13 + 0x28]
shl rdx, 4
add rdx, qword [r13 + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x1400306d0
cmp r8, qword [rdx + 8]
je 0x140030707
cmp qword [r8 - 8], r9
jne 0x1400306fb
mov rcx, r12
nop dword [rax]
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [rdi + rcx - 1]
jne 0x1400306fb
cmp rcx, 7
jne 0x1400306e0
mov r15, qword [r8 + 0x10]
jmp 0x14003070a
cmp r8, qword [rdx + 8]
je 0x140030707
mov r8, qword [r8 + 8]
jmp 0x1400306d0
mov r15, r12
test ebx, ebx
jne 0x14003079c
lea rax, [0x1401d3c18]
nop dword [rax]
imul rsi, rsi, 0x21
lea rax, [rax + 1]
add rsi, r10
movsx r10, byte [rax]
test r10, r10
jne 0x140030720
mov rcx, qword [r13 + 0x20]
xor edx, edx
mov rax, rsi
div qword [r11 + rcx*8 + 0x1d3190]
lea rax, [r13 + 0x28]
mov rdi, rdx
shl rdi, 4
add rdi, qword [r13 + 0x18]
mov rbx, qword [rdi]
cmp rbx, rax
jne 0x140030762
cmp rbx, qword [rdi + 8]
je 0x14003079c
cmp qword [rbx - 8], rsi
jne 0x14003077c
lea rcx, [rbx + 0x20]
lea rdx, [0x1401d3c18]
call sub.MSVCR120.dll_strcmp
test eax, eax
je 0x140030788
cmp rbx, qword [rdi + 8]
je 0x14003079c
mov rbx, qword [rbx + 8]
jmp 0x140030762
mov rax, qword [rbx + 0x10]
test rax, rax
je 0x14003079c
cmp dword [rax], 2
jne 0x14003079c
mov r9, qword [rax + 0x10]
jmp 0x14003079f
mov r9, r12
test r15, r15
je 0x1400307b0
cmp dword [r15], 5
jne 0x1400307b0
mov r12d, 1
movzx edx, byte [r14 + 0x1cc]
movsd xmm2, qword [r14 + 0x1b8]
mov ecx, r12d
call fcn.14002fbe0
test eax, eax
jne 0x1400307e1
cmp dword [0x1402c7cc4], eax
je 0x1400307e1
lea rcx, [r14 + 0xe4]
call fcn.140047e50
mov rax, qword [r13 + 8]
cmp rax, 0xffffffffffffffff
je 0x1400307fc
dec rax
mov qword [r13 + 8], rax
jne 0x1400307fc
mov rcx, r13
call fcn.14002e4b0
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.MSVCR120.dll_free]
mov eax, 1
jmp 0x14003081e
lea rdx, str.submit_upstream_work_OOM
xor ecx, ecx
call fcn.140040950
xor eax, eax
mov r13, qword [rsp + 0x106b0]
mov r15, qword [rsp + 0x10660]
mov rcx, qword [rbp + 0x10550]
xor rcx, rsp
call fcn.1401bddc0
add rsp, 0x10668
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret