Function at 0x158d10
Capabilities:
Hash data using sha256

Disassembly:
mov qword [rsp + 0x18], r8
push rbx
push rbp
push rsi
sub rsp, 0x150
mov rbp, r8
mov esi, edx
mov rbx, rcx
test edx, edx
jne 0x158d55
lea rcx, str.bitclient_calculateMerkleRoot:_Block_has_zero_transactions__not_even_coinbase__n
call fcn.0015b13c
xor r11d, r11d
mov qword [rbp], r11
mov qword [rbp + 8], r11
mov qword [rbp + 0x10], r11
mov qword [rbp + 0x18], r11
add rsp, 0x150
pop rsi
pop rbp
pop rbx
ret
cmp esi, 1
jne 0x158d83
mov rax, qword [rcx]
mov qword [r8], rax
mov rax, qword [rcx + 8]
mov qword [r8 + 8], rax
mov rax, qword [rcx + 0x10]
mov qword [r8 + 0x10], rax
mov rax, qword [rcx + 0x18]
mov qword [r8 + 0x18], rax
add rsp, 0x150
pop rsi
pop rbp
pop rbx
ret
mov qword [rsp + 0x170], rdi
mov qword [rsp + 0x148], r12
lea ecx, [rsi + 0x41]
mov qword [rsp + 0x140], r13
shl ecx, 6
mov qword [rsp + 0x138], r14
mov qword [rsp + 0x130], r15
call fcn.0015b01c
lea rcx, [rsp + 0xf4]
mov rdi, rax
xor eax, eax
xor edx, edx
lea r8d, [rax + 0x3c]
mov r13d, eax
mov r15d, eax
mov dword [rsp + 0x178], eax
call fcn.00161460
mov dword [rsp + 0xf0], esi
test esi, esi
je 0x158e2d
mov rcx, rdi
sub rbx, rdi
mov r13, rsi
mov rdx, rsi
nop word [rax + rax]
mov rax, qword [rbx + rcx]
add rcx, 0x20
sub rdx, 1
mov qword [rcx - 0x20], rax
mov rax, qword [rbx + rcx - 0x18]
mov qword [rcx - 0x18], rax
mov rax, qword [rbx + rcx - 0x10]
mov qword [rcx - 0x10], rax
mov rax, qword [rbx + rcx - 8]
mov qword [rcx - 8], rax
jne 0x158e00
test sil, 1
je 0x158e7a
cmp esi, 1
jbe 0x158e7a
mov ecx, r13d
lea eax, [r13 - 1]
shl eax, 5
shl ecx, 5
inc r13d
mov edx, eax
mov rax, qword [rax + rdi]
mov qword [rcx + rdi], rax
mov rax, qword [rdx + rdi + 8]
mov qword [rcx + rdi + 8], rax
mov rax, qword [rdx + rdi + 0x10]
mov qword [rcx + rdi + 0x10], rax
mov rax, qword [rdx + rdi + 0x18]
mov qword [rcx + rdi + 0x18], rax
lea eax, [rsi + 1]
mov dword [rsp + 0xf0], eax
xor ebx, ebx
movsxd r14, r13d
lea rsi, [rsp + 0xf0]
mov r8d, ebx
mov dword [rsp + 0x188], ebx
mov eax, dword [rsi]
test eax, eax
je 0x159186
cmp eax, 1
je 0x159156
mov r12d, ebx
test eax, eax
je 0x1590f4
mov ebp, r13d
shl ebp, 5
shl r15d, 5
nop dword [rax]
mov eax, dword [0x0016f430]
mov dword [rsp + 0x24], ebx
mov dword [rsp + 0x20], ebx
mov dword [rsp + 0xa8], eax
mov eax, dword [0x0016f434]
mov ebx, r15d
mov dword [rsp + 0xac], eax
mov eax, dword [0x0016f438]
add rbx, rdi
mov dword [rsp + 0xb0], eax
mov eax, dword [0x0016f43c]
mov dword [rsp + 0xb4], eax
mov eax, dword [0x0016f440]
mov dword [rsp + 0xb8], eax
mov eax, dword [0x0016f444]
mov dword [rsp + 0xbc], eax
mov eax, dword [0x0016f448]
mov dword [rsp + 0xc0], eax
mov eax, dword [0x0016f44c]
mov dword [rsp + 0xc4], eax
mov rax, qword [rbx]
mov qword [rsp + 0x28], rax
mov rax, qword [rbx + 8]
mov qword [rsp + 0x30], rax
mov rax, qword [rbx + 0x10]
mov qword [rsp + 0x38], rax
mov rax, qword [rbx + 0x18]
mov qword [rsp + 0x40], rax
mov rax, qword [rbx + 0x20]
mov qword [rsp + 0x48], rax
mov rax, qword [rbx + 0x28]
mov qword [rsp + 0x50], rax
mov rax, qword [rbx + 0x30]
mov qword [rsp + 0x58], rax
mov rax, qword [rbx + 0x38]
mov qword [rsp + 0x60], rax
xor eax, eax
add eax, 0x40
cmp eax, 0x40
jae 0x158f8f
mov dword [rsp + 0x24], eax
xor ebx, ebx
jmp 0x158fc0
lea rdx, [rsp + 0x28]
lea rcx, [rsp + 0x20]
mov r8d, 1
call fcn.001536e0
lea rdx, [rbx + 0x40]
lea rcx, [rsp + 0x20]
xor r8d, r8d
call fcn.001536e0
xor ebx, ebx
add dword [rsp + 0x20], 0x40
mov dword [rsp + 0x24], ebx
add dword [rsp + 0x178], 2
lea rdx, [rsp + 0xd0]
lea rcx, [rsp + 0x20]
add r15d, 0x40
call fcn.001560c0
mov eax, dword [0x0016f434]
mov r11d, dword [0x0016f430]
mov dword [rsp + 0xac], eax
mov eax, dword [0x0016f438]
mov dword [rsp + 0xb0], eax
mov eax, dword [0x0016f43c]
lea rcx, [rsp + 0xd0]
mov dword [rsp + 0xb4], eax
mov eax, dword [0x0016f440]
mov dword [rsp + 0xa8], r11d
mov dword [rsp + 0xb8], eax
mov eax, dword [0x0016f444]
mov dword [rsp + 0x24], ebx
mov dword [rsp + 0xbc], eax
mov eax, dword [0x0016f448]
mov dword [rsp + 0x20], ebx
mov dword [rsp + 0xc0], eax
mov eax, dword [0x0016f44c]
mov dword [rsp + 0xc4], eax
mov rax, qword [rcx]
mov qword [rsp + 0x28], rax
mov rax, qword [rcx + 8]
mov qword [rsp + 0x30], rax
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x38], rax
mov rax, qword [rcx + 0x18]
mov qword [rsp + 0x40], rax
lea eax, [rbx + 0x20]
cmp eax, 0x40
jae 0x159089
mov dword [rsp + 0x24], eax
jmp 0x1590bc
lea rdx, [rsp + 0x28]
lea rcx, [rsp + 0x20]
mov r8d, 1
call fcn.001536e0
lea rdx, [rsp + 0xf0]
lea rcx, [rsp + 0x20]
xor r8d, r8d
call fcn.001536e0
add dword [rsp + 0x20], 0x40
mov dword [rsp + 0x24], ebx
mov edx, ebp
lea rcx, [rsp + 0x20]
add rdx, rdi
call fcn.001560c0
inc dword [rsi + 4]
add r12d, 2
inc r13d
add ebp, 0x20
inc r14
cmp r12d, dword [rsi]
jb 0x158ec0
mov r15d, dword [rsp + 0x178]
mov r8d, dword [rsp + 0x188]
mov eax, dword [rsi + 4]
add rsi, 4
test al, 1
je 0x15913f
cmp eax, 1
jbe 0x15913f
mov rdx, r14
mov rcx, r14
inc r13d
shl rdx, 5
shl rcx, 5
inc r14
mov rax, qword [rdx + rdi - 0x20]
mov qword [rcx + rdi], rax
mov rax, qword [rdx + rdi - 0x18]
mov qword [rcx + rdi + 8], rax
mov rax, qword [rdx + rdi - 0x10]
mov qword [rcx + rdi + 0x10], rax
mov rax, qword [rdx + rdi - 8]
mov qword [rcx + rdi + 0x18], rax
inc r8d
mov dword [rsp + 0x188], r8d
cmp r8d, 0xa
jb 0x158e91
jmp 0x159192
mov rdx, qword [rsp + 0x180]
shl r15d, 5
mov rax, qword [r15 + rdi]
mov qword [rdx], rax
mov rax, qword [r15 + rdi + 8]
mov qword [rdx + 8], rax
mov rax, qword [r15 + rdi + 0x10]
mov qword [rdx + 0x10], rax
mov rax, qword [r15 + rdi + 0x18]
mov qword [rdx + 0x18], rax
jmp 0x159192
lea rcx, str.bitclient_calculateMerkleRoot:_Error_generating_merkleRoot_hash_n
call fcn.0015b13c
mov rcx, rdi
mov r14, qword [rsp + 0x138]
mov r13, qword [rsp + 0x140]
mov r12, qword [rsp + 0x148]
mov rdi, qword [rsp + 0x170]
mov r15, qword [rsp + 0x130]
add rsp, 0x150
pop rsi
pop rbp
pop rbx
jmp fcn.0015b8c0