// File: /workspace/github_cpp_makefile_star2_O2/negativeview[P]Software-Business-Sim/Person.cpp
// Function: Person::Person(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int)
Person::Person(string firstName, string lastName, int money) : NamedObject("person", firstName.c_str()) {
	this->_firstName = firstName;
	this->_lastName = lastName;
	this->_money = money;
	this->_company = NULL;
	this->_currentSalary = 0;

	this->_platformSkills = new map<Platform *, int>();
	this->_languageSkills = new map<Language *, int>();

	/**
	 * A person has two sets of traits: actual and believed.
	 *
	 * The actual traits are those that are used when we're calculating the
	 * work being done. A person high in actual creativity will invent new
	 * things or think outside the box.
	 *
	 * The believed traits are what the person believes to be true about
	 * themselves. These will almost always be inflated, but can actually
	 * be lower than reality. Believed traits are used to calculate how much
	 * the person wants to be paid, what projects the person wants to be
	 * involved with/run.
	 *
	 * The actual traits can be gleaned by the performance evaluations, etc.
	 *
	 * The believed traits can be somewhat gleaned by watching how the person
	 * acts. There is no screen that will give you these numbers.
	 *
	 * The meta game is all about figuring out who knows their shit, who's
	 * lying, and how to manage the differences between the two.
	 */
	this->_actualTraits   = new list<Trait *>();
	this->_believedTraits = new list<Trait *>();

	int ambitionTrait = rand() % 100;
	this->_actualTraits->push_back(new Trait("ambition", ambitionTrait));
	ambitionTrait += ((rand() % 20) - 5);
	if (ambitionTrait > 100)
		ambitionTrait = 100;
	this->_believedTraits->push_back(new Trait("ambition", ambitionTrait));

	int greedTrait = rand() % 100;
	this->_actualTraits->push_back(new Trait("greed", greedTrait));
	greedTrait += ((rand() % 20) - 5);
	if (greedTrait > 100)
		greedTrait = 100;
	this->_believedTraits->push_back(new Trait("greed", greedTrait));

	int initiativeTrait = rand() % 100;
	this->_actualTraits->push_back(new Trait("initiative", initiativeTrait));
	initiativeTrait += ((rand() % 20) - 5);
	if (initiativeTrait > 100)
		initiativeTrait = 100;
	this->_believedTraits->push_back(new Trait("initiative", initiativeTrait));

	int creativityTrait = rand() % 100;
	this->_actualTraits->push_back(new Trait("creativity", creativityTrait));
	creativityTrait += ((rand() % 20) - 5);
	if (creativityTrait > 100)
		creativityTrait = 100;
	this->_believedTraits->push_back(new Trait("creativity", creativityTrait));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movl %ecx, %r14d
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movq (%rsi), %rdx
leaq 0x3a42(%rip), %rsi      # 0xb7c0
callq 0x4250
leaq 0x10(%rbx), %rdi
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%rbx)
andq $0x0, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x20(%rbx)
leaq 0x30(%rbx), %r13
leaq 0x40(%rbx), %rcx
movq %rcx, 0x30(%rbx)
andq $0x0, 0x38(%rbx)
movb %al, 0x40(%rbx)
movq %rdi, -0x50(%rbp)
movq %r12, %rsi
movq %r13, -0x48(%rbp)
callq 0x31b0
movq %r13, %rdi
movq %r15, %rsi
callq 0x31b0
movl %r14d, 0x50(%rbx)
andq $0x0, 0x58(%rbx)
andl $0x0, 0x54(%rbx)
pushq $0x30
popq %rdi
callq 0x3300
movq %rax, %rcx
addq $0x8, %rcx
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rax)
movaps %xmm0, (%rax)
movq %rcx, 0x18(%rax)
movq %rcx, 0x20(%rax)
andq $0x0, 0x28(%rax)
movq %rax, 0x60(%rbx)
pushq $0x30
popq %rdi
callq 0x3300
movq %rax, %rcx
addq $0x8, %rcx
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rax)
movaps %xmm0, (%rax)
movq %rcx, 0x18(%rax)
movq %rcx, 0x20(%rax)
andq $0x0, 0x28(%rax)
movq %rax, 0x68(%rbx)
pushq $0x18
popq %rdi
callq 0x3300
movq %rax, 0x8(%rax)
movq %rax, (%rax)
andq $0x0, 0x10(%rax)
movq %rax, 0x70(%rbx)
pushq $0x18
popq %rdi
callq 0x3300
movq %rax, 0x8(%rax)
movq %rax, (%rax)
andq $0x0, 0x10(%rax)
movq %rax, 0x78(%rbx)
callq 0x30c0
pushq $0x64
popq %rcx
cltd
movl %ecx, -0x3c(%rbp)
idivl %ecx
movl %edx, %r13d
movq 0x70(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x3947(%rip), %rsi      # 0xb7c7
leaq -0x150(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0x150(%rbp), %rsi
movq %r14, %rdi
movl %r13d, %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0x150(%rbp), %rdi
callq 0x3170
callq 0x30c0
pushq $0x14
popq %rcx
cltd
idivl %ecx
addl %edx, %r13d
addl $-0x5, %r13d
cmpl $0x64, %r13d
pushq $0x64
popq %rax
cmovgel %eax, %r13d
movq 0x78(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x38d1(%rip), %rsi      # 0xb7c7
leaq -0x130(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0x130(%rbp), %rsi
movq %r14, %rdi
movl %r13d, %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0x130(%rbp), %rdi
callq 0x3170
callq 0x30c0
cltd
pushq $0x64
popq %rcx
idivl %ecx
movl %edx, %r13d
movq 0x70(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x3873(%rip), %rsi      # 0xb7d0
leaq -0x110(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0x110(%rbp), %rsi
movq %r14, %rdi
movl %r13d, %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0x110(%rbp), %rdi
callq 0x3170
callq 0x30c0
cltd
pushq $0x14
popq %rcx
idivl %ecx
addl %edx, %r13d
addl $-0x5, %r13d
cmpl $0x64, %r13d
pushq $0x64
popq %rax
cmovgel %eax, %r13d
movq 0x78(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x37fd(%rip), %rsi      # 0xb7d0
leaq -0xf0(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0xf0(%rbp), %rsi
movq %r14, %rdi
movl %r13d, %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0xf0(%rbp), %rdi
callq 0x3170
callq 0x30c0
cltd
pushq $0x64
popq %rcx
idivl %ecx
movl %edx, %r13d
movq 0x70(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x379c(%rip), %rsi      # 0xb7d6
leaq -0xd0(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0xd0(%rbp), %rsi
movq %r14, %rdi
movl %r13d, %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0xd0(%rbp), %rdi
callq 0x3170
callq 0x30c0
cltd
pushq $0x14
popq %rcx
idivl %ecx
addl %edx, %r13d
addl $-0x5, %r13d
cmpl $0x64, %r13d
pushq $0x64
popq %rax
cmovgel %eax, %r13d
movq 0x78(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x3726(%rip), %rsi      # 0xb7d6
leaq -0xb0(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0xb0(%rbp), %rsi
movq %r14, %rdi
movl %r13d, %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0xb0(%rbp), %rdi
callq 0x3170
callq 0x30c0
cltd
pushq $0x64
popq %rcx
idivl %ecx
movl %edx, %r13d
movq 0x70(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x36ca(%rip), %rsi      # 0xb7e1
leaq -0x90(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0x90(%rbp), %rsi
movq %r14, %rdi
movl %r13d, %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0x90(%rbp), %rdi
callq 0x3170
callq 0x30c0
cltd
pushq $0x14
popq %rcx
idivl %ecx
leal (%rdx,%r13), %eax
addl $-0x5, %eax
cmpl $0x64, %eax
movl -0x3c(%rbp), %ecx
cmovll %eax, %ecx
movl %ecx, -0x3c(%rbp)
movq 0x78(%rbx), %r15
pushq $0x38
popq %rdi
callq 0x3300
movq %rax, %r14
leaq 0x3653(%rip), %rsi      # 0xb7e1
leaq -0x70(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x5664
movb $0x1, %r12b
leaq -0x70(%rbp), %rsi
movq %r14, %rdi
movl -0x3c(%rbp), %edx
callq 0x9e94
leaq -0x38(%rbp), %rsi
movq %r14, (%rsi)
xorl %r12d, %r12d
movq %r15, %rdi
callq 0x84e6
leaq -0x70(%rbp), %rdi
callq 0x3170
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8205
jmp 0x827e
jmp 0x8205
jmp 0x827e
jmp 0x8205
jmp 0x827e
jmp 0x8205
jmp 0x827e
jmp 0x8205
jmp 0x827e
jmp 0x8205
jmp 0x827e
jmp 0x8205
jmp 0x827e
movq %rax, %r15
jmp 0x8271
jmp 0x827e
movq %rax, %r15
leaq -0x70(%rbp), %rdi
jmp 0x8267
movq %rax, %r15
leaq -0x90(%rbp), %rdi
jmp 0x8267
movq %rax, %r15
leaq -0xb0(%rbp), %rdi
jmp 0x8267
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
jmp 0x8267
movq %rax, %r15
leaq -0xf0(%rbp), %rdi
jmp 0x8267
movq %rax, %r15
leaq -0x110(%rbp), %rdi
jmp 0x8267
movq %rax, %r15
leaq -0x130(%rbp), %rdi
jmp 0x8267
movq %rax, %r15
leaq -0x150(%rbp), %rdi
callq 0x3170
testb %r12b, %r12b
je 0x8281
pushq $0x38
popq %rsi
movq %r14, %rdi
callq 0x3320
jmp 0x8281
movq %rax, %r15
movq -0x48(%rbp), %rdi
callq 0x3170
movq -0x50(%rbp), %rdi
callq 0x3170
movq %rbx, %rdi
callq 0x42c0
movq %r15, %rdi
callq 0x3510
nop