// File: jeffchan[P]blockchain-parser/BlockChain.cpp
// Function: BitcoinTransactionFactory::BitcoinTransactionFactory()
BitcoinTransactionFactory(void)
	{
		mTransactionReferences = NULL;
		mTransactions = NULL;
		mInputs = NULL;
		mOutputs = NULL;
		mBlocks = NULL;
		mTransactionCount = 0;
		mTotalInputCount = 0;
		mTotalOutputCount = 0;
		mBlockCount = 0;
		mStatCount = 0;

		mStatLimits[SS_ZERO] = 0;
		mStatLimits[SS_ONE_MBTC] = ONE_MBTC;
		mStatLimits[SS_FIVE_MBTC] = ONE_MBTC*5;

		mStatLimits[SS_TEN_MBTC] = ONE_MBTC*10;
		mStatLimits[SS_FIFTY_MBTC] = ONE_MBTC*50;

		mStatLimits[SS_HUNDRED_MBTC] = ONE_MBTC*100;
		mStatLimits[SS_FIVE_HUNDRED_MBTC] = ONE_MBTC*500;


		mStatLimits[SS_ONE_BTC] = ONE_BTC;
		mStatLimits[SS_FIVE_BTC] = ONE_BTC*5;

		mStatLimits[SS_TEN_BTC] = ONE_BTC*10;
		mStatLimits[SS_FIFTY_BTC] = (uint64_t)ONE_BTC*(uint64_t)50;

		mStatLimits[SS_HUNDRED_BTC] = (uint64_t)ONE_BTC*(uint64_t)100;
		mStatLimits[SS_FIVE_HUNDRED_BTC] = (uint64_t)ONE_BTC*(uint64_t)500;

		mStatLimits[SS_ONE_THOUSAND_BTC] = (uint64_t)ONE_BTC*(uint64_t)1000;
		mStatLimits[SS_FIVE_THOUSAND_BTC] = (uint64_t)ONE_BTC*(uint64_t)5000;

		mStatLimits[SS_TEN_THOUSAND_BTC] = (uint64_t)ONE_BTC*(uint64_t)10000;
		mStatLimits[SS_FIFTY_THOUSAND_BTC] = (uint64_t)ONE_BTC*(uint64_t)50000;
		mStatLimits[SS_HUNDRED_THOUSAND_BTC] = (uint64_t)ONE_BTC*(uint64_t)100000;
		mStatLimits[SS_MAX_BTC] = (uint64_t)ONE_BTC*(uint64_t)21000000;


		mStatLabel[SS_ZERO] = "ZERO";
		mStatLabel[SS_ONE_MBTC] = "<1MBTC";
		mStatLabel[SS_FIVE_MBTC] = "<5MBTC";
		mStatLabel[SS_TEN_MBTC] = "<10MBTC";
		mStatLabel[SS_FIFTY_MBTC] = "<50MBTC";
		mStatLabel[SS_HUNDRED_MBTC] = "<100MBTC";
		mStatLabel[SS_FIVE_HUNDRED_MBTC] = "<500MBTC";
		mStatLabel[SS_ONE_BTC] = "<1BTC";
		mStatLabel[SS_FIVE_BTC] = "<5BTC";
		mStatLabel[SS_TEN_BTC] = "<10BTC";
		mStatLabel[SS_FIFTY_BTC] = "<50BTC";
		mStatLabel[SS_HUNDRED_BTC] = "<100BTC";
		mStatLabel[SS_FIVE_HUNDRED_BTC] = "<500BTC";
		mStatLabel[SS_ONE_THOUSAND_BTC] = "<1KBTC";
		mStatLabel[SS_FIVE_THOUSAND_BTC] = "<5KBTC";
		mStatLabel[SS_TEN_THOUSAND_BTC] = "<10KBTC";
		mStatLabel[SS_FIFTY_THOUSAND_BTC] = "<50KBTC";
		mStatLabel[SS_HUNDRED_THOUSAND_BTC] = "<100KBTC";
		mStatLabel[SS_MAX_BTC] = ">100KBTC";

	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x38(%rbp)
callq 0x1c3a0
movq -0x38(%rbp), %rax
addq $0x2000058, %rax        # imm = 0x2000058
movq %rax, -0x30(%rbp)
movq %rax, %rcx
addq $0xd5de0, %rcx          # imm = 0xD5DE0
movq %rcx, -0x28(%rbp)
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x1c400
jmp 0x1a2e8
movq -0x28(%rbp), %rcx
movq -0x40(%rbp), %rax
addq $0x190, %rax            # imm = 0x190
cmpq %rcx, %rax
movq %rax, -0x20(%rbp)
jne 0x1a2d9
movq -0x38(%rbp), %rax
movq $0x0, 0x2000048(%rax)
movq $0x0, 0x2000020(%rax)
movq $0x0, 0x2000028(%rax)
movq $0x0, 0x2000030(%rax)
movq $0x0, 0x2000040(%rax)
movl $0x0, 0x2000010(%rax)
movl $0x0, 0x2000014(%rax)
movl $0x0, 0x2000018(%rax)
movl $0x0, 0x2000038(%rax)
movl $0x0, 0x2000050(%rax)
movq $0x0, 0x20d5ed0(%rax)
movq $0x186a0, 0x20d5ed8(%rax) # imm = 0x186A0
movq $0x7a120, 0x20d5ee0(%rax) # imm = 0x7A120
movq $0xf4240, 0x20d5ee8(%rax) # imm = 0xF4240
movq $0x4c4b40, 0x20d5ef0(%rax) # imm = 0x4C4B40
movq $0x989680, 0x20d5ef8(%rax) # imm = 0x989680
movq $0x2faf080, 0x20d5f00(%rax) # imm = 0x2FAF080
movq $0x5f5e100, 0x20d5f08(%rax) # imm = 0x5F5E100
movq $0x1dcd6500, 0x20d5f10(%rax) # imm = 0x1DCD6500
movq $0x3b9aca00, 0x20d5f18(%rax) # imm = 0x3B9ACA00
movabsq $0x12a05f200, %rcx      # imm = 0x12A05F200
movq %rcx, 0x20d5f20(%rax)
movabsq $0x2540be400, %rcx      # imm = 0x2540BE400
movq %rcx, 0x20d5f28(%rax)
movabsq $0xba43b7400, %rcx      # imm = 0xBA43B7400
movq %rcx, 0x20d5f30(%rax)
movabsq $0x174876e800, %rcx     # imm = 0x174876E800
movq %rcx, 0x20d5f38(%rax)
movabsq $0x746a528800, %rcx     # imm = 0x746A528800
movq %rcx, 0x20d5f40(%rax)
movabsq $0xe8d4a51000, %rcx     # imm = 0xE8D4A51000
movq %rcx, 0x20d5f48(%rax)
movabsq $0x48c27395000, %rcx    # imm = 0x48C27395000
movq %rcx, 0x20d5f50(%rax)
movabsq $0x9184e72a000, %rcx    # imm = 0x9184E72A000
movq %rcx, 0x20d5f58(%rax)
movabsq $0x775f05a074000, %rcx  # imm = 0x775F05A074000
movq %rcx, 0x20d5f60(%rax)
leaq 0x169ac(%rip), %rcx     # 0x30e26
movq %rcx, 0x20d5e38(%rax)
leaq 0x169a3(%rip), %rcx     # 0x30e2b
movq %rcx, 0x20d5e40(%rax)
leaq 0x1699c(%rip), %rcx     # 0x30e32
movq %rcx, 0x20d5e48(%rax)
leaq 0x16995(%rip), %rcx     # 0x30e39
movq %rcx, 0x20d5e50(%rax)
leaq 0x1698f(%rip), %rcx     # 0x30e41
movq %rcx, 0x20d5e58(%rax)
leaq 0x16989(%rip), %rcx     # 0x30e49
movq %rcx, 0x20d5e60(%rax)
leaq 0x16984(%rip), %rcx     # 0x30e52
movq %rcx, 0x20d5e68(%rax)
leaq 0x1697f(%rip), %rcx     # 0x30e5b
movq %rcx, 0x20d5e70(%rax)
leaq 0x16977(%rip), %rcx     # 0x30e61
movq %rcx, 0x20d5e78(%rax)
leaq 0x1696f(%rip), %rcx     # 0x30e67
movq %rcx, 0x20d5e80(%rax)
leaq 0x16968(%rip), %rcx     # 0x30e6e
movq %rcx, 0x20d5e88(%rax)
leaq 0x16961(%rip), %rcx     # 0x30e75
movq %rcx, 0x20d5e90(%rax)
leaq 0x1695b(%rip), %rcx     # 0x30e7d
movq %rcx, 0x20d5e98(%rax)
leaq 0x16955(%rip), %rcx     # 0x30e85
movq %rcx, 0x20d5ea0(%rax)
leaq 0x1694e(%rip), %rcx     # 0x30e8c
movq %rcx, 0x20d5ea8(%rax)
leaq 0x16947(%rip), %rcx     # 0x30e93
movq %rcx, 0x20d5eb0(%rax)
leaq 0x16941(%rip), %rcx     # 0x30e9b
movq %rcx, 0x20d5eb8(%rax)
leaq 0x1693b(%rip), %rcx     # 0x30ea3
movq %rcx, 0x20d5ec0(%rax)
leaq 0x16936(%rip), %rcx     # 0x30eac
movq %rcx, 0x20d5ec8(%rax)
addq $0x50, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rcx
movq %rax, %rsi
movq -0x40(%rbp), %rax
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
cmpq %rax, %rcx
movq %rax, -0x48(%rbp)
je 0x1a5c3
movq -0x48(%rbp), %rdi
addq $-0x190, %rdi           # imm = 0xFE70
movq %rdi, -0x50(%rbp)
callq 0x1c4f0
movq -0x30(%rbp), %rcx
movq -0x50(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x48(%rbp)
jne 0x1a59e
movq -0x38(%rbp), %rdi
callq 0x1c580
movq -0x10(%rbp), %rdi
callq 0x2260
nopw %cs:(%rax,%rax)
nop