// File: /workspace/github_cpp_makefile_star2_O3/jeffchan[P]blockchain-parser/BlockChain.cpp
// Function: BlockImpl::processBlockData(void const*, unsigned int, unsigned int&)
bool processBlockData(const void *blockData,uint32_t blockLength,uint32_t &transactionIndex)
	{
		bool ret = true;
		mBlockData = (const uint8_t *)blockData;
		mBlockRead = mBlockData;	// Set the block-read scan pointer.
		mBlockEnd = &mBlockData[blockLength]; // Mark the end of block pointer
		blockFormatVersion = readU32();	// Read the format version
		previousBlockHash = readHash();  // get the address of the hash
		merkleRoot = readHash();	// Get the address of the merkle root hash
		timeStamp = readU32();	// Get the timestamp
		bits = readU32();	// Get the bits field
		nonce = readU32();	// Get the 'nonce' random number.
		transactionCount = readVariableLengthInteger();	// Read the number of transactions
		if ( transactionCount < MAX_BLOCK_TRANSACTION )
		{
			transactions = mTransactions;	// Assign the transactions buffer pointer
			for (uint32_t i=0; i<transactionCount; i++)
			{
				gTransactionIndex = i;
				BlockChain::BlockTransaction &b = transactions[i];
				if ( !readTransation(b,transactionIndex,i) )	// Read the transaction; if it failed; then abort processing the block chain
				{
					ret = false;
					break;
				}
			}
		}
		return ret;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, 0x90(%rdi)
movq %rsi, 0x80(%rdi)
movl %edx, %eax
addq %rsi, %rax
movq %rax, 0x88(%rdi)
cmpl $0x3, %edx
jbe 0x1109c
movq %rcx, %rbx
movq %rdi, %r14
leaq 0x4(%rsi), %rax
movl (%rsi), %ecx
movq %rax, 0x80(%rdi)
movl %ecx, 0x4(%rdi)
cmpl $0x23, %edx
jbe 0x110bb
leaq 0x24(%rsi), %rcx
movq %rcx, 0x80(%r14)
movq %rax, 0x8(%r14)
cmpl $0x43, %edx
jbe 0x110bb
leaq 0x44(%rsi), %rax
movq %rax, 0x80(%r14)
movq %rcx, 0x10(%r14)
cmpl $0x47, %edx
jbe 0x1109c
leaq 0x48(%rsi), %rax
movl 0x44(%rsi), %ecx
movq %rax, 0x80(%r14)
movl %ecx, 0x18(%r14)
cmpl $0x4b, %edx
jbe 0x1109c
leaq 0x4c(%rsi), %rax
movl 0x48(%rsi), %ecx
movq %rax, 0x80(%r14)
movl %ecx, 0x1c(%r14)
cmpl $0x4f, %edx
jbe 0x1109c
leaq 0x50(%rsi), %rcx
movl 0x4c(%rsi), %eax
movq %rcx, 0x80(%r14)
movl %eax, 0x20(%r14)
cmpl $0x50, %edx
je 0x110da
leaq 0x51(%rsi), %rax
movzbl (%rcx), %ecx
movq %rax, 0x80(%r14)
cmpl $0xfc, %ecx
ja 0x10ff3
leaq 0x24(%r14), %r12
movl %ecx, 0x24(%r14)
jmp 0x11044
cmpl $0x52, %edx
jbe 0x110f9
leaq 0x53(%rsi), %rdi
movzwl (%rax), %ecx
movq %rdi, 0x80(%r14)
cmpl $0xffff, %ecx           # imm = 0xFFFF
jne 0x11032
cmpl $0x56, %edx
jbe 0x1109c
movl 0x53(%rsi), %ecx
addq $0x57, %rsi
movq %rsi, 0x80(%r14)
cmpl $-0x1, %ecx
je 0x11118
movl %ecx, 0x24(%r14)
movb $0x1, %al
cmpl $0x1fff, %ecx           # imm = 0x1FFF
ja 0x1108d
leaq 0x24(%r14), %r12
leaq 0x98(%r14), %rax
movq %rax, 0x28(%r14)
testl %ecx, %ecx
je 0x1108b
xorl %r13d, %r13d
xorl %r15d, %r15d
movl %r15d, 0xe7a8(%rip)     # 0x1f808
movq 0x28(%r14), %rsi
addq %r13, %rsi
movq %r14, %rdi
movq %rbx, %rdx
movl %r15d, %ecx
callq 0x113bc
testb %al, %al
je 0x1108d
incq %r15
movl (%r12), %ecx
addq $0x58, %r13
cmpq %rcx, %r15
jb 0x11059
jmp 0x1108d
movb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x82b5(%rip), %rdi      # 0x19358
leaq 0x6746(%rip), %rsi      # 0x177f0
leaq 0x82d2(%rip), %rcx      # 0x19383
movl $0x7ee, %edx            # imm = 0x7EE
callq 0x20c0
leaq 0x82df(%rip), %rdi      # 0x193a1
leaq 0x6727(%rip), %rsi      # 0x177f0
leaq 0x82ee(%rip), %rcx      # 0x193be
movl $0x801, %edx            # imm = 0x801
callq 0x20c0
leaq 0x8332(%rip), %rdi      # 0x19413
leaq 0x6708(%rip), %rsi      # 0x177f0
leaq 0x834e(%rip), %rcx      # 0x1943d
movl $0x7dc, %edx            # imm = 0x7DC
callq 0x20c0
leaq 0x8359(%rip), %rdi      # 0x19459
leaq 0x66e9(%rip), %rsi      # 0x177f0
leaq 0x8376(%rip), %rcx      # 0x19484
movl $0x7e5, %edx            # imm = 0x7E5
callq 0x20c0
leaq 0x6c51(%rip), %rdi      # 0x17d70
leaq 0x66ca(%rip), %rsi      # 0x177f0
leaq 0x82b6(%rip), %rcx      # 0x193e3
movl $0x821, %edx            # imm = 0x821
callq 0x20c0
nop