Function at 0x40a729
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5284db
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xe8
mov eax, dword [ebp + 8]
mov eax, dword [eax]
push ebx
push esi
mov ebx, ecx
push edi
mov dword [esp + 0x20], ebx
test eax, eax
je 0x40a765
push 1
push eax
call dword [sym.imp.GDI32.dll_SetBkMode]
lea eax, [esp + 0x44]
push eax
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_GetClientRect]
lea esi, [esp + 0x44]
lea edi, [esp + 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 8]
mov eax, dword [esi]
lea ecx, [ebx + 0xb0]
mov edx, dword [ecx]
lea edi, [esp + 0x44]
push edi
push eax
mov dword [esp + 0x5c], ecx
call dword [edx + 0x40]
cmp dword [ebx + 0x124], 0
je 0x40a7ce
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x10]
push eax
push esi
push ebx
mov dword [esp + 0x20], 0x60
mov dword [esp + 0x28], 0x86
call fcn.0040bb03
call fcn.00404c11
push dword [eax + 4]
lea eax, [esp + 0x48]
push eax
push ebx
mov ebx, esi
call fcn.0040b558
sub esp, 0x18
mov eax, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00404c11
mov ecx, eax
call fcn.00415c6e
sub esp, 0x10
mov edi, esp
lea esi, [esp + 0x6c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.0040e5d5
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x10], 0x16
xor ecx, ecx
cmp dword [ebx + 8], 0x5776c8
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0x60
lea esi, [esp + 0x10]
lea edi, [esp + 0x58]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jne 0x40aa49
mov eax, dword [ebx + 0xc]
cmp dword [eax], 2
jne 0x40a860
mov eax, dword [ebx + 4]
push ecx
lea ecx, [esp + 0x5c]
add eax, 4
push ecx
push dword [eax]
call dword [sym.imp.USER32.dll_InvalidateRect]
xor ecx, ecx
xor eax, eax
cmp eax, ecx
je 0x40ab58
test byte [0x580f7c], 1
mov dword [esp + 0x78], 0x581be4
mov dword [esp + 0x7c], 0x581c84
mov dword [esp + 0x80], 0x581c44
mov dword [esp + 0x84], 0x581c24
mov dword [esp + 0x88], ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], 0x581c64
mov dword [esp + 0x98], ecx
mov dword [esp + 0x9c], 0x581c04
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa8], 0x5817dc
mov dword [esp + 0xac], ecx
jne 0x40aa69
or dword [0x580f7c], 1
mov dword [esp + 0xfc], ecx
push 0x53f228
mov ecx, 0x580f44
call fcn.00401f01
push 0x53f21c
mov ecx, 0x580f48
mov byte [esp + 0x100], 1
call fcn.00401f01
push 0x53f214
mov ecx, 0x580f4c
mov byte [esp + 0x100], 2
call fcn.00401f01
push 0x53f20c
mov ecx, 0x580f50
mov byte [esp + 0x100], 3
call fcn.00401f01
push 0x53f200
mov ecx, 0x580f54
mov byte [esp + 0x100], 4
call fcn.00401f01
push str.5uq_
mov ecx, 0x580f58
mov byte [esp + 0x100], 5
call fcn.00401f01
push 0x53f1e8
mov ecx, 0x580f5c
mov byte [esp + 0x100], 6
call fcn.00401f01
push 0x53f1dc
mov ecx, 0x580f60
mov byte [esp + 0x100], 7
call fcn.00401f01
push 0x53f1d0
mov ecx, 0x580f64
mov byte [esp + 0x100], 8
call fcn.00401f01
push 0x53f1c4
mov ecx, 0x580f68
mov byte [esp + 0x100], 9
call fcn.00401f01
mov esi, 0x537290
push esi
mov ecx, 0x580f6c
mov byte [esp + 0x100], 0xa
call fcn.00401f01
push esi
mov ecx, 0x580f70
mov byte [esp + 0x100], 0xb
call fcn.00401f01
push 0x53f1b8
mov ecx, 0x580f74
mov byte [esp + 0x100], 0xc
call fcn.00401f01
push 0x53f1b0
mov ecx, 0x580f78
mov byte [esp + 0x100], 0xd
call fcn.00401f01
push 0x529002
call fcn.004e92a1
or dword [esp + 0x100], 0xffffffff
pop ecx
jmp 0x40aa6e
cmp dword [0x5776c8], ecx
jl 0x40a860
lea eax, [esp + 0x10]
push eax
push ebx
call fcn.0041fb61
pop ecx
pop ecx
xor ecx, ecx
jmp 0x40a862
mov esi, 0x537290
mov edi, 0x5817fc
call fcn.00401ffb
mov eax, dword [0x581808]
and dword [esp + 0x40], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x16
mov dword [esp + 0x14], 0x11
jmp 0x40aa9c
mov eax, dword [esp + 0x28]
xor ecx, ecx
cmp dword [esp + 0x40], ecx
jle 0x40aaa6
mov ecx, eax
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
add ecx, eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax*4 + 0x569b6c]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x24], eax
call fcn.00401ffb
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [0x58180c]
add eax, 0x11
mov dword [esp + 0x1c], eax
mov ecx, ebx
lea eax, [esp + 0x58]
call fcn.0041fc46
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
xor eax, eax
cmp dword [ecx + 0x124], edx
setne al
dec eax
and eax, 3
inc eax
push eax
mov eax, 0xffffff
push eax
push eax
push ecx
lea eax, [edx*4 + 0x580f44]
mov dword [esp + 0x1c], esp
mov ecx, esp
push eax
call fcn.004015d6
mov eax, dword [esp + 0x34]
push edi
push dword [esp + eax*4 + 0x8c]
lea edx, [esp + 0x28]
lea ecx, [esp + 0x70]
call fcn.00420b13
add esp, 0x18
test eax, eax
jne 0x40b07d
inc dword [esp + 0x40]
cmp dword [esp + 0x40], 6
jl 0x40aa98
xor ecx, ecx
mov eax, dword [esp + 0x38]
add dword [esp + 0x34], 3
sub eax, 4
cmp dword [ebx + 8], 0x5776c8
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0xe1
lea edx, [eax - 0x1f4]
mov dword [esp + 0x10], edx
lea esi, [esp + 0x10]
lea edi, [esp + 0x58]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [esp + 0x38], eax
movsd dword es:[edi], dword [esi]
jne 0x40b1c3
mov eax, dword [ebx + 0xc]
cmp dword [eax], ecx
jne 0x40abb8
mov eax, dword [ebx + 4]
push ecx
lea ecx, [esp + 0x5c]
add eax, 4
push ecx
push dword [eax]
call dword [sym.imp.USER32.dll_InvalidateRect]
xor ecx, ecx
xor eax, eax
cmp eax, ecx
je 0x40ae83
mov edi, 0x58181c
call fcn.00401ffb
mov ebx, dword [esp + 0x38]
sub ebx, dword [0x581828]
mov dword [esp + 0x30], ebx
call fcn.00401ffb
mov eax, dword [0x58182c]
mov ecx, dword [esp + 0x34]
add eax, ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x58]
call fcn.0041fc46
sub esp, 0x10
xor eax, eax
mov edi, esp
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea esi, [esp + 0x20]
movsd dword es:[edi], dword [esi]
push 0x666666
movsd dword es:[edi], dword [esi]
push eax
push 1
push ecx
movsd dword es:[edi], dword [esi]
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0x53f234
movsd dword es:[edi], dword [esi]
call fcn.00401f01
push ecx
mov dword [esp + 0x120], 0x16
mov ecx, esp
mov dword [esp + 0x4c], esp
xor esi, esi
push esi
call fcn.00401f01
or dword [esp + 0x120], 0xffffffff
lea eax, [esp + 0x7c]
push 0x58181c
push eax
lea ecx, [esp + 0x5c]
call fcn.0042085a
add esp, 0x2c
cmp eax, esi
je 0x40ac7f
mov eax, dword [esp + 0x20]
push esi
push esi
push 0x10
push dword [eax + 4]
call dword [sym.imp.USER32.dll_SendMessageW]
mov esi, 0x58183c
mov edi, esi
mov dword [esp + 0x38], ebx
call fcn.00401ffb
mov eax, dword [esp + 0x20]
sub ebx, dword [0x581848]
push 0xfffffffffffffff0
push dword [eax + 4]
mov dword [esp + 0x38], ebx
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov ecx, dword [ebp + 8]
mov edi, eax
lea eax, [esp + 0x58]
and edi, 0x1000000
call fcn.0041fc46
push ecx
mov ecx, esp
mov dword [esp + 0x10], esp
push 0x53f23c
call fcn.00401f01
push ecx
mov dword [esp + 0x104], 0x17
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x53f244
call fcn.00401f01
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0
mov byte [esp + 0x10c], 0x18
call fcn.00401f01
or dword [esp + 0x108], 0xffffffff
push edi
push 0x58185c
push esi
lea edx, [esp + 0x48]
lea ecx, [esp + 0x70]
call fcn.00420d8d
add esp, 0x18
test eax, eax
je 0x40ad2d
mov esi, dword [esp + 0x20]
push 1
call fcn.00409854
mov edi, 0x58187c
mov dword [esp + 0x38], ebx
call fcn.00401ffb
sub ebx, dword [0x581888]
mov ecx, dword [ebp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 0x30], ebx
call fcn.0041fc46
sub esp, 0x10
mov edi, esp
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea esi, [esp + 0x20]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x666666
movsd dword es:[edi], dword [esi]
xor esi, esi
push esi
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0x53f8d0
call fcn.00401f01
push ecx
mov dword [esp + 0x120], 0x19
mov ecx, esp
mov dword [esp + 0x4c], esp
push esi
call fcn.00401f01
or dword [esp + 0x120], 0xffffffff
lea eax, [esp + 0x7c]
push 0x58187c
push eax
lea ecx, [esp + 0x5c]
call fcn.0042085a
add esp, 0x2c
cmp eax, esi
je 0x40add4
mov eax, dword [esp + 0x20]
push 6
push dword [eax + 4]
call dword [sym.imp.USER32.dll_ShowWindow]
mov edi, 0x58189c
mov dword [esp + 0x38], ebx
call fcn.00401ffb
sub ebx, dword [0x5818a8]
mov ecx, dword [ebp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 0x30], ebx
call fcn.0041fc46
sub esp, 0x10
mov edi, esp
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], esi
lea esi, [esp + 0x20]
movsd dword es:[edi], dword [esi]
push 0x666666
movsd dword es:[edi], dword [esi]
push 0
push 1
push ecx
movsd dword es:[edi], dword [esi]
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0x53f24c
movsd dword es:[edi], dword [esi]
call fcn.00401f01
push ecx
mov dword [esp + 0x120], 0x1a
mov ecx, esp
mov dword [esp + 0x4c], esp
push 0
call fcn.00401f01
or dword [esp + 0x120], 0xffffffff
lea eax, [esp + 0x7c]
push 0x58189c
push eax
lea ecx, [esp + 0x5c]
call fcn.0042085a
add esp, 0x2c
test eax, eax
je 0x40ae80
sub esp, 0x10
mov edi, esp
lea esi, [esp + 0x40]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x30]
call fcn.00409cba
mov ebx, dword [ebp + 8]
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x44]
mov esi, 0x581cc4
mov edi, esi
mov dword [esp + 0xc], eax
call fcn.00401ffb
mov eax, dword [esp + 0xc]
sub eax, dword [0x581cd0]
mov edi, 0x581d64
sub eax, 0x14
mov dword [esp + 0x24], eax
call fcn.00401ffb
mov eax, dword [0x581d74]
mov edi, esi
mov dword [esp + 0xc], eax
call fcn.00401ffb
mov eax, dword [esp + 0xc]
sub eax, dword [0x581cd4]
mov ecx, ebx
cdq
sub eax, edx
mov edi, eax
sar edi, 1
add edi, 0x2c
lea eax, [esp + 0xb0]
mov dword [esp + 0x2c], edi
call fcn.0041fc46
xor eax, eax
cmp eax, esi
je 0x40af1d
push dword [esp + 0x24]
lea eax, [esp + 0xb4]
push eax
mov ebx, esi
mov ecx, edi
call fcn.004213a8
pop ecx
pop ecx
test eax, eax
je 0x40af1a
mov edi, dword [esp + 0x20]
call fcn.0040dd28
mov edi, dword [esp + 0x2c]
mov ebx, dword [ebp + 8]
mov eax, dword [esp + 0x24]
add edi, 0xa
mov dword [esp + 0x2c], edi
mov dword [esp + 0x14], edi
add edi, 0x14
sub eax, 0x19
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], eax
add eax, 0x14
cmp dword [ebx + 8], 0x5776c8
mov dword [esp + 0x18], eax
lea esi, [esp + 0x10]
lea edi, [esp + 0x58]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jne 0x40b1e3
mov eax, dword [ebx + 0xc]
cmp dword [eax], 6
jne 0x40af7b
mov eax, dword [ebx + 4]
push 0
lea ecx, [esp + 0x5c]
add eax, 4
push ecx
push dword [eax]
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
test eax, eax
je 0x40afdc
mov eax, dword [esp + 0x20]
cmp dword [eax + 0x7e4], 0
je 0x40afdc
mov ecx, ebx
lea eax, [esp + 0xd0]
call fcn.0041fc46
xor ecx, ecx
mov eax, 0x581594
cmp ecx, eax
je 0x40afdc
push dword [esp + 0x24]
lea ecx, [esp + 0xd4]
push ecx
mov ecx, dword [esp + 0x34]
mov ebx, eax
call fcn.004213a8
pop ecx
pop ecx
test eax, eax
je 0x40afd9
mov eax, dword [esp + 0x20]
push 0x537290
push dword [eax + 0x6b0]
call dword [sym.imp.USER32.dll_SetWindowTextW]
mov ebx, dword [ebp + 8]
cmp dword [ebx + 8], 0x5776c8
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
lea esi, [edx - 0x29e]
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
lea ecx, [eax - 0x1e]
mov dword [esp + 0x14], ecx
lea esi, [esp + 0x10]
lea edi, [esp + 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jne 0x40b202
mov eax, dword [ebx + 0xc]
cmp dword [eax], 5
jne 0x40b033
mov eax, dword [ebx + 4]
push 0
lea ecx, [esp + 0x34]
add eax, 4
push ecx
push dword [eax]
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
test eax, eax
je 0x40b3c8
test byte [0x580f7c], 2
jne 0x40b230
or dword [0x580f7c], 2
push 0x20
mov dword [esp + 0x100], 0x1b
call fcn.004ea1a3
pop ecx
test eax, eax
je 0x40b221
push 4
mov ecx, 0x7d4
call fcn.00412690
jmp 0x40b223
mov edi, dword [esp + 0x20]
lea eax, [esp + 0x58]
push eax
mov byte [edi + 0x918], 0
call fcn.00404c11
mov ecx, eax
call fcn.00415c6e
cmp dword [esp + 0x24], 0
jne 0x40b12a
push esi
lea ecx, [esp + 0x5c]
mov dword [esp + 0x100], 0xe
call fcn.00411f24
test eax, eax
je 0x40b0cd
lea eax, [esp + 0x58]
lea ecx, [edi + 0x928]
push eax
call fcn.00404918
push ecx
mov ecx, esp
mov dword [esp + 0x58], esp
push esi
call fcn.00401f01
push 0
push 0
push ecx
mov byte [esp + 0x10c], 0xf
mov ecx, esp
mov dword [esp + 0x1c], esp
push esi
call fcn.00401f01
push 0x333333
push ecx
mov byte [esp + 0x114], 0x10
lea eax, [edi + 0x928]
mov dword [esp + 0x40], esp
mov ecx, esp
push eax
call fcn.004015d6
mov byte [esp + 0x114], 0x11
call fcn.00404c11
mov byte [esp + 0x114], 0xe
jmp 0x40b19a
lea eax, [esp + 0x58]
lea ecx, [edi + 0x928]
push eax
mov dword [esp + 0x100], 0x12
call fcn.00404918
push ecx
mov ecx, esp
mov dword [esp + 0x58], esp
push esi
call fcn.00401f01
push 0
push 0
push ecx
mov byte [esp + 0x10c], 0x13
mov ecx, esp
mov dword [esp + 0x1c], esp
push esi
call fcn.00401f01
push 0x333333
push ecx
mov byte [esp + 0x114], 0x14
mov ecx, esp
mov dword [esp + 0x40], esp
push esi
call fcn.00401f01
mov byte [esp + 0x114], 0x15
call fcn.00404c11
mov byte [esp + 0x114], 0x12
mov esi, eax
call fcn.00415cd3
lea esi, [esp + 0x58]
call fcn.00408350
push dword [esp + 0x24]
push 0
push 0x7f7
push dword [edi + 4]
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x40b3dd
cmp dword [0x5776c8], ecx
jl 0x40abb8
lea eax, [esp + 0x10]
push eax
push ebx
call fcn.0041fb61
pop ecx
pop ecx
xor ecx, ecx
jmp 0x40abba
cmp dword [0x5776c8], 0
jl 0x40af7b
lea eax, [esp + 0x10]
push eax
push ebx
call fcn.0041fb61
pop ecx
pop ecx
jmp 0x40af7d
cmp dword [0x5776c8], 0
jl 0x40b033
lea eax, [esp + 0x10]
push eax
push ebx
call fcn.0041fb61
pop ecx
pop ecx
jmp 0x40b035
xor eax, eax
or dword [esp + 0xfc], 0xffffffff
mov dword [0x580f40], eax
test byte [0x580f7c], 4
jne 0x40b274
or dword [0x580f7c], 4
push 0x20
mov dword [esp + 0x100], 0x1c
call fcn.004ea1a3
pop ecx
test eax, eax
je 0x40b265
push 1
mov ecx, 0x5ce
call fcn.00412690
jmp 0x40b267
xor eax, eax
or dword [esp + 0xfc], 0xffffffff
mov dword [0x580f3c], eax
mov esi, dword [0x580f40]
mov edi, esi
call fcn.00401ffb
mov edi, dword [0x580f40]
mov esi, dword [esi + 0xc]
call fcn.00401ffb
mov edx, dword [esp + 0x50]
mov eax, edi
mov edi, dword [eax + 0xc]
mov eax, dword [esp + 0x4c]
mov ecx, eax
sub ecx, esi
dec ecx
sub eax, edi
dec ecx
lea esi, [edx - 0x1d]
sub eax, 0xd4
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
mov dword [esp + 0x10], eax
lea eax, [esp + 0x34]
push eax
push ebx
push dword [esp + 0x2c]
call fcn.0040c11e
push dword [esp + 0xc]
mov eax, dword [esp + 0x34]
lea esi, [esp + 0x34]
lea edi, [esp + 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
add eax, 0xffffffe2
movsd dword es:[edi], dword [esi]
push ebx
push dword [esp + 0x28]
mov dword [esp + 0x24], eax
add eax, 0xfffffea2
lea ebx, [esp + 0x1c]
mov dword [esp + 0x1c], eax
call fcn.0040cac3
mov ecx, dword [ebp + 8]
lea eax, [esp + 0x78]
call fcn.0041fc46
push 0
push 0xffffffffffffffff
push 1
push 0x787878
push 0x580fe0
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov esi, 0x537290
push esi
call fcn.00401f01
push ecx
mov dword [esp + 0x118], 0x1d
mov ecx, esp
mov dword [esp + 0x44], esp
push esi
call fcn.00401f01
mov byte [esp + 0x118], 0x1e
mov edi, dword [0x580f40]
mov esi, edi
call fcn.00401ffb
mov edi, dword [0x580f40]
mov esi, dword [esi + 0x10]
mov ebx, edi
call fcn.00401ffb
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
mov ebx, dword [ebx + 0xc]
mov eax, ecx
sub eax, esi
mov esi, edx
push dword [0x580f40]
or dword [esp + 0x11c], 0xffffffff
mov dword [esp + 0x34], eax
lea eax, [esp + 0x98]
mov dword [esp + 0x3c], ecx
sub esi, ebx
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0x34], esi
mov dword [esp + 0x3c], edx
call fcn.004209d2
add esp, 0x24
test eax, eax
je 0x40b3c5
mov edi, dword [esp + 0x20]
call fcn.004096f5
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx]
test ebx, ebx
je 0x40b3dd
mov ecx, dword [esp + 0x54]
lea eax, [esp + 0x44]
push eax
push ebx
call fcn.00414990
mov ecx, dword [esp + 0xf4]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 4