Function at 0x40fcf0
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44faf0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x90
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x44], eax
mov dword [ebp - 4], eax
mov byte [ebp - 0x19], al
mov eax, dword [0x4666b4]
mov dword [ebp - 0x14], eax
mov esi, dword [sym.imp.USER32.dll_TranslateMessage]
mov edi, dword [sym.imp.USER32.dll_DispatchMessageA]
mov ebx, dword [sym.imp.USER32.dll_PostMessageA]
mov byte [ebp - 4], 2
push 1
push 0
push 0
push 0
lea ecx, [ebp - 0x84]
push ecx
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x40fdee
mov eax, dword [ebp - 0x80]
cmp eax, 0x12
je 0x40fd72
cmp eax, 0x111
jne 0x40fd81
cmp dword [ebp - 0x7c], 0xe141
jne 0x40fd81
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 0x60]
push eax
call fcn.00405560
add esp, 4
lea ecx, [ebp - 0x84]
push ecx
call esi
lea edx, [ebp - 0x84]
push edx
call edi
mov eax, dword [ebp - 0x80]
cmp eax, 0x12
jne 0x40fdac
push 0
push 0
push eax
push 0
call ebx
mov eax, dword [ebp - 0x80]
cmp eax, 0x12
je 0x40fdbc
cmp eax, 0x111
jne 0x40fd3d
cmp dword [ebp - 0x7c], 0xe141
jne 0x40fd3d
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0
call fcn.00434de3
lea ecx, [ebp + 0x20]
mov dword [ebp - 4], 0xffffffff
call fcn.00434de3
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [0x46bd7a]
test al, al
mov dword [ebp - 4], 1
jne 0x40fdbc
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax]
mov eax, dword [ecx - 8]
cmp eax, 4
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x20], edi
jle 0x40fe2a
cmp byte [edi], 0x2e
jne 0x40fdbc
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 0x68]
cmp word [eax + 0xe], 0
je 0x40fe2a
cmp word [edi + 0x14], 0
jne 0x40fdbc
xor ecx, ecx
mov cl, byte [edi + 0xb]
and ecx, 0xfffffff0
cmp ecx, 0x20
jg 0x40fdbc
mov dword [ebp - 0x40], 0
mov edx, dword [ebp - 0x40]
cmp edx, dword [ebp + 0x1c]
jge 0x40fdbc
mov al, byte [edi]
test al, al
je 0x410993
cmp al, 0xff
jne 0x40fe62
cmp byte [edi + 1], 0xff
je 0x40fdbc
push 8
push str..
push edi
call fcn.0041caf0
add esp, 0xc
test eax, eax
je 0x410993
push 8
push str...
push edi
call fcn.0041caf0
add esp, 0xc
test eax, eax
je 0x410993
mov al, byte [edi + 0xb]
cmp al, 0xdd
je 0x410993
cmp al, 0xff
je 0x410993
cmp al, 0xfe
je 0x410993
cmp al, 8
je 0x410993
cmp al, 0xf
jne 0x40fec2
mov byte [ebp - 0x19], 1
jmp 0x410993
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 0x1c]
push 0
push 0
push 0x405
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
push 0x46b118
lea ecx, [ebp - 0x14]
call fcn.00434f6c
mov al, byte [ebp - 0x19]
test al, al
je 0x41004e
mov al, byte [edi - 0x20]
test al, al
lea esi, [edi - 0x20]
je 0x410041
cmp byte [esi + 0xb], 0xf
jne 0x410041
mov eax, dword [esi + 1]
mov edi, dword [esi + 5]
mov bx, word [esi + 9]
push eax
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], edi
mov word [ebp - 0x4c], bx
call fcn.004351e6
cmp word [ebp - 0x52], 0
je 0x410041
mov edx, dword [ebp - 0x52]
push edx
lea ecx, [ebp - 0x14]
call fcn.004351e6
test di, di
je 0x410041
push edi
lea ecx, [ebp - 0x14]
call fcn.004351e6
cmp word [ebp - 0x4e], 0
je 0x410041
mov eax, dword [ebp - 0x4e]
push eax
lea ecx, [ebp - 0x14]
call fcn.004351e6
test bx, bx
je 0x410041
mov ecx, dword [ebp - 0x4c]
push ecx
lea ecx, [ebp - 0x14]
call fcn.004351e6
cmp word [esi + 0xe], 0
je 0x410041
xor edx, edx
mov dl, byte [esi + 0xe]
lea ecx, [ebp - 0x14]
push edx
call fcn.004351e6
cmp word [esi + 0x10], 0
je 0x410041
xor eax, eax
mov al, byte [esi + 0x10]
lea ecx, [ebp - 0x14]
push eax
call fcn.004351e6
cmp word [esi + 0x12], 0
je 0x410041
xor ecx, ecx
mov cl, byte [esi + 0x12]
push ecx
lea ecx, [ebp - 0x14]
call fcn.004351e6
cmp word [esi + 0x14], 0
je 0x410041
xor edx, edx
mov dl, byte [esi + 0x14]
lea ecx, [ebp - 0x14]
push edx
call fcn.004351e6
cmp word [esi + 0x16], 0
je 0x410041
xor eax, eax
mov al, byte [esi + 0x16]
lea ecx, [ebp - 0x14]
push eax
call fcn.004351e6
cmp word [esi + 0x18], 0
je 0x410041
xor ecx, ecx
mov cl, byte [esi + 0x18]
push ecx
lea ecx, [ebp - 0x14]
call fcn.004351e6
cmp word [esi + 0x1c], 0
je 0x410041
xor edx, edx
mov dl, byte [esi + 0x1c]
lea ecx, [ebp - 0x14]
push edx
call fcn.004351e6
cmp word [esi + 0x1e], 0
je 0x410041
xor eax, eax
mov al, byte [esi + 0x1e]
lea ecx, [ebp - 0x14]
push eax
call fcn.004351e6
mov eax, dword [ebp + 0x10]
sub esi, 0x20
cmp esi, eax
jbe 0x410041
cmp byte [esi], 0
jne 0x40fefe
lea ecx, [ebp - 0x14]
call fcn.0042e14f
jmp 0x410152
push 0x46b118
lea ecx, [ebp - 0x2c]
call fcn.00434e51
mov al, byte [edi]
cmp al, 5
mov byte [ebp - 4], 4
jne 0x410069
push 0xffffffffffffffe5
jmp 0x410072
cmp al, 0xe5
jne 0x410071
push 0x3f
jmp 0x410072
push eax
lea ecx, [ebp - 0x2c]
call fcn.004351e6
mov esi, 1
xor ecx, ecx
mov cl, byte [esi + edi]
push ecx
lea ecx, [ebp - 0x2c]
call fcn.004351e6
inc esi
cmp esi, 8
jl 0x41007f
lea ecx, [ebp - 0x2c]
call fcn.0042e14f
mov dl, byte [edi + 0xc]
and dl, 8
cmp dl, 8
jne 0x4100ae
lea ecx, [ebp - 0x2c]
call fcn.00435317
push 3
lea esi, [edi + 8]
push 0x46553c
push esi
call fcn.0041caf0
add esp, 0xc
test eax, eax
je 0x41013a
push 0x46b118
lea ecx, [ebp - 0x34]
call fcn.00434e51
push 0x2e
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 5
call fcn.004351e6
xor eax, eax
mov al, byte [esi]
lea ecx, [ebp - 0x34]
push eax
call fcn.004351e6
xor ecx, ecx
mov cl, byte [edi + 9]
push ecx
lea ecx, [ebp - 0x34]
call fcn.004351e6
xor edx, edx
mov dl, byte [edi + 0xa]
lea ecx, [ebp - 0x34]
push edx
call fcn.004351e6
lea ecx, [ebp - 0x34]
call fcn.0042e14f
mov al, byte [edi + 0xc]
and al, 0x10
cmp al, 0x10
jne 0x410122
lea ecx, [ebp - 0x34]
call fcn.00435317
lea ecx, [ebp - 0x34]
push ecx
lea ecx, [ebp - 0x2c]
call fcn.004351fb
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 4
call fcn.00434de3
lea edx, [ebp - 0x2c]
push edx
lea ecx, [ebp - 0x14]
call fcn.00434f1c
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
call fcn.00434de3
mov ebx, dword [ebp - 0x44]
test bl, 2
mov dword [ebp - 4], 6
je 0x410172
and ebx, 0xfffffffd
lea ecx, [ebp - 0x90]
mov dword [ebp - 0x44], ebx
call fcn.00434de3
test bl, 1
mov dword [ebp - 4], 1
je 0x41018f
and ebx, 0xfffffffe
lea ecx, [ebp - 0x9c]
mov dword [ebp - 0x44], ebx
call fcn.00434de3
mov ebx, dword [ebp - 0x20]
mov al, byte [ebx + 0xb]
and al, 0x10
cmp al, 0x10
mov byte [ebp - 0x19], 0
jne 0x41061c
mov ecx, dword [ebp + 0xc]
xor eax, eax
mov ax, word [ebx + 0x1a]
cdq
mov dword [ebp - 0x38], edx
mov edx, dword [ecx + 0x68]
cmp word [edx + 0xe], 0
mov esi, eax
jne 0x41034d
mov eax, ebx
mov ax, word [eax + 0x14]
test ax, ax
je 0x4101de
and eax, 0xffff
shl eax, 0x10
cdq
add esi, eax
adc dword [ebp - 0x38], edx
jmp 0x41034d
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
test eax, eax
jl 0x41034d
jg 0x4101fd
cmp ecx, 0xffff
jbe 0x41034d
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0xe5
jne 0x41034d
mov edx, dword [0x46b1e4]
test edx, edx
je 0x41034d
push 0
add ecx, 0xffff
push 0x10000
adc eax, 0
push eax
push ecx
mov dword [ebp - 0x28], 0
call fcn.0041c8a0
test edx, edx
jl 0x41034d
jg 0x410247
test eax, eax
jbe 0x41034d
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x38]
cdq
add eax, esi
adc edx, ebx
xor ecx, ecx
cmp edx, ecx
jg 0x41034d
jl 0x410271
cmp eax, dword [0x46b1e0]
jae 0x41034d
mov eax, dword [ebp - 0x18]
lea ecx, [eax + esi]
mov eax, dword [0x46b1e4]
mov edx, ecx
shr edx, 5
mov edx, dword [eax + edx*4]
and ecx, 0x1f
shr edx, cl
test dl, 1
jne 0x410301
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x38]
shl eax, 0x10
cdq
push 4
add esi, eax
mov eax, dword [ebx + 0x2c]
push 0x1000
push eax
adc ecx, edx
push 0
mov dword [ebp - 0x38], ecx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebx + 0x60]
push 1
mov edi, eax
push edi
push ecx
push esi
push edx
call fcn.00405b40
push 5
push 0x465534
push edi
call fcn.0041caf0
add esp, 0x20
mov ebx, eax
push 0x8000
neg ebx
push 0
sbb bl, bl
push edi
inc bl
call dword [sym.imp.KERNEL32.dll_VirtualFree]
test bl, bl
jne 0x41034d
mov eax, dword [ebp - 0x38]
and esi, 0xffff
and eax, 0
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x18]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
push 0
inc edi
add ebx, 0x10000
add ecx, 0xffff
push 0x10000
adc edx, 0
push edx
push ecx
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x18], ebx
call fcn.0041c8a0
mov ebx, eax
mov ecx, edx
mov eax, edi
cdq
cmp edx, ecx
jl 0x41024e
jg 0x41034d
cmp eax, ebx
jb 0x41024e
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x60], ecx
add ecx, 1
mov dword [ebp - 0x5c], eax
adc eax, 0
cmp edx, eax
jg 0x410993
jl 0x410377
cmp esi, ecx
ja 0x410993
mov eax, dword [ebp - 0x20]
mov edi, dword [ebp + 0xc]
mov edx, dword [eax + 0x1c]
mov ecx, dword [edi + 0x2c]
lea eax, [edx + ecx - 1]
xor edx, edx
div ecx
mov ebx, eax
test ebx, ebx
mov dword [ebp - 0x18], ebx
jne 0x4103cf
mov eax, dword [ebp - 0x38]
test eax, eax
jl 0x4103de
jg 0x4103a2
cmp esi, 1
jbe 0x4103de
cmp eax, dword [ebp - 0x5c]
jg 0x4103de
jl 0x4103ae
cmp esi, dword [ebp - 0x60]
ja 0x4103de
mov eax, dword [0x46bfe8]
push eax
push esi
mov ebx, 1
push edi
mov dword [ebp - 0x18], ebx
call fcn.00406340
push eax
push edi
call fcn.004062d0
add esp, 0x14
jmp 0x4103de
cmp ebx, 0xc8
jg 0x410993
mov edi, dword [ebp + 0xc]
imul ebx, dword [edi + 0x2c]
push 4
push 0x1000
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
test eax, eax
mov dword [ebp - 0x28], eax
je 0x410993
mov ebx, dword [ebp - 0x38]
mov edi, dword [ebp + 0xc]
mov edx, dword [edi + 0x60]
push 1
mov ecx, eax
push ecx
push ebx
push esi
push edx
call fcn.00405b40
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x18]
add esp, 0x14
cmp eax, 1
jle 0x4104e6
push esi
push edi
call fcn.004062d0
add esp, 8
cmp eax, 3
je 0x4104e6
test ebx, ebx
jg 0x410466
jl 0x410446
cmp esi, 2
jae 0x410466
push str._newdircluster____2
push 0x508
push str.E:_srcundeleteundeleteDoc.cpp
call fcn.004025a0
add esp, 0xc
cmp eax, 1
je 0x410531
mov eax, dword [edi + 0x78]
xor ecx, ecx
inc eax
cmp ebx, ecx
jl 0x410496
jg 0x410476
cmp esi, eax
jbe 0x410496
push str._newdircluster______Vcb___AllocationSupport.NumberOfClusters__1_
push 0x509
push str.E:_srcundeleteundeleteDoc.cpp
call fcn.004025a0
add esp, 0xc
cmp eax, 1
je 0x410538
mov ecx, dword [0x46bfe8]
push ecx
push esi
push edi
call fcn.00406340
mov edx, dword [edi + 0x2c]
mov esi, eax
mov eax, dword [ebp - 0x30]
add eax, edx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x30], eax
call fcn.004062d0
add esp, 0x14
cmp eax, 3
je 0x4104e6
mov eax, dword [ebp - 0x30]
mov ecx, dword [edi + 0x60]
push 1
push eax
push ebx
push esi
push ecx
call fcn.00405b40
mov eax, dword [ebp - 0x18]
add esp, 0x14
dec eax
cmp eax, 1
mov dword [ebp - 0x18], eax
jg 0x410428
push 1
push 0x5c
lea ecx, [ebp - 0x48]
call fcn.0042db11
mov ecx, dword [ebp + 0x14]
push 1
lea edx, [ebp - 0x58]
push edx
mov byte [ebp - 4], 8
call fcn.0042dcc2
mov esi, dword [ebp - 0x48]
mov eax, dword [eax]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x41053f
test cl, cl
je 0x41052d
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x41053f
add eax, 2
add esi, 2
test cl, cl
jne 0x410509
xor eax, eax
jmp 0x410544
push 1
call fcn.0041c4fb
push 1
call fcn.0041c4fb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
lea ecx, [ebp - 0x58]
setne bl
call fcn.00434de3
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 1
call fcn.00434de3
test bl, bl
je 0x41058c
lea eax, [ebp - 0x14]
push eax
push 0x463f94
lea ecx, [ebp - 0x64]
push ecx
call fcn.004350ec
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 9
call fcn.00434f1c
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 1
call fcn.00434de3
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0xe5
jne 0x410598
mov byte [ebp + 0x2c], 1
mov eax, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 0x24]
push eax
push ecx
push edx
push ecx
lea eax, [ebp + 0x20]
mov ecx, esp
mov dword [ebp - 0x30], esp
push eax
mov byte [ebp - 4], 0xa
call fcn.00434b58
mov edx, dword [ebp + 0x14]
lea ecx, [ebp - 0x14]
push ecx
push edx
lea eax, [ebp - 0x68]
push eax
mov byte [ebp - 4], 0xb
call fcn.00435012
mov ecx, dword [edi + 0x2c]
mov edx, dword [ebp + 0x18]
shr ecx, 5
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
mov eax, dword [ebp - 0x28]
push eax
push edi
push ecx
mov byte [ebp - 4], 0xd
call fcn.0040fcf0
add esp, 0x28
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0xa
call fcn.00434de3
mov edx, dword [ebp - 0x28]
push 0x8000
push 0
push edx
mov dword [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_VirtualFree]
jmp 0x410993
cmp byte [ebx], 0xe5
je 0x41062f
mov al, byte [ebp + 0x2c]
test al, al
je 0x410993
mov ebx, dword [ebp - 0x20]
push str.Good
lea ecx, [ebp - 0x24]
call fcn.00434e51
mov edi, dword [ebp + 0x20]
mov byte [ebp - 4], 0xf
mov esi, 0x46b118
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x41066e
test cl, cl
je 0x41066a
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x41066e
add eax, 2
add esi, 2
test cl, cl
jne 0x41064a
xor eax, eax
jmp 0x410673
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x410706
mov esi, 0x463150
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4106a6
test cl, cl
je 0x4106a2
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4106a6
add eax, 2
add esi, 2
test cl, cl
jne 0x410682
xor eax, eax
jmp 0x4106ab
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x410706
mov esi, 0x465428
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4106da
test cl, cl
je 0x4106d6
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4106da
add eax, 2
add esi, 2
test cl, cl
jne 0x4106b6
xor eax, eax
jmp 0x4106df
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x410706
mov eax, dword [ebp + 0x24]
push eax
push ecx
lea edx, [ebp - 0x14]
mov ecx, esp
mov dword [ebp - 0x30], esp
push edx
call fcn.00434b58
call fcn.0040eb20
add esp, 8
test al, al
je 0x410987
mov al, byte [ebp + 0x28]
test al, al
je 0x410743
push ecx
lea eax, [ebp - 0x14]
mov ecx, esp
mov dword [ebp - 0x30], esp
push eax
call fcn.00434b58
mov edx, dword [ebp + 0x14]
push ecx
mov ecx, esp
mov dword [ebp - 0x28], esp
push edx
mov byte [ebp - 4], 0x10
call fcn.00434b58
mov byte [ebp - 4], 0xf
call fcn.0040ebc0
add esp, 8
test al, al
jne 0x410987
xor ecx, ecx
mov cx, word [ebx + 0x16]
xor edx, edx
mov dx, word [ebx + 0x18]
lea eax, [ebp - 0x98]
push eax
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_DosDateTimeToFileTime]
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 0x68]
xor ecx, ecx
cmp word [eax + 0xe], 0
mov cx, word [ebx + 0x1a]
mov dword [ebp - 0x18], ecx
jne 0x410832
xor eax, eax
mov ax, word [ebx + 0x14]
test ax, ax
je 0x410795
and eax, 0xffff
shl eax, 0x10
add ecx, eax
mov dword [ebp - 0x18], ecx
jmp 0x410832
mov eax, dword [edx + 0x14]
test eax, eax
mov ecx, dword [edx + 0x10]
jl 0x410832
jg 0x4107b1
cmp ecx, 0xffff
jbe 0x410832
cmp byte [ebx], 0xe5
jne 0x410832
mov edx, dword [0x46b1e4]
test edx, edx
je 0x410832
xor edi, edi
push edi
add ecx, 0xffff
push 0x10000
adc eax, edi
push eax
push ecx
call fcn.0041c8a0
mov ebx, edx
test ebx, ebx
mov dword [ebp - 0x8c], eax
jl 0x410832
jg 0x4107e9
test eax, eax
jbe 0x410832
mov esi, dword [ebp - 0x18]
cmp esi, dword [0x46b1e0]
jae 0x410832
mov eax, dword [0x46b1e4]
mov edx, esi
shr edx, 5
mov edx, dword [eax + edx*4]
mov ecx, esi
and ecx, 0x1f
shr edx, cl
test dl, 1
je 0x410827
inc edi
mov eax, edi
cdq
add esi, 0x10000
cmp edx, ebx
jl 0x4107ec
jg 0x410832
cmp eax, dword [ebp - 0x8c]
jb 0x4107ec
jmp 0x410832
mov eax, dword [ebp - 0x18]
shl edi, 0x10
add eax, edi
mov dword [ebp - 0x18], eax
mov esi, dword [ebp - 0x18]
test esi, esi
jne 0x410847
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x1c]
test ecx, ecx
ja 0x410928
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0x1c]
test eax, eax
jne 0x41085e
push str.Poor
lea ecx, [ebp - 0x24]
call fcn.00434f6c
test esi, esi
jbe 0x410935
mov edx, dword [ebp + 0xc]
mov ecx, dword [edx + 0x2c]
mov eax, dword [ebp - 0x20]
mov edx, dword [eax + 0x1c]
lea eax, [edx + ecx - 1]
xor edx, edx
div ecx
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x30], 0
test eax, eax
mov dword [ebp - 0x28], eax
jle 0x410935
mov edi, dword [ebp + 0xc]
cmp esi, 2
jb 0x410928
mov ecx, dword [edi + 0x10]
mov eax, dword [edi + 0x14]
add ecx, 1
adc eax, 0
xor edx, edx
cmp edx, eax
jg 0x410928
jl 0x4108b3
cmp esi, ecx
ja 0x410928
mov eax, dword [0x46b1e4]
test eax, eax
je 0x4108c4
cmp esi, dword [0x46b1e0]
ja 0x410928
mov eax, dword [0x46bfe8]
push eax
push esi
push edi
call fcn.00406340
mov ebx, eax
push ebx
push edi
call fcn.004062d0
add esp, 0x14
test eax, eax
je 0x41090c
push ebx
push edi
call fcn.004062d0
add esp, 8
cmp eax, 3
jne 0x410921
mov eax, dword [0x46b1e4]
test eax, eax
je 0x410921
mov edx, esi
shr edx, 5
mov eax, dword [eax + edx*4]
mov ecx, esi
and ecx, 0x1f
shr eax, cl
test al, 1
jne 0x410921
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x28]
inc esi
inc eax
cmp eax, ecx
mov dword [ebp - 0x30], eax
jl 0x410892
jmp 0x410935
push str.Poor
jmp 0x41092d
push str.Hopeless
lea ecx, [ebp - 0x24]
call fcn.00434f6c
mov edx, dword [ebp - 0x20]
mov cl, byte [edx + 0xb]
xor eax, eax
test cl, 1
je 0x410947
mov eax, 1
test cl, 2
je 0x41094f
or eax, 2
test cl, 4
je 0x410957
or eax, 4
test cl, 0x20
je 0x41095f
or eax, 0x20
mov ecx, dword [ebp - 0x18]
mov edx, dword [edx + 0x1c]
push ecx
lea ecx, [ebp - 0x24]
push ecx
lea ecx, [ebp - 0x98]
push ecx
push eax
mov eax, dword [ebp + 0x14]
push edx
mov edx, dword [ebp + 8]
push eax
lea ecx, [ebp - 0x14]
push ecx
push edx
call fcn.0040e860
add esp, 0x20
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 1
call fcn.00434de3
mov ecx, dword [ebp - 0x40]
mov edi, dword [ebp - 0x20]
inc ecx
add edi, 0x20
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x20], edi
jmp 0x40fe3e