// File: /workspace/github_cpp_makefile_star2_O1/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, %r12
movq %rsi, %r13
movq %rdi, %rbx
movq (%rsi), %rdx
leaq 0x3622(%rip), %rsi      # 0xb7c8
callq 0x4360
leaq 0x10(%rbx), %rdi
leaq 0x20(%rbx), %rax
movq %rax, -0x38(%rbp)
movq %rax, 0x10(%rbx)
xorl %eax, %eax
movq %rax, 0x18(%rbx)
movb %al, 0x20(%rbx)
leaq 0x30(%rbx), %rcx
movq %rcx, -0x40(%rbp)
leaq 0x40(%rbx), %rcx
movq %rcx, -0x30(%rbp)
movq %rcx, 0x30(%rbx)
movq %rax, 0x38(%rbx)
movb %al, 0x40(%rbx)
movq %rdi, -0x148(%rbp)
movq %r13, %rsi
callq 0x31b0
movq -0x40(%rbp), %rdi
movq %r12, %rsi
callq 0x31b0
movl %r14d, 0x50(%rbx)
movq $0x0, 0x58(%rbx)
movl $0x0, 0x54(%rbx)
movl $0x30, %edi
callq 0x3300
movq %rax, %rcx
addq $0x8, %rcx
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movaps %xmm0, (%rax)
movq %rcx, 0x18(%rax)
movq %rcx, 0x20(%rax)
movq $0x0, 0x28(%rax)
movq %rax, 0x60(%rbx)
movl $0x30, %edi
callq 0x3300
movq %rax, %rcx
addq $0x8, %rcx
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movaps %xmm0, (%rax)
movq %rcx, 0x18(%rax)
movq %rcx, 0x20(%rax)
movq $0x0, 0x28(%rax)
movq %rax, 0x68(%rbx)
movl $0x18, %edi
callq 0x3300
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq %rax, 0x70(%rbx)
movl $0x18, %edi
callq 0x3300
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq %rax, 0x78(%rbx)
callq 0x30c0
movl %eax, %r12d
movq 0x70(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0x130(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x34eb(%rip), %rsi      # 0xb7cf
leaq 0x34ec(%rip), %rdx      # 0xb7d7
leaq -0x140(%rbp), %rdi
callq 0x57f8
movslq %r12d, %r12
imulq $0x51eb851f, %r12, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r12d
movb $0x1, %r15b
leaq -0x140(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x836b
movq -0x130(%rbp), %rsi
incq %rsi
callq 0x3320
callq 0x30c0
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x23, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addl %r12d, %eax
addl $-0x5, %eax
cmpl $0x64, %eax
movl $0x64, %r12d
cmovll %eax, %r12d
movq 0x78(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0x110(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x340b(%rip), %rsi      # 0xb7cf
leaq 0x340c(%rip), %rdx      # 0xb7d7
leaq -0x120(%rbp), %rdi
callq 0x57f8
movb $0x1, %r15b
leaq -0x120(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x842e
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x3320
callq 0x30c0
movl %eax, %r12d
movq 0x70(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0xf0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x337f(%rip), %rsi      # 0xb7d8
leaq 0x337d(%rip), %rdx      # 0xb7dd
leaq -0x100(%rbp), %rdi
callq 0x57f8
movslq %r12d, %r12
imulq $0x51eb851f, %r12, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r12d
movb $0x1, %r15b
leaq -0x100(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x84e0
movq -0xf0(%rbp), %rsi
incq %rsi
callq 0x3320
callq 0x30c0
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x23, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addl %r12d, %eax
addl $-0x5, %eax
cmpl $0x64, %eax
movl $0x64, %r12d
cmovll %eax, %r12d
movq 0x78(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0xd0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x329f(%rip), %rsi      # 0xb7d8
leaq 0x329d(%rip), %rdx      # 0xb7dd
leaq -0xe0(%rbp), %rdi
callq 0x57f8
movb $0x1, %r15b
leaq -0xe0(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x85a3
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x3320
callq 0x30c0
movl %eax, %r12d
movq 0x70(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0xb0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x3210(%rip), %rsi      # 0xb7de
leaq 0x3213(%rip), %rdx      # 0xb7e8
leaq -0xc0(%rbp), %rdi
callq 0x57f8
movslq %r12d, %r12
imulq $0x51eb851f, %r12, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r12d
movb $0x1, %r15b
leaq -0xc0(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x8655
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x3320
callq 0x30c0
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x23, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addl %r12d, %eax
addl $-0x5, %eax
cmpl $0x64, %eax
movl $0x64, %r12d
cmovll %eax, %r12d
movq 0x78(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x3130(%rip), %rsi      # 0xb7de
leaq 0x3133(%rip), %rdx      # 0xb7e8
leaq -0xa0(%rbp), %rdi
callq 0x57f8
movb $0x1, %r15b
leaq -0xa0(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x8718
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x3320
callq 0x30c0
movl %eax, %r12d
movq 0x70(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0x70(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x30a9(%rip), %rsi      # 0xb7e9
leaq 0x30ac(%rip), %rdx      # 0xb7f3
leaq -0x80(%rbp), %rdi
callq 0x57f8
movslq %r12d, %r12
imulq $0x51eb851f, %r12, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r12d
movb $0x1, %r15b
leaq -0x80(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x87b8
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3320
callq 0x30c0
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x23, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
addl %r12d, %eax
addl $-0x5, %eax
cmpl $0x64, %eax
movl $0x64, %r12d
cmovll %eax, %r12d
movq 0x78(%rbx), %r14
movl $0x38, %edi
callq 0x3300
movq %rax, %r13
leaq -0x50(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2fdb(%rip), %rsi      # 0xb7e9
leaq 0x2fde(%rip), %rdx      # 0xb7f3
leaq -0x60(%rbp), %rdi
callq 0x57f8
movb $0x1, %r15b
leaq -0x60(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa7a0
xorl %r15d, %r15d
movl $0x18, %edi
callq 0x3300
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3040
incq 0x10(%r14)
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0x8869
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x3320
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x88ac
jmp 0x89d5
jmp 0x88ac
jmp 0x89d5
jmp 0x88ac
jmp 0x89d5
jmp 0x88ac
jmp 0x89d5
jmp 0x88ac
jmp 0x89d5
jmp 0x88ac
jmp 0x89d5
jmp 0x88ac
jmp 0x89d5
movq %rax, %r12
movb $0x1, %r15b
jmp 0x89c1
jmp 0x89d5
movq %rax, %r12
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0x50(%rbp), %rsi
jmp 0x89b9
movq %rax, %r12
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0x70(%rbp), %rsi
jmp 0x89b9
movq %rax, %r12
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0x90(%rbp), %rsi
jmp 0x89b9
movq %rax, %r12
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0xb0(%rbp), %rsi
jmp 0x89b9
movq %rax, %r12
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0xd0(%rbp), %rsi
jmp 0x89b9
movq %rax, %r12
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0xf0(%rbp), %rsi
jmp 0x89b9
movq %rax, %r12
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0x110(%rbp), %rsi
jmp 0x89b9
movq %rax, %r12
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x89c1
movq -0x130(%rbp), %rsi
incq %rsi
callq 0x3320
testb %r15b, %r15b
je 0x89d8
movl $0x38, %esi
movq %r13, %rdi
callq 0x3320
jmp 0x89d8
movq %rax, %r12
movq -0x40(%rbp), %rax
movq (%rax), %rdi
cmpq -0x30(%rbp), %rdi
je 0x89f4
movq -0x30(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3320
movq -0x148(%rbp), %rax
movq (%rax), %rdi
cmpq -0x38(%rbp), %rdi
je 0x8a13
movq -0x38(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3320
movq %rbx, %rdi
callq 0x43d0
movq %r12, %rdi
callq 0x3500
nop