// File: estwings57[P]CasHMC/sources/RunSim.cpp
// Function: ParseTraceFileLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, unsigned long&, unsigned long&, CasHMC::TransactionType&, unsigned int&)
void ParseTraceFileLine(string &line, uint64_t &clockCycle, uint64_t &addr, TransactionType &tranType, unsigned &dataSize)
{
	int previousIndex=0;
	int spaceIndex=0;
	string  tempStr="";

	spaceIndex = line.find_first_of(" ", 0);
	if(spaceIndex==-1)	ERROR("  == Error - tracefile format is wrong : "<<line);
	tempStr = line.substr(0, spaceIndex);
	istringstream clock(tempStr);
	clock>>clockCycle;
	previousIndex = spaceIndex;

	spaceIndex = line.find_first_not_of(" ", previousIndex);
	if(spaceIndex==-1)	ERROR("  == Error - tracefile format is wrong : "<<line);
	tempStr = line.substr(spaceIndex, line.find_first_of(" ", spaceIndex) - spaceIndex);
	istringstream add(tempStr.substr(2));
	add>>hex>>addr;
	previousIndex = line.find_first_of(" ", spaceIndex);

	spaceIndex = line.find_first_not_of(" ", previousIndex);
	if(spaceIndex==-1)	ERROR("  == Error - tracefile format is wrong : "<<line);
	
	tempStr = line.substr(spaceIndex, line.find_first_of(" ", spaceIndex) - spaceIndex);
	if(tempStr.compare("READ")==0)			tranType = DATA_READ;
	else if(tempStr.compare("WRITE")==0)	tranType = DATA_WRITE;
	//Arithmetic atomic
	else if(tempStr.compare("2ADD8")==0)	tranType = ATM_2ADD8;
	else if(tempStr.compare("ADD16")==0)	tranType = ATM_ADD16;
	else if(tempStr.compare("P_2ADD8")==0)	tranType = ATM_P_2ADD8;
	else if(tempStr.compare("P_ADD16")==0)	tranType = ATM_P_ADD16;
	else if(tempStr.compare("2ADDS8R")==0)	tranType = ATM_2ADDS8R;
	else if(tempStr.compare("ADDS16R")==0)	tranType = ATM_ADDS16R;
	else if(tempStr.compare("INC8")==0)		tranType = ATM_INC8;
	else if(tempStr.compare("P_INC8")==0)	tranType = ATM_P_INC8;
	//Boolean atomic
	else if(tempStr.compare("XOR16")==0)	tranType = ATM_XOR16;
	else if(tempStr.compare("OR16")==0)		tranType = ATM_OR16;
	else if(tempStr.compare("NOR16")==0)	tranType = ATM_NOR16;
	else if(tempStr.compare("AND16")==0)	tranType = ATM_AND16;
	else if(tempStr.compare("NAND16")==0)	tranType = ATM_NAND16;
	//Comparison atomic
	else if(tempStr.compare("CASGT8")==0)	tranType = ATM_CASGT8;
	else if(tempStr.compare("CASLT8")==0)	tranType = ATM_CASLT8;
	else if(tempStr.compare("CASGT16")==0)	tranType = ATM_CASGT16;
	else if(tempStr.compare("CASLT16")==0)	tranType = ATM_CASLT16;
	else if(tempStr.compare("CASEQ8")==0)	tranType = ATM_CASEQ8;
	else if(tempStr.compare("CASZERO16")==0)tranType = ATM_CASZERO16;
	else if(tempStr.compare("EQ16")==0)		tranType = ATM_EQ16;
	else if(tempStr.compare("EQ8")==0)		tranType = ATM_EQ8;
	//Bitwise atomic
	else if(tempStr.compare("BWR")==0)		tranType = ATM_BWR;
	else if(tempStr.compare("P_BWR")==0)	tranType = ATM_P_BWR;
	else if(tempStr.compare("BWR8R")==0)	tranType = ATM_BWR8R;
	else if(tempStr.compare("SWAP16")==0)	tranType = ATM_SWAP16;
	else {
		ERROR("  == Error - Unknown command in tracefile : "<<tempStr);
	}
	previousIndex = line.find_first_of(" ", spaceIndex);

	spaceIndex = line.find_first_not_of(" ", previousIndex);
	if(spaceIndex==-1) {
		dataSize = TRANSACTION_SIZE;
		return;
	}
	tempStr = line.substr(spaceIndex, line.find_first_of(" ", spaceIndex) - spaceIndex);
	istringstream size(tempStr);
	size>>dataSize;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x6e0, %rsp            # imm = 0x6E0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movl $0x0, -0x30(%rbp)
leaq -0x51(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0x4640
movq -0x598(%rbp), %rdx
leaq 0xa4ba(%rip), %rsi      # 0x52a15
leaq -0x50(%rbp), %rdi
callq 0x15fa0
jmp 0x48566
leaq -0x51(%rbp), %rdi
callq 0x43f0
movq -0x8(%rbp), %rdi
leaq 0xa49a(%rip), %rsi      # 0x52a14
xorl %eax, %eax
movl %eax, %edx
callq 0x41d0
movl %eax, -0x30(%rbp)
cmpl $-0x1, -0x30(%rbp)
jne 0x48691
movq 0x1da59(%rip), %rdi     # 0x65ff0
leaq 0x8a9c(%rip), %rsi      # 0x5103a
callq 0x4380
movq %rax, -0x5a0(%rbp)
jmp 0x485ac
movq -0x5a0(%rbp), %rdi
leaq 0xbeb3(%rip), %rsi      # 0x5446d
callq 0x4380
movq %rax, -0x5a8(%rbp)
jmp 0x485c8
movq -0x5a8(%rbp), %rdi
leaq 0x925f(%rip), %rsi      # 0x51835
callq 0x4380
movq %rax, -0x5b0(%rbp)
jmp 0x485e4
movq -0x5b0(%rbp), %rdi
movl $0x52, %esi
callq 0x4610
movq %rax, -0x5b8(%rbp)
jmp 0x485fe
movq -0x5b8(%rbp), %rdi
leaq 0x8a4d(%rip), %rsi      # 0x51059
callq 0x4380
movq %rax, -0x5c0(%rbp)
jmp 0x4861a
movq -0x5c0(%rbp), %rdi
leaq 0xbe58(%rip), %rsi      # 0x54480
callq 0x4380
movq %rax, -0x5c8(%rbp)
jmp 0x48636
movq -0x5c8(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x4320
movq %rax, -0x5d0(%rbp)
jmp 0x4864f
movq -0x5d0(%rbp), %rdi
movq 0x1d953(%rip), %rsi     # 0x65fb0
callq 0x43c0
jmp 0x48664
jmp 0x48691
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x51(%rbp), %rdi
callq 0x43f0
jmp 0x490d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x490cc
movq -0x8(%rbp), %rsi
movslq -0x30(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x88(%rbp), %rdi
callq 0x43b0
jmp 0x486ab
leaq -0x50(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
leaq -0x88(%rbp), %rsi
movq %rsi, -0x5e0(%rbp)
callq 0x4470
movq -0x5e0(%rbp), %rdi
callq 0x46e8
movq -0x5d8(%rbp), %rsi
leaq -0x208(%rbp), %rdi
movl $0x8, %edx
callq 0x45d0
jmp 0x486ef
movq -0x10(%rbp), %rsi
leaq -0x208(%rbp), %rdi
callq 0x4500
jmp 0x48701
movl -0x30(%rbp), %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
movslq -0x2c(%rbp), %rdx
leaq 0xa2fe(%rip), %rsi      # 0x52a14
callq 0x4200
movl %eax, -0x30(%rbp)
cmpl $-0x1, -0x30(%rbp)
jne 0x4880f
movq 0x1d8c1(%rip), %rdi     # 0x65ff0
leaq 0x8904(%rip), %rsi      # 0x5103a
callq 0x4380
movq %rax, -0x5e8(%rbp)
jmp 0x48744
movq -0x5e8(%rbp), %rdi
leaq 0xbd1b(%rip), %rsi      # 0x5446d
callq 0x4380
movq %rax, -0x5f0(%rbp)
jmp 0x48760
movq -0x5f0(%rbp), %rdi
leaq 0x90c7(%rip), %rsi      # 0x51835
callq 0x4380
movq %rax, -0x5f8(%rbp)
jmp 0x4877c
movq -0x5f8(%rbp), %rdi
movl $0x59, %esi
callq 0x4610
movq %rax, -0x600(%rbp)
jmp 0x48796
movq -0x600(%rbp), %rdi
leaq 0x88b5(%rip), %rsi      # 0x51059
callq 0x4380
movq %rax, -0x608(%rbp)
jmp 0x487b2
movq -0x608(%rbp), %rdi
leaq 0xbcc0(%rip), %rsi      # 0x54480
callq 0x4380
movq %rax, -0x610(%rbp)
jmp 0x487ce
movq -0x610(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x4320
movq %rax, -0x618(%rbp)
jmp 0x487e7
movq -0x618(%rbp), %rdi
movq 0x1d7bb(%rip), %rsi     # 0x65fb0
callq 0x43c0
jmp 0x487fc
jmp 0x4880f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x490c0
movq -0x8(%rbp), %rdi
movq %rdi, -0x628(%rbp)
movslq -0x30(%rbp), %rdx
movq %rdx, -0x620(%rbp)
leaq 0xa1e8(%rip), %rsi      # 0x52a14
callq 0x41d0
movq -0x628(%rbp), %rsi
movq -0x620(%rbp), %rdx
movq %rax, %rcx
movslq -0x30(%rbp), %rax
subq %rax, %rcx
leaq -0x228(%rbp), %rdi
callq 0x43b0
jmp 0x48857
leaq -0x50(%rbp), %rdi
movq %rdi, -0x630(%rbp)
leaq -0x228(%rbp), %rsi
movq %rsi, -0x638(%rbp)
callq 0x4470
movq -0x638(%rbp), %rdi
callq 0x46e8
movq -0x630(%rbp), %rsi
leaq -0x3c8(%rbp), %rdi
movl $0x2, %edx
movq $-0x1, %rcx
callq 0x43b0
jmp 0x488a2
leaq -0x3a8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
movl $0x8, %edx
callq 0x45d0
jmp 0x488bc
leaq -0x3c8(%rbp), %rdi
callq 0x46e8
leaq -0x4f5f(%rip), %rsi     # 0x43970
leaq -0x3a8(%rbp), %rdi
callq 0x45c0
movq %rax, -0x640(%rbp)
jmp 0x488e4
movq -0x640(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4500
jmp 0x488f6
movq -0x8(%rbp), %rdi
movslq -0x30(%rbp), %rdx
leaq 0xa10f(%rip), %rsi      # 0x52a14
callq 0x41d0
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
movslq -0x2c(%rbp), %rdx
leaq 0xa0f8(%rip), %rsi      # 0x52a14
callq 0x4200
movl %eax, -0x30(%rbp)
cmpl $-0x1, -0x30(%rbp)
jne 0x48a32
movq 0x1d6bb(%rip), %rdi     # 0x65ff0
leaq 0x86fe(%rip), %rsi      # 0x5103a
callq 0x4380
movq %rax, -0x648(%rbp)
jmp 0x4894a
movq -0x648(%rbp), %rdi
leaq 0xbb15(%rip), %rsi      # 0x5446d
callq 0x4380
movq %rax, -0x650(%rbp)
jmp 0x48966
movq -0x650(%rbp), %rdi
leaq 0x8ec1(%rip), %rsi      # 0x51835
callq 0x4380
movq %rax, -0x658(%rbp)
jmp 0x48982
movq -0x658(%rbp), %rdi
movl $0x60, %esi
callq 0x4610
movq %rax, -0x660(%rbp)
jmp 0x4899c
movq -0x660(%rbp), %rdi
leaq 0x86af(%rip), %rsi      # 0x51059
callq 0x4380
movq %rax, -0x668(%rbp)
jmp 0x489b8
movq -0x668(%rbp), %rdi
leaq 0xbaba(%rip), %rsi      # 0x54480
callq 0x4380
movq %rax, -0x670(%rbp)
jmp 0x489d4
movq -0x670(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x4320
movq %rax, -0x678(%rbp)
jmp 0x489ed
movq -0x678(%rbp), %rdi
movq 0x1d5b5(%rip), %rsi     # 0x65fb0
callq 0x43c0
jmp 0x48a02
jmp 0x48a32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x46e8
jmp 0x490c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x490b4
movq -0x8(%rbp), %rdi
movq %rdi, -0x688(%rbp)
movslq -0x30(%rbp), %rdx
movq %rdx, -0x680(%rbp)
leaq 0x9fc5(%rip), %rsi      # 0x52a14
callq 0x41d0
movq -0x688(%rbp), %rsi
movq -0x680(%rbp), %rdx
movq %rax, %rcx
movslq -0x30(%rbp), %rax
subq %rax, %rcx
leaq -0x3e8(%rbp), %rdi
callq 0x43b0
jmp 0x48a7a
leaq -0x50(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x4470
leaq -0x3e8(%rbp), %rdi
callq 0x46e8
leaq -0x50(%rbp), %rdi
leaq 0xba09(%rip), %rsi      # 0x544aa
callq 0x4140
cmpl $0x0, %eax
jne 0x48aba
movq -0x20(%rbp), %rax
movl $0x0, (%rax)
jmp 0x48f6c
leaq -0x50(%rbp), %rdi
leaq 0xb9ea(%rip), %rsi      # 0x544af
callq 0x4140
cmpl $0x0, %eax
jne 0x48ade
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
jmp 0x48f6a
leaq -0x50(%rbp), %rdi
leaq 0xb9ce(%rip), %rsi      # 0x544b7
callq 0x4140
cmpl $0x0, %eax
jne 0x48b02
movq -0x20(%rbp), %rax
movl $0x3, (%rax)
jmp 0x48f68
leaq -0x50(%rbp), %rdi
leaq 0xb9b2(%rip), %rsi      # 0x544bf
callq 0x4140
cmpl $0x0, %eax
jne 0x48b26
movq -0x20(%rbp), %rax
movl $0x4, (%rax)
jmp 0x48f66
leaq -0x50(%rbp), %rdi
leaq 0xb984(%rip), %rsi      # 0x544b5
callq 0x4140
cmpl $0x0, %eax
jne 0x48b4a
movq -0x20(%rbp), %rax
movl $0x5, (%rax)
jmp 0x48f64
leaq -0x50(%rbp), %rdi
leaq 0xb968(%rip), %rsi      # 0x544bd
callq 0x4140
cmpl $0x0, %eax
jne 0x48b6e
movq -0x20(%rbp), %rax
movl $0x6, (%rax)
jmp 0x48f62
leaq -0x50(%rbp), %rdi
leaq 0xb94c(%rip), %rsi      # 0x544c5
callq 0x4140
cmpl $0x0, %eax
jne 0x48b92
movq -0x20(%rbp), %rax
movl $0x7, (%rax)
jmp 0x48f60
leaq -0x50(%rbp), %rdi
leaq 0xb930(%rip), %rsi      # 0x544cd
callq 0x4140
cmpl $0x0, %eax
jne 0x48bb6
movq -0x20(%rbp), %rax
movl $0x8, (%rax)
jmp 0x48f5e
leaq -0x50(%rbp), %rdi
leaq 0xb916(%rip), %rsi      # 0x544d7
callq 0x4140
cmpl $0x0, %eax
jne 0x48bda
movq -0x20(%rbp), %rax
movl $0x9, (%rax)
jmp 0x48f5c
leaq -0x50(%rbp), %rdi
leaq 0xb8f0(%rip), %rsi      # 0x544d5
callq 0x4140
cmpl $0x0, %eax
jne 0x48bfe
movq -0x20(%rbp), %rax
movl $0xa, (%rax)
jmp 0x48f5a
leaq -0x50(%rbp), %rdi
leaq 0xb8d3(%rip), %rsi      # 0x544dc
callq 0x4140
cmpl $0x0, %eax
jne 0x48c22
movq -0x20(%rbp), %rax
movl $0xb, (%rax)
jmp 0x48f58
leaq -0x50(%rbp), %rdi
leaq 0xb8b6(%rip), %rsi      # 0x544e3
callq 0x4140
cmpl $0x0, %eax
jne 0x48c46
movq -0x20(%rbp), %rax
movl $0xc, (%rax)
jmp 0x48f56
leaq -0x50(%rbp), %rdi
leaq 0xb891(%rip), %rsi      # 0x544e2
callq 0x4140
cmpl $0x0, %eax
jne 0x48c6a
movq -0x20(%rbp), %rax
movl $0xd, (%rax)
jmp 0x48f54
leaq -0x50(%rbp), %rdi
leaq 0xb874(%rip), %rsi      # 0x544e9
callq 0x4140
cmpl $0x0, %eax
jne 0x48c8e
movq -0x20(%rbp), %rax
movl $0xe, (%rax)
jmp 0x48f52
leaq -0x50(%rbp), %rdi
leaq 0xb84f(%rip), %rsi      # 0x544e8
callq 0x4140
cmpl $0x0, %eax
jne 0x48cb2
movq -0x20(%rbp), %rax
movl $0xf, (%rax)
jmp 0x48f50
leaq -0x50(%rbp), %rdi
leaq 0xb832(%rip), %rsi      # 0x544ef
callq 0x4140
cmpl $0x0, %eax
jne 0x48cd6
movq -0x20(%rbp), %rax
movl $0x10, (%rax)
jmp 0x48f4e
leaq -0x50(%rbp), %rdi
leaq 0xb815(%rip), %rsi      # 0x544f6
callq 0x4140
cmpl $0x0, %eax
jne 0x48cfa
movq -0x20(%rbp), %rax
movl $0x11, (%rax)
jmp 0x48f4c
leaq -0x50(%rbp), %rdi
leaq 0xb7f8(%rip), %rsi      # 0x544fd
callq 0x4140
cmpl $0x0, %eax
jne 0x48d1e
movq -0x20(%rbp), %rax
movl $0x12, (%rax)
jmp 0x48f4a
leaq -0x50(%rbp), %rdi
leaq 0xb7dc(%rip), %rsi      # 0x54505
callq 0x4140
cmpl $0x0, %eax
jne 0x48d42
movq -0x20(%rbp), %rax
movl $0x13, (%rax)
jmp 0x48f48
leaq -0x50(%rbp), %rdi
leaq 0xb7c0(%rip), %rsi      # 0x5450d
callq 0x4140
cmpl $0x0, %eax
jne 0x48d66
movq -0x20(%rbp), %rax
movl $0x14, (%rax)
jmp 0x48f46
leaq -0x50(%rbp), %rdi
leaq 0xb7a3(%rip), %rsi      # 0x54514
callq 0x4140
cmpl $0x0, %eax
jne 0x48d8a
movq -0x20(%rbp), %rax
movl $0x15, (%rax)
jmp 0x48f44
leaq -0x50(%rbp), %rdi
leaq 0xb789(%rip), %rsi      # 0x5451e
callq 0x4140
cmpl $0x0, %eax
jne 0x48dae
movq -0x20(%rbp), %rax
movl $0x16, (%rax)
jmp 0x48f42
leaq -0x50(%rbp), %rdi
leaq 0xb757(%rip), %rsi      # 0x54510
callq 0x4140
cmpl $0x0, %eax
jne 0x48dd2
movq -0x20(%rbp), %rax
movl $0x17, (%rax)
jmp 0x48f40
leaq -0x50(%rbp), %rdi
leaq 0xb748(%rip), %rsi      # 0x54525
callq 0x4140
cmpl $0x0, %eax
jne 0x48df6
movq -0x20(%rbp), %rax
movl $0x18, (%rax)
jmp 0x48f3e
leaq -0x50(%rbp), %rdi
leaq 0xb722(%rip), %rsi      # 0x54523
callq 0x4140
cmpl $0x0, %eax
jne 0x48e1a
movq -0x20(%rbp), %rax
movl $0x19, (%rax)
jmp 0x48f3c
leaq -0x50(%rbp), %rdi
leaq 0xb704(%rip), %rsi      # 0x54529
callq 0x4140
cmpl $0x0, %eax
jne 0x48e3e
movq -0x20(%rbp), %rax
movl $0x1a, (%rax)
jmp 0x48f3a
leaq -0x50(%rbp), %rdi
leaq 0xb6e6(%rip), %rsi      # 0x5452f
callq 0x4140
cmpl $0x0, %eax
jne 0x48e62
movq -0x20(%rbp), %rax
movl $0x1b, (%rax)
jmp 0x48f38
movq 0x1d187(%rip), %rdi     # 0x65ff0
leaq 0x81ca(%rip), %rsi      # 0x5103a
callq 0x4380
movq %rax, -0x690(%rbp)
jmp 0x48e7e
movq -0x690(%rbp), %rdi
leaq 0xb5e1(%rip), %rsi      # 0x5446d
callq 0x4380
movq %rax, -0x698(%rbp)
jmp 0x48e9a
movq -0x698(%rbp), %rdi
leaq 0x898d(%rip), %rsi      # 0x51835
callq 0x4380
movq %rax, -0x6a0(%rbp)
jmp 0x48eb6
movq -0x6a0(%rbp), %rdi
movl $0x83, %esi
callq 0x4610
movq %rax, -0x6a8(%rbp)
jmp 0x48ed0
movq -0x6a8(%rbp), %rdi
leaq 0x817b(%rip), %rsi      # 0x51059
callq 0x4380
movq %rax, -0x6b0(%rbp)
jmp 0x48eec
movq -0x6b0(%rbp), %rdi
leaq 0xb63c(%rip), %rsi      # 0x54536
callq 0x4380
movq %rax, -0x6b8(%rbp)
jmp 0x48f08
movq -0x6b8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4320
movq %rax, -0x6c0(%rbp)
jmp 0x48f21
movq -0x6c0(%rbp), %rdi
movq 0x1d081(%rip), %rsi     # 0x65fb0
callq 0x43c0
jmp 0x48f36
jmp 0x48f38
jmp 0x48f3a
jmp 0x48f3c
jmp 0x48f3e
jmp 0x48f40
jmp 0x48f42
jmp 0x48f44
jmp 0x48f46
jmp 0x48f48
jmp 0x48f4a
jmp 0x48f4c
jmp 0x48f4e
jmp 0x48f50
jmp 0x48f52
jmp 0x48f54
jmp 0x48f56
jmp 0x48f58
jmp 0x48f5a
jmp 0x48f5c
jmp 0x48f5e
jmp 0x48f60
jmp 0x48f62
jmp 0x48f64
jmp 0x48f66
jmp 0x48f68
jmp 0x48f6a
jmp 0x48f6c
movq -0x8(%rbp), %rdi
movslq -0x30(%rbp), %rdx
leaq 0x9a99(%rip), %rsi      # 0x52a14
callq 0x41d0
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
movslq -0x2c(%rbp), %rdx
leaq 0x9a82(%rip), %rsi      # 0x52a14
callq 0x4200
movl %eax, -0x30(%rbp)
cmpl $-0x1, -0x30(%rbp)
jne 0x48fbe
leaq 0x1d599(%rip), %rax     # 0x66540
movl (%rax), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x3ec(%rbp)
jmp 0x49072
movq -0x8(%rbp), %rdi
movq %rdi, -0x6d0(%rbp)
movslq -0x30(%rbp), %rdx
movq %rdx, -0x6c8(%rbp)
leaq 0x9a39(%rip), %rsi      # 0x52a14
callq 0x41d0
movq -0x6d0(%rbp), %rsi
movq -0x6c8(%rbp), %rdx
movq %rax, %rcx
movslq -0x30(%rbp), %rax
subq %rax, %rcx
leaq -0x410(%rbp), %rdi
callq 0x43b0
jmp 0x49006
leaq -0x50(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
leaq -0x410(%rbp), %rsi
movq %rsi, -0x6e0(%rbp)
callq 0x4470
movq -0x6e0(%rbp), %rdi
callq 0x46e8
movq -0x6d8(%rbp), %rsi
leaq -0x590(%rbp), %rdi
movl $0x8, %edx
callq 0x45d0
jmp 0x4904a
movq -0x28(%rbp), %rsi
leaq -0x590(%rbp), %rdi
callq 0x4090
jmp 0x4905c
leaq -0x590(%rbp), %rdi
callq 0x41c0
movl $0x0, -0x3ec(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x41c0
leaq -0x208(%rbp), %rdi
callq 0x41c0
leaq -0x50(%rbp), %rdi
callq 0x46e8
addq $0x6e0, %rsp            # imm = 0x6E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x41c0
leaq -0x3a8(%rbp), %rdi
callq 0x41c0
leaq -0x208(%rbp), %rdi
callq 0x41c0
leaq -0x50(%rbp), %rdi
callq 0x46e8
movq -0x60(%rbp), %rdi
callq 0x4630
nop