Function at 0x402060
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x64ef44
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x150
push ebx
mov ebx, dword [0x6a7a14]
push ebp
mov ebp, dword [esp + 0x16c]
push esi
push edi
push 0
push 0
mov eax, ebp
call fcn.00587150
push 0x19
xor esi, esi
push str._SUBURBAN_ALMANAC_PLANTS_
lea ecx, [esp + 0x30]
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x44], esi
mov byte [esp + 0x34], 0
call fcn.00404330
mov edx, 0x9f
push 0x2b
lea ecx, [edx + 0x36]
lea eax, [esp + 0x4c]
mov dword [esp + 0x16c], esi
call fcn.005643d0
mov ecx, dword [eax]
mov esi, dword [0x6a75c8]
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x20], edx
lea edx, [esp + 0x28]
lea edi, [esp + 0x64]
call fcn.00519520
mov byte [esp + 0x168], 1
mov eax, dword [esi]
mov edx, dword [eax + 0x1c]
mov ecx, edi
push ecx
mov ecx, esi
call edx
cdq
sub eax, edx
mov edx, dword [esi]
mov edx, dword [edx + 0x28]
mov ecx, eax
sar ecx, 1
mov eax, 0x190
sub eax, ecx
lea ecx, [ebp + 0x20]
push ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, edi
push ecx
push 0x30
push eax
push ebp
mov ecx, esi
call edx
mov esi, 0x10
cmp dword [esp + 0x7c], esi
jb 0x402155
mov eax, dword [esp + 0x68]
push eax
call fcn.0061c19a
add esp, 4
mov dword [esp + 0x168], 0xffffffff
cmp dword [esp + 0x40], esi
jb 0x402173
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.0061c19a
add esp, 4
mov ebx, dword [esp + 0x170]
mov edx, dword [ebx + 0x16c]
mov eax, dword [edx + 0x320]
mov ecx, dword [eax + 0xe0]
mov eax, dword [eax + 0xe4]
push eax
push ecx
push ebx
call fcn.00403940
xor edi, edi
mov dword [esp + 0x44], eax
mov dword [esp + 0x10], edi
jmp 0x4021b7
mov ebx, dword [esp + 0x170]
jmp 0x466650
mov esi, edi
and esi, 0x80000007
jns 0x4021d8
dec esi
or esi, 0xfffffff8
inc esi
mov eax, edi
imul esi, esi, 0x34
cdq
and edx, 7
add eax, edx
sar eax, 3
imul eax, eax, 0x4e
add esi, 0x1a
add eax, 0x5c
mov dword [esp + 0x24], eax
cmp edi, 0x28
mov eax, dword [ebx + 0x16c]
mov dword [esp + 0x80], esi
jne 0x402217
mov eax, dword [eax + 0x82c]
cmp dword [eax + 0x1c0], 0
setg al
jmp 0x402224
mov ebx, edi
mov edi, eax
call fcn.00453b20
mov edi, dword [esp + 0x10]
test al, al
je 0x40229c
cmp edi, 0x30
jmp 0x402253
fldz
push 0
push 1
push ecx
fstp dword [esp]
push 0xffffffffffffffff
fild dword [esp + 0x34]
push edi
sub esp, 8
mov ecx, 0xff
fstp dword [esp + 4]
fild dword [esp + 0x9c]
fstp dword [esp]
push ebp
call fcn.004876f0
add esp, 0x20
cmp dword [esp + 0x44], edi
jne 0x40229c
mov eax, dword [esp + 0x24]
mov ebx, dword [0x6a7afc]
push eax
push esi
mov eax, ebp
call fcn.00587150
add edi, 1
cmp edi, 0x35
mov dword [esp + 0x10], edi
jl 0x4021b0
mov ecx, dword [esp + 0x170]
mov ecx, dword [ecx + 0x194]
cmp ecx, 0x10
je 0x4023a0
cmp ecx, 0x13
je 0x4022bc
cmp ecx, 0x2b
je 0x4022bc
cmp ecx, 0x18
je 0x4022d9
cmp ecx, 0x16
je 0x4022bc
nop
jne 0x402347
mov ebx, dword [0x6a73cc]
push 0x6b
push 0x209
mov eax, ebp
call fcn.00587150
mov edx, dword [esp + 0x170]
mov eax, dword [edx + 0x16c]
call fcn.00554f90
test al, al
je 0x40241d
push 0x1f4
push 0x18d
push 0
push 0x1db
mov esi, ebp
call fcn.00587790
fld dword [ebp + 0xc]
fsub qword [0x67a0c0]
mov eax, dword [esp + 0x170]
push 1
push ebp
fstp dword [ebp + 0xc]
mov ecx, dword [eax + 0x16c]
mov edx, dword [ecx + 0x818]
push edx
jmp 0x402405
mov eax, ecx
call fcn.00467e60
test al, al
jne 0x40238a
cmp ecx, 0xb
je 0x40238a
cmp ecx, 0xd
je 0x40238a
cmp ecx, 0x21
push 0x6b
mov eax, ebp
push 0x209
jne 0x40237a
mov ebx, dword [0x6a7760]
call fcn.00587150
jmp 0x40241d
mov ebx, dword [0x6a7848]
call fcn.00587150
jmp 0x40241d
mov ebx, dword [0x6a7704]
push 0x6b
push 0x209
mov eax, ebp
call fcn.00587150
jmp 0x40241d
mov ebx, dword [0x6a797c]
push 0x6b
push 0x209
mov eax, ebp
call fcn.00587150
mov eax, dword [esp + 0x170]
mov eax, dword [eax + 0x16c]
call fcn.00554f90
test al, al
je 0x40241d
push 0x1f4
push 0x18d
push 0
push 0x1db
mov esi, ebp
call fcn.00587790
fld dword [ebp + 0xc]
fsub qword [0x67a0c0]
mov ecx, dword [esp + 0x170]
push 0
push ebp
fstp dword [ebp + 0xc]
mov edx, dword [ecx + 0x16c]
mov eax, dword [edx + 0x818]
push eax
call fcn.00469de0
fld dword [ebp + 0xc]
fadd qword [0x67a0c0]
mov ecx, ebp
fstp dword [ebp + 0xc]
call fcn.00587760
mov ecx, dword [esp + 0x170]
cmp dword [ecx + 0x19c], 0
je 0x40248f
push ebp
lea edi, [esp + 0xf8]
call fcn.005869b0
mov edx, dword [esp + 0x170]
mov dword [esp + 0x168], 2
mov eax, dword [edx + 0x19c]
fild dword [eax + 8]
mov ecx, edi
push ecx
push eax
fadd dword [esp + 0x104]
fstp dword [esp + 0x104]
fild dword [eax + 0xc]
fadd dword [esp + 0x108]
fstp dword [esp + 0x108]
call fcn.00465a90
mov ecx, edi
mov dword [esp + 0x168], 0xffffffff
call fcn.00586b10
mov ebx, dword [0x6a74a4]
push 0x56
push 0x1cb
mov eax, ebp
call fcn.00587150
mov edx, dword [esp + 0x170]
mov eax, dword [edx + 0x194]
push 0xffffffffffffffff
lea esi, [eax + eax*8]
push eax
lea eax, [esp + 0xe0]
lea esi, [esi*4 + 0x69f2b0]
push eax
mov dword [esp + 0x1c], esi
call fcn.00467c00
add esp, 0xc
mov dword [esp + 0x168], 3
mov ecx, dword [esi + 0x20]
push ecx
push str.__s_DESCRIPTION_
lea esi, [esp + 0xa8]
call fcn.005b0ca0
add esp, 8
mov byte [esp + 0x168], 4
mov edx, dword [0x72289c]
mov eax, dword [0x7228a0]
mov ecx, dword [0x7228a4]
mov esi, dword [0x6a79f4]
mov dword [esp + 0x14], edx
mov edx, dword [0x7228a8]
mov dword [esp + 0x20], edx
lea edx, [esp + 0xd8]
lea edi, [esp + 0x64]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
call fcn.00519520
mov byte [esp + 0x168], 5
mov eax, dword [esi]
mov edx, dword [eax + 0x1c]
mov ecx, edi
push ecx
mov ecx, esi
call edx
cdq
sub eax, edx
mov edx, dword [esi]
mov edx, dword [edx + 0x28]
mov ecx, eax
sar ecx, 1
mov eax, 0x269
sub eax, ecx
lea ecx, [ebp + 0x20]
push ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, edi
push ecx
push 0x120
push eax
push ebp
mov ecx, esi
call edx
mov byte [esp + 0x168], 4
cmp dword [esp + 0x7c], 0x10
jb 0x402593
mov eax, dword [esp + 0x68]
push eax
call fcn.0061c19a
add esp, 4
mov edx, 0x32
push 0x5a
lea ecx, [edx - 0xa]
lea eax, [esp + 0x4c]
call fcn.005643d0
mov ecx, dword [0x6a77f8]
lea edx, [esp + 0xa0]
lea edi, [esp + 0x64]
mov esi, eax
mov dword [esp + 0x44], ecx
call fcn.00519520
mov byte [esp + 0x168], 6
mov edx, dword [esi]
mov ecx, dword [esi + 4]
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 8]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0xc]
push 1
mov dword [eax + 8], edx
mov edx, dword [esp + 0x58]
xor ebx, ebx
push ebx
mov dword [eax + 0xc], ecx
push edx
lea eax, [esp + 0x30]
push eax
mov ecx, edi
push ecx
push ebp
mov dword [esp + 0x3c], 0x1e5
mov dword [esp + 0x40], 0x23
mov dword [esp + 0x44], 0x320
mov dword [esp + 0x48], 0xe6
call fcn.00519b50
mov edi, 0x10
add esp, 0x28
mov byte [esp + 0x168], 4
cmp dword [esp + 0x7c], edi
jb 0x402640
mov edx, dword [esp + 0x68]
push edx
call fcn.0061c19a
add esp, 4
mov eax, dword [esp + 0x170]
cmp dword [eax + 0x194], 0x30
jne 0x40269c
cmp dword [esp + 0xb8], edi
jb 0x402669
mov ecx, dword [esp + 0xa4]
push ecx
call fcn.0061c19a
add esp, 4
cmp dword [esp + 0xf0], edi
mov dword [esp + 0xb8], 0xf
mov dword [esp + 0xb4], ebx
mov byte [esp + 0xa4], bl
jb 0x402bd8
mov edx, dword [esp + 0xdc]
push edx
jmp 0x402bd0
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
push ecx
push str.KEYWORDCOST:STAT__d
lea esi, [esp + 0xc4]
call fcn.005b0ca0
add esp, 8
mov byte [esp + 0x168], 7
push 6
mov esi, 0xf
push str._COST_
lea ecx, [esp + 0x30]
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ebx
mov byte [esp + 0x34], bl
call fcn.00404330
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x4c]
push eax
mov ecx, str.COST
lea edx, [esp + 0xc4]
mov byte [esp + 0x170], 8
call fcn.00513660
add esp, 8
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0xc8]
mov byte [esp + 0x174], 9
call fcn.00403e20
cmp dword [esp + 0x60], edi
jb 0x402732
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.0061c19a
add esp, 4
mov byte [esp + 0x168], 7
cmp dword [esp + 0x40], edi
mov dword [esp + 0x60], esi
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
jb 0x402759
mov edx, dword [esp + 0x2c]
push edx
call fcn.0061c19a
add esp, 4
mov esi, dword [0x6a77f8]
lea edx, [esp + 0xbc]
lea edi, [esp + 0x64]
call fcn.00519520
mov byte [esp + 0x168], 0xa
mov ecx, dword [0x72289c]
mov edx, dword [0x7228a0]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [0x7228a4]
mov dword [eax + 4], edx
mov edx, dword [0x7228a8]
push 1
mov dword [eax + 8], ecx
push ebx
mov dword [eax + 0xc], edx
push esi
lea eax, [esp + 0x30]
push eax
mov ecx, edi
push ecx
push ebp
mov dword [esp + 0x3c], 0x1e5
mov dword [esp + 0x40], 0x208
mov dword [esp + 0x44], 0x86
mov dword [esp + 0x48], 0x32
call fcn.00519b50
mov esi, 0x10
add esp, 0x28
cmp dword [esp + 0x7c], esi
jb 0x4027ec
mov edx, dword [esp + 0x68]
push edx
call fcn.0061c19a
add esp, 4
mov edi, 0xf
mov dword [esp + 0x9c], edi
mov dword [esp + 0x98], ebx
mov byte [esp + 0x88], bl
mov eax, dword [esp + 0x10]
mov byte [esp + 0x168], 0xb
mov eax, dword [eax + 0x14]
cmp eax, 0x2ee
push 0x2e
lea ecx, [esp + 0x88]
push str.KEYWORDWAIT_TIME:STAT_WAIT_TIME_LENGTH
jne 0x4028c8
call fcn.00404330
push 0x11
push str._WAIT_TIME_SHORT_
lea ecx, [esp + 0x30]
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov byte [esp + 0x34], bl
call fcn.00404330
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x4c]
push edx
mov ecx, str.WAIT_TIME_LENGTH
lea edx, [esp + 0x8c]
mov byte [esp + 0x170], 0xc
call fcn.00513660
add esp, 8
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x90]
mov byte [esp + 0x174], 0xd
call fcn.00403e20
cmp dword [esp + 0x60], esi
jb 0x4028a0
mov eax, dword [esp + 0x4c]
push eax
call fcn.0061c19a
add esp, 4
mov byte [esp + 0x168], 0xb
cmp dword [esp + 0x40], esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
jb 0x402a05
mov ecx, dword [esp + 0x2c]
push ecx
jmp 0x4029fd
cmp eax, 0xbb8
jne 0x40296c
call fcn.00404330
push esi
push str._WAIT_TIME_LONG_
lea ecx, [esp + 0x30]
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov byte [esp + 0x34], bl
call fcn.00404330
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x4c]
push eax
mov ecx, str.WAIT_TIME_LENGTH
lea edx, [esp + 0x8c]
mov byte [esp + 0x170], 0xe
call fcn.00513660
add esp, 8
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x90]
mov byte [esp + 0x174], 0xf
call fcn.00403e20
cmp dword [esp + 0x60], esi
jb 0x402944
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.0061c19a
add esp, 4
mov byte [esp + 0x168], 0xb
cmp dword [esp + 0x40], esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
jb 0x402a05
mov edx, dword [esp + 0x2c]
push edx
jmp 0x4029fd
call fcn.00404330
push 0x15
push str._WAIT_TIME_VERY_LONG_
lea ecx, [esp + 0x30]
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov byte [esp + 0x34], bl
call fcn.00404330
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x4c]
push ecx
mov ecx, str.WAIT_TIME_LENGTH
lea edx, [esp + 0x8c]
mov byte [esp + 0x170], 0x10
call fcn.00513660
add esp, 8
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x90]
mov byte [esp + 0x174], 0x11
call fcn.00403e20
cmp dword [esp + 0x60], esi
jb 0x4029de
mov edx, dword [esp + 0x4c]
push edx
call fcn.0061c19a
add esp, 4
mov byte [esp + 0x168], 0xb
cmp dword [esp + 0x40], esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
jb 0x402a05
mov eax, dword [esp + 0x2c]
push eax
call fcn.0061c19a
add esp, 4
push 0xb
push str._WAIT_TIME_
lea ecx, [esp + 0x30]
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov byte [esp + 0x34], bl
call fcn.00404330
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x4c]
push edx
mov ecx, str.WAIT_TIME
lea edx, [esp + 0x8c]
mov byte [esp + 0x170], 0x12
call fcn.00513660
add esp, 8
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x90]
mov byte [esp + 0x174], 0x13
call fcn.00403e20
cmp dword [esp + 0x60], esi
jb 0x402a72
mov eax, dword [esp + 0x4c]
push eax
call fcn.0061c19a
add esp, 4
mov byte [esp + 0x168], 0xb
cmp dword [esp + 0x40], esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
jb 0x402a99
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.0061c19a
add esp, 4
mov edx, dword [0x6a77f8]
mov dword [esp + 0x10], edx
lea edx, [esp + 0x84]
lea edi, [esp + 0x64]
call fcn.00519520
mov byte [esp + 0x168], 0x14
mov ecx, dword [0x72289c]
mov edx, dword [0x7228a0]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [0x7228a4]
mov dword [eax + 4], edx
mov edx, dword [0x7228a8]
push 1
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x24]
push 1
push eax
lea ecx, [esp + 0x30]
push ecx
mov edx, edi
push edx
push ebp
mov dword [esp + 0x3c], 0x258
mov dword [esp + 0x40], 0x208
mov dword [esp + 0x44], 0x8b
mov dword [esp + 0x48], 0x32
call fcn.00519b50
add esp, 0x28
cmp dword [esp + 0x7c], esi
jb 0x402b30
mov eax, dword [esp + 0x68]
push eax
call fcn.0061c19a
add esp, 4
cmp dword [esp + 0x9c], esi
jb 0x402b49
mov ecx, dword [esp + 0x88]
push ecx
call fcn.0061c19a
add esp, 4
cmp dword [esp + 0xd4], esi
mov edi, 0xf
mov dword [esp + 0x9c], edi
mov dword [esp + 0x98], ebx
mov byte [esp + 0x88], bl
jb 0x402b7c
mov edx, dword [esp + 0xc0]
push edx
call fcn.0061c19a
add esp, 4
cmp dword [esp + 0xb8], esi
mov dword [esp + 0xd4], edi
mov dword [esp + 0xd0], ebx
mov byte [esp + 0xc0], bl
jb 0x402baa
mov eax, dword [esp + 0xa4]
push eax
call fcn.0061c19a
add esp, 4
cmp dword [esp + 0xf0], esi
mov dword [esp + 0xb8], edi
mov dword [esp + 0xb4], ebx
mov byte [esp + 0xa4], bl
jb 0x402bd8
mov ecx, dword [esp + 0xdc]
push ecx
call fcn.0061c19a
add esp, 4
mov ecx, dword [esp + 0x160]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x15c
ret 8
cmp edi, 0x30
jb 0x4021c9
cmp edi, 0x31
jne 0x46666e
lea esi, [edi + 0x1d]
mov dword [esp + 0x24], 0x12
jmp 0x4021f3
cmp edi, 0x32
jne 0x466678
lea esi, [edi + 0x51]
jmp 0x466661
cmp edi, 0x33
jne 0x466685
lea esi, [edi + 0x85]
jmp 0x466661
cmp edi, 0x30
je 0x466692
lea esi, [edi + 0xb9]
jmp 0x466661
lea esi, [edi - 0x17]
jmp 0x466661