// File: /workspace/github_cpp_makefile_star2_O3/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 0x3692(%rip), %rsi      # 0xb7c8
callq 0x434c
leaq 0x10(%rbx), %r15
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 %r15, %rdi
movq %r13, %rsi
movq %r15, -0x148(%rbp)
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, (%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, (%rax)
movq %rcx, 0x18(%rax)
movq %rcx, 0x20(%rax)
movq $0x0, 0x28(%rax)
movq %rax, 0x68(%rbx)
movl $0x18, %edi
callq 0x3300
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%rax)
movq %rax, 0x70(%rbx)
movl $0x18, %edi
callq 0x3300
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%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 0x356c(%rip), %rsi      # 0xb7cf
leaq 0x356d(%rip), %rdx      # 0xb7d7
leaq -0x140(%rbp), %rdi
callq 0x57e8
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 0xa724
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 0x82ea
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 0x348c(%rip), %rsi      # 0xb7cf
leaq 0x348d(%rip), %rdx      # 0xb7d7
leaq -0x120(%rbp), %rdi
callq 0x57e8
movb $0x1, %r15b
leaq -0x120(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa724
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 0x83ad
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 0x3400(%rip), %rsi      # 0xb7d8
leaq 0x33fe(%rip), %rdx      # 0xb7dd
leaq -0x100(%rbp), %rdi
callq 0x57e8
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 0xa724
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 0x845f
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 0x3320(%rip), %rsi      # 0xb7d8
leaq 0x331e(%rip), %rdx      # 0xb7dd
leaq -0xe0(%rbp), %rdi
callq 0x57e8
movb $0x1, %r15b
leaq -0xe0(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa724
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 0x8522
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 0x3291(%rip), %rsi      # 0xb7de
leaq 0x3294(%rip), %rdx      # 0xb7e8
leaq -0xc0(%rbp), %rdi
callq 0x57e8
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 0xa724
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 0x85d4
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 0x31b1(%rip), %rsi      # 0xb7de
leaq 0x31b4(%rip), %rdx      # 0xb7e8
leaq -0xa0(%rbp), %rdi
callq 0x57e8
movb $0x1, %r15b
leaq -0xa0(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa724
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 0x8697
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 0x312a(%rip), %rsi      # 0xb7e9
leaq 0x312d(%rip), %rdx      # 0xb7f3
leaq -0x80(%rbp), %rdi
callq 0x57e8
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 0xa724
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 0x8737
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 0x305c(%rip), %rsi      # 0xb7e9
leaq 0x305f(%rip), %rdx      # 0xb7f3
leaq -0x60(%rbp), %rdi
callq 0x57e8
movb $0x1, %r15b
leaq -0x60(%rbp), %rsi
movq %r13, %rdi
movl %r12d, %edx
callq 0xa724
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 0x87e8
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 0x882b
jmp 0x8951
jmp 0x882b
jmp 0x8951
jmp 0x882b
jmp 0x8951
jmp 0x882b
jmp 0x8951
jmp 0x882b
jmp 0x8951
jmp 0x882b
jmp 0x8951
jmp 0x882b
jmp 0x8951
movq %rax, %r12
jmp 0x8942
jmp 0x8951
movq %rax, %r12
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0x50(%rbp), %rsi
jmp 0x8935
movq %rax, %r12
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0x70(%rbp), %rsi
jmp 0x8935
movq %rax, %r12
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0x90(%rbp), %rsi
jmp 0x8935
movq %rax, %r12
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0xb0(%rbp), %rsi
jmp 0x8935
movq %rax, %r12
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0xd0(%rbp), %rsi
jmp 0x8935
movq %rax, %r12
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0xf0(%rbp), %rsi
jmp 0x8935
movq %rax, %r12
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0x110(%rbp), %rsi
jmp 0x8935
movq %rax, %r12
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x893d
movq -0x130(%rbp), %rsi
incq %rsi
callq 0x3320
testb %r15b, %r15b
je 0x8954
movl $0x38, %esi
movq %r13, %rdi
callq 0x3320
jmp 0x8954
movq %rax, %r12
movq -0x40(%rbp), %rax
movq (%rax), %rdi
cmpq -0x30(%rbp), %rdi
je 0x8970
movq -0x30(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3320
movq -0x148(%rbp), %rax
movq (%rax), %rdi
cmpq -0x38(%rbp), %rdi
je 0x898f
movq -0x38(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3320
movq %rbx, %rdi
callq 0x43bc
movq %r12, %rdi
callq 0x3500
nop