Function at 0x406990
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x38
push esi
push edi
mov edi, dword [0x4a4ba0]
mov dword [esp + 0x18], edi
mov edx, dword [edi + 0x2ef8]
lea ecx, [edx - 1]
mov dword [esp + 0x14], ecx
test ecx, ecx
js 0x406a30
lea eax, [ecx + ecx*4]
shl eax, 2
mov dword [esp + 0x1c], eax
mov edx, dword [edi + 0x2f00]
cmp dword [eax + edx + 4], 7
jne 0x406a1a
mov ecx, eax
mov esi, edx
sub ecx, esi
mov eax, 0x66666667
add ecx, edx
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [ecx + ecx*4]
lea edx, [esi + eax*4]
mov eax, dword [edi + 0x2ef8]
sub eax, ecx
lea eax, [eax + eax*4]
lea eax, [eax*4 - 0x14]
push eax
lea eax, [edx + 0x14]
push eax
push edx
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [esp + 0x28]
add esp, 0xc
dec dword [edi + 0x2ef8]
mov ecx, dword [esp + 0x14]
mov edx, dword [edi + 0x2ef8]
dec ecx
sub eax, 0x14
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
test ecx, ecx
jns 0x4069c0
xor esi, esi
test edx, edx
jle 0x406a6c
xor ecx, ecx
mov dword [esp + 0x1c], ecx
nop dword [eax]
mov eax, dword [edi + 0x2f00]
add eax, ecx
cmp dword [eax + 4], 0
jne 0x406a5c
push eax
mov eax, dword [eax + 0xc]
push edi
call eax
mov ecx, dword [esp + 0x24]
add esp, 8
inc esi
add ecx, 0x14
mov dword [esp + 0x1c], ecx
cmp esi, dword [edi + 0x2ef8]
jl 0x406a40
mov esi, dword [0x4a4ba0]
cmp byte [esi + 0xb4], 0
je 0x406a88
test byte [esi + 0xc], 2
jne 0x406a88
mov byte [esi + 0xb4], 0
cmp byte [esi + 0x2ec1], 0
jne 0x406aea
mov ecx, dword [esi + 0x20]
test ecx, ecx
je 0x406ae3
push ecx
lea eax, [esp + 0x20]
mov dword [esp + 0x20], 0
push eax
call fcn.00403ac0
add esp, 8
mov dword [esp + 0x3c], eax
test eax, eax
je 0x406ae3
mov edx, dword [esp + 0x1c]
mov ecx, eax
call fcn.00413000
mov ecx, dword [0x4a4ba0]
test ecx, ecx
je 0x406ad1
dec dword [ecx + 0x370]
push dword [0x4a4b98]
push dword [esp + 0x40]
call fcn.00403270
add esp, 8
mov byte [esi + 0x2ec1], 1
movss xmm0, dword [esi + 0x2ec4]
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x406b86
subss xmm0, dword [esi + 0x18]
comiss xmm1, xmm0
movss dword [esi + 0x2ec4], xmm0
jb 0x406b86
mov eax, dword [esi + 0x20]
mov dword [esp + 0x3c], eax
test eax, eax
je 0x406b75
mov eax, dword [0x4a4ba0]
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
mov dword [eax + 0x2ec4], 0
call fcn.00413310
mov ecx, dword [esp + 0x3c]
mov edx, 0x45e7b0
mov dword [esp + 0x20], eax
call fcn.004039c0
mov dword [esp + 0x3c], eax
test eax, eax
je 0x406b7c
push eax
push dword [esp + 0x20]
push 1
push dword [esp + 0x2c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push dword [esp + 0x4c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
jmp 0x406b7c
mov byte [esi + 0x358], 1
mov dword [esi + 0x2ec4], 0
movss xmm1, dword [edi + 0x18]
inc dword [edi + 0x1a10]
cvtps2pd xmm0, xmm1
mov byte [edi + 0x1a1c], 1
mov dword [edi + 0x2e90], 0
mov dword [edi + 0x1a68], 0
addsd xmm0, qword [edi + 0x1a08]
movsd qword [edi + 0x1a08], xmm0
mov ecx, dword [edi + 0x2ea8]
test ecx, ecx
jns 0x406bea
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
xor ecx, ecx
test eax, eax
cmovg ecx, eax
push ecx
lea ecx, [edi + 0x2ea4]
call fcn.00414230
movss xmm1, dword [edi + 0x18]
mov dword [edi + 0x2ea4], 0
movaps xmm0, xmm1
mov eax, dword [edi + 0x312c]
mov ecx, 0x78
movss xmm3, dword [0x4978f8]
xorps xmm2, xmm2
subss xmm0, dword [edi + eax*4 + 0x2f4c]
addss xmm0, dword [edi + 0x3130]
movss dword [edi + 0x3130], xmm0
movss dword [edi + eax*4 + 0x2f4c], xmm1
mov eax, dword [edi + 0x312c]
inc eax
movss xmm1, dword [edi + 0x3130]
cdq
idiv ecx
comiss xmm1, xmm2
mov dword [edi + 0x312c], edx
movss xmm0, dword [0x497b30]
movss dword [esp + 0x14], xmm0
jbe 0x406c69
divss xmm1, dword [0x497aec]
movaps xmm0, xmm3
divss xmm0, xmm1
mov eax, dword [edi + 0x98]
mov esi, dword [0x4a4ba0]
movss dword [edi + 0x35c], xmm0
mov byte [eax], 1
mov ecx, dword [esi + 0xa4]
mov dword [esp + 0x1c], ecx
test ecx, ecx
jne 0x406c9d
mov eax, dword [esi + 0x98]
mov eax, dword [eax + 0x3c]
mov ecx, dword [eax]
mov dword [esp + 0x1c], ecx
mov edx, dword [esi + 0x1a6c]
movaps xmm0, xmm3
mov dword [esi + 0x192c], ecx
movss xmm1, dword [ecx + 0x10]
mulss xmm1, dword [esi + 0x9c]
mulss xmm1, dword [ecx + 0x40]
maxss xmm0, xmm1
movss dword [esi + 0x1934], xmm0
test edx, edx
je 0x406cf7
mov eax, dword [0x4a4ba0]
movss xmm0, dword [edx + 0x280]
mulss xmm0, dword [eax + 0x1934]
mov eax, dword [edx + 0x31c]
test eax, eax
je 0x406cfa
mulss xmm0, dword [eax + 0x280]
jmp 0x406cfa
xorps xmm0, xmm0
movss dword [esi + 0x1930], xmm0
mov edx, dword [ecx + 0x30]
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov eax, dword [edx + 0x2c]
mov ecx, dword [edx + 0x30]
mov dword [esi + 0x1938], eax
lea eax, [edx + 0x58]
mov dword [esi + 0x1a04], eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x1940], eax
movss dword [esi + 0x1944], xmm0
mov dword [esi + 0x193c], ecx
movss xmm0, dword [edi + 0x10]
mov eax, dword [edi + 0x15d4]
movss xmm1, dword [edi + 0x15d8]
movss dword [esp + 0x28], xmm0
movss xmm0, dword [edi + 0x14]
movss dword [esp + 0x2c], xmm0
movups xmm0, xmmword [esp + 0x20]
mov dword [edi + 0x1948], eax
movups xmmword [edi + 0x1950], xmm0
movss xmm0, dword [edi + 0x194c]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x406df9
movss dword [edi + 0x194c], xmm1
xor esi, esi
movd xmm1, esi
cvtdq2ps xmm1, xmm1
movaps xmm0, xmm1
subss xmm0, dword [edi + 0x194c]
divss xmm0, xmm1
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_acos_precise
movss xmm1, dword [0x497aa0]
cvtsd2ss xmm0, xmm0
divss xmm1, xmm0
cvttss2si edx, xmm1
cmp edx, 0xc
jge 0x406dd1
mov edx, 0xc
jmp 0x406ddf
cmp edx, 0x200
mov eax, 0x200
cmovg edx, eax
mov ecx, 0xff
movzx eax, dl
cmp edx, ecx
cmovl ecx, eax
mov byte [edi + esi + 0x19c4], cl
inc esi
cmp esi, 0x40
jl 0x406d93
xor edx, edx
mov dword [edi + 0x1960], 0
cmp byte [edi + 0x15d0], dl
je 0x406e1c
mov dword [edi + 0x1960], 1
mov edx, 1
cmp byte [edi + 0x15d1], 0
mov ecx, edx
je 0x406e3f
mov eax, dword [edi + 0x192c]
mov eax, dword [eax + 0x30]
test byte [eax + 4], 4
jne 0x406e3f
or ecx, 2
mov dword [edi + 0x1960], ecx
cmp byte [edi + 0x15d2], 0
je 0x406e51
or ecx, 4
mov dword [edi + 0x1960], ecx
test byte [edi + 0xc], 8
je 0x406e60
or ecx, 8
mov dword [edi + 0x1960], ecx
lea esi, [edi + 0x1d48]
mov ecx, esi
call fcn.0041c500
mov eax, dword [edi + 0x98]
mov edx, dword [esi + 0x48]
mov ecx, dword [esi + 0x4c]
mov eax, dword [eax + 8]
mov dword [esp + 0x20], eax
cmp edx, ecx
jne 0x406eb2
inc edx
mov dword [esp + 0x3c], edx
test ecx, ecx
je 0x406e9c
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x3c]
sar eax, 1
add eax, ecx
jmp 0x406ea1
mov eax, 8
cmp eax, edx
lea ecx, [esi + 0x48]
cmovg edx, eax
push edx
call fcn.00414230
mov edx, dword [esi + 0x48]
mov eax, dword [esi + 0x50]
mov ecx, dword [esp + 0x20]
mov dword [eax + edx*4], ecx
inc dword [esi + 0x48]
lea esi, [edi + 0x1d48]
mov dword [esi + 0x70], ecx
mov ecx, esi
call fcn.0041c950
mov eax, dword [esi + 0x2c]
movss xmm0, dword [eax + 0x20]
movss xmm2, dword [eax + 0x18]
comiss xmm2, xmm0
movss xmm3, dword [eax + 0x24]
movss xmm1, dword [eax + 0x1c]
movss dword [esp + 0x20], xmm2
movss dword [esp + 0x24], xmm1
movss dword [esp + 0x28], xmm0
movss dword [esp + 0x2c], xmm3
jb 0x406f09
movss dword [esp + 0x28], xmm2
comiss xmm1, xmm3
jb 0x406f14
movss dword [esp + 0x2c], xmm1
mov edx, dword [esi + 0x3c]
mov ecx, dword [esi + 0x40]
cmp edx, ecx
jne 0x406f4c
inc edx
mov dword [esp + 0x3c], edx
test ecx, ecx
je 0x406f36
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x3c]
sar eax, 1
add eax, ecx
jmp 0x406f3b
mov eax, 8
cmp eax, edx
lea ecx, [esi + 0x3c]
cmovg edx, eax
push edx
call fcn.00423ed0
mov edx, dword [esi + 0x3c]
mov eax, dword [esi + 0x44]
lea ecx, [edi + 0x1d48]
movaps xmm0, xmmword [esp + 0x20]
add edx, edx
movups xmmword [eax + edx*8], xmm0
inc dword [esi + 0x3c]
movups xmmword [edi + 0x1da8], xmm0
call fcn.0041c8b0
lea ecx, [edi + 0x1dd8]
call fcn.0041c500
mov eax, dword [edi + 0x98]
lea ecx, [edi + 0x1e20]
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, dword [eax + 8]
mov dword [esp + 0x1c], eax
cmp edx, esi
jne 0x406fc9
lea ecx, [edx + 1]
test esi, esi
je 0x406fa8
mov eax, esi
cdq
sub eax, edx
sar eax, 1
add eax, esi
jmp 0x406fad
mov eax, 8
cmp eax, ecx
lea esi, [edi + 0x1dd8]
cmovg ecx, eax
push ecx
lea ecx, [esi + 0x48]
call fcn.00414230
mov edx, dword [esi + 0x48]
lea ecx, [esi + 0x48]
jmp 0x406fcf
lea esi, [edi + 0x1dd8]
mov eax, dword [ecx + 8]
mov edi, dword [esp + 0x1c]
mov dword [eax + edx*4], edi
mov eax, edi
inc dword [ecx]
mov ecx, esi
mov dword [esi + 0x70], eax
call fcn.0041c950
mov eax, dword [esi + 0x2c]
mov edi, dword [esp + 0x18]
movss xmm0, dword [eax + 0x20]
movss xmm2, dword [eax + 0x18]
comiss xmm2, xmm0
movss xmm3, dword [eax + 0x24]
movss xmm1, dword [eax + 0x1c]
movss dword [esp + 0x20], xmm2
movss dword [esp + 0x24], xmm1
movss dword [esp + 0x28], xmm0
movss dword [esp + 0x2c], xmm3
jb 0x407025
movss dword [esp + 0x28], xmm2
comiss xmm1, xmm3
jb 0x407030
movss dword [esp + 0x2c], xmm1
mov ecx, dword [esi + 0x3c]
mov eax, dword [esi + 0x40]
cmp ecx, eax
jne 0x40705f
inc ecx
test eax, eax
je 0x407049
cdq
sub eax, edx
sar eax, 1
add eax, dword [esi + 0x40]
jmp 0x40704e
mov eax, 8
cmp eax, ecx
cmovg ecx, eax
push ecx
lea ecx, [esi + 0x3c]
call fcn.00423ed0
mov ecx, dword [esi + 0x3c]
mov eax, dword [esi + 0x44]
add ecx, ecx
movaps xmm0, xmmword [esp + 0x20]
movups xmmword [eax + ecx*8], xmm0
inc dword [esi + 0x3c]
lea ecx, [edi + 0x1dd8]
movups xmmword [edi + 0x1e38], xmm0
call fcn.0041c8b0
mov esi, dword [0x4a4ba0]
mov dword [edi + 0x1d24], 0
mov eax, dword [edi + 0x1d24]
mov dword [edi + 0x1d28], 0
mov ecx, dword [edi + 0x1d28]
mov byte [edi + 0x1d00], 0
mov dword [edi + 0x1d04], 0
mov dword [edi + 0x1d0c], 0
mov dword [edi + 0x1d10], 0
mov dword [edi + 0x1d08], 0
mov dword [edi + 0x1d1c], eax
mov dword [edi + 0x1d20], ecx
mov dword [edi + 0x1d14], eax
mov dword [edi + 0x1d18], ecx
cmp byte [edi + 0x1e6c], 0
je 0x407123
mov eax, dword [edi + 0x1e84]
cmp eax, dword [edi + 0x1aa4]
jne 0x407123
cmp dword [esi + 0x1aa4], eax
jne 0x407114
mov dword [esi + 0x1aa8], eax
cmp dword [esi + 0x1adc], eax
jne 0x407123
mov byte [esi + 0x1ae0], 1
cmp dword [edi + 0x1a94], 0
mov eax, dword [edi + 0x1a90]
jne 0x40713e
mov dword [edi + 0x1a9c], 0
jmp 0x40714c
mov edx, eax
test eax, eax
je 0x407158
cmp dword [edi + 0x1aa4], eax
jne 0x407158
mov dword [edi + 0x1aa0], 0
mov edx, eax
movss xmm2, dword [edi + 0x18]
mov ecx, dword [edi + 0x1aa4]
test edx, edx
je 0x407191
movaps xmm0, xmm2
addss xmm0, dword [edi + 0x1a9c]
movss dword [edi + 0x1a9c], xmm0
cmp ecx, edx
je 0x407191
movaps xmm0, xmm2
addss xmm0, dword [edi + 0x1aa0]
movss dword [edi + 0x1aa0], xmm0
movaps xmm1, xmm2
mov al, byte [edi + 0x1a99]
mov dword [edi + 0x1a94], edx
mov edx, ecx
mov byte [edi + 0x1a9a], al
mov dword [edi + 0x1a90], 0
mov word [edi + 0x1a98], 0
mov byte [edi + 0x1a9b], 0
cmp dword [edi + 0x1aa8], ecx
je 0x4071e6
cmp dword [edi + 0x1adc], ecx
jne 0x4071e6
test ecx, ecx
je 0x4071e6
call fcn.004056c0
mov edx, dword [edi + 0x1aa4]
movss xmm1, dword [edi + 0x18]
test edx, edx
je 0x4071fd
movaps xmm0, xmm1
addss xmm0, dword [edi + 0x1aac]
movss dword [edi + 0x1aac], xmm0
mov eax, dword [edi + 0x1ad0]
addss xmm1, dword [edi + 0x1aec]
mov dword [edi + 0x1ae4], eax
mov al, byte [edi + 0x1ab4]
mov byte [edi + 0x1ae1], al
mov eax, dword [edi + 0x2e50]
movss dword [edi + 0x1aec], xmm1
mov dword [edi + 0x1adc], edx
mov dword [edi + 0x1aa8], 0
mov byte [edi + 0x1ab5], 0
mov byte [edi + 0x1ae0], 0
mov byte [edi + 0x1ab0], 0
test eax, eax
je 0x407262
cmp edx, eax
je 0x407262
mov dword [edi + 0x2e50], 0
test edx, edx
jne 0x40727e
mov dword [edi + 0x1ab8], edx
mov dword [edi + 0x1abc], edx
mov dword [edi + 0x1ac0], edx
mov dword [edi + 0x1ac4], edx
mov eax, dword [edi + 0x1ed0]
mov dword [edi + 0x1ed4], eax
xor eax, eax
mov dword [edi + 0x1ed0], 0
mov dword [edi + 0x1ecc], 0x7f7fffff
mov word [edi + 0x1e6d], 0
mov dword [edi + 0x1edc], 0
cmp byte [esi + 0xfc], al
movss xmm1, dword [0x497b3c]
setne al
mov ecx, eax
or ecx, 2
cmp byte [esi + 0xfd], 0
cmove ecx, eax
mov edx, ecx
or edx, 4
cmp byte [esi + 0xfe], 0
cmove edx, ecx
mov ecx, 0x200
mov eax, edx
or eax, 8
cmp byte [esi + 0xff], 0
cmove eax, edx
lea edx, [edi + 0x458]
mov dword [edi + 0x37c], eax
mov esi, edx
add edi, 0xc58
xor eax, eax
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x18]
cmp byte [esi + eax + 0x100], 0
je 0x407334
movss xmm0, dword [edx]
xorps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x40732d
xorps xmm0, xmm0
jmp 0x407337
addss xmm0, dword [esi + 0x18]
jmp 0x407337
movaps xmm0, xmm1
movss dword [edx], xmm0
inc eax
add edx, 4
cmp eax, 0x200
jl 0x407312
call fcn.004108e0
call fcn.00405f50
call fcn.004067c0
mov edi, dword [0x4a4ba0]
mov ecx, dword [edi + 0x1a7c]
test ecx, ecx
je 0x40744d
mov eax, dword [edi + 0x1aa4]
mov dword [edi + 0x1aa8], eax
cmp dword [edi + 0x1adc], eax
jne 0x407384
mov byte [edi + 0x1ae0], 1
cmp byte [edi + 0xec], 0
mov edx, dword [ecx + 0x320]
mov dword [esp + 0x3c], edx
je 0x40743c
movss xmm2, dword [edi + 0xe4]
movss xmm0, dword [0x497b60]
comiss xmm2, xmm0
movss xmm1, dword [edi + 0xe8]
jb 0x40743c
comiss xmm1, xmm0
jb 0x40743c
subss xmm2, dword [edi + 0x1ac8]
movss xmm0, dword [edx + 0xc]
subss xmm1, dword [edi + 0x1acc]
ucomiss xmm0, xmm2
movss dword [esp + 0x20], xmm2
movss dword [esp + 0x24], xmm1
lahf
test ah, 0x44
jp 0x4073f9
movss xmm0, dword [edx + 0x10]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x40742f
test dword [edx + 8], 0x100
jne 0x407417
xorps xmm0, xmm0
comiss xmm0, dword [edi + 0x2ec4]
jb 0x407417
mov eax, dword [edi + 0x1c]
mov dword [edi + 0x2ec4], eax
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x20]
push 1
call fcn.0040e490
mov ecx, dword [edi + 0x1a7c]
add esp, 4
call fcn.0040e010
mov edi, dword [0x4a4ba0]
jmp 0x407485
call fcn.004056c0
mov dword [edi + 0x1a7c], 0
jmp 0x407485
mov ecx, dword [edi + 0x1ad0]
test ecx, ecx
je 0x407485
mov eax, dword [edi + 0x1aa4]
cmp dword [ecx + 0x50], eax
jne 0x407485
mov dword [edi + 0x1aa8], eax
cmp dword [edi + 0x1adc], eax
jne 0x407477
mov byte [edi + 0x1ae0], 1
cmp byte [edi + 0xec], 0
jne 0x407485
call fcn.004056c0
mov edx, dword [edi + 0x1bac]
sub edx, 1
js 0x4074bb
mov eax, dword [edi + 0x1bb4]
lea ecx, [edx + edx*8]
lea eax, [eax + ecx*4]
add eax, 4
nop
mov ecx, dword [eax]
test ecx, ecx
je 0x4074b3
test dword [ecx + 8], 0x8000000
jne 0x40757d
sub eax, 0x24
sub edx, 1
jns 0x4074a0
cmp dword [esi + 0x1ccc], 0
xorps xmm6, xmm6
je 0x4074d8
movss xmm0, dword [esi + 0x1cdc]
comiss xmm0, xmm6
ja 0x407580
movss xmm0, dword [esi + 0x18]
mulss xmm0, dword [0x497ab4]
movss xmm1, dword [esi + 0x1d44]
subss xmm1, xmm0
maxss xmm1, xmm6
movss dword [esi + 0x1d44], xmm1
mov dword [esi + 0x1e68], 0
mov dword [esi + 0x313c], 0xffffffff
mov dword [esi + 0x3138], 0xffffffff
mov dword [esi + 0x3134], 0xffffffff
mov dword [esi + 0x2eb0], 0x3f800000
mov dword [esi + 0x2eb4], 0x3f800000
call fcn.00406310
mov edi, dword [0x4a4ba0]
mov eax, dword [edi + 0x1bc4]
test eax, eax
je 0x4075a2
cmp byte [eax + 0x8a], 0
je 0x4075a2
test dword [eax + 8], 0x40000
jne 0x4075a2
cmp byte [edi + 0xfc], 0
jne 0x4075a2
mov ecx, dword [edi + 0x34]
test ecx, ecx
js 0x4075a2
call fcn.004092a0
test al, al
je 0x4075a2
mov al, 1
jmp 0x4075a4
xorps xmm6, xmm6
movss xmm1, dword [esi + 0x18]
mulss xmm1, dword [0x497a9c]
addss xmm1, dword [esi + 0x1d44]
minss xmm1, dword [0x4978f8]
jmp 0x4074f5
xor al, al
cmp dword [edi + 0x1aa4], 0
mov byte [edi + 0x1cfc], al
jne 0x407609
test al, al
je 0x407609
cmp dword [edi + 0x1bc8], 0
mov eax, dword [edi + 0x1bc4]
mov dword [edi + 0x1ce8], eax
mov dword [edi + 0x1cf4], 0x7fffffff
je 0x4075f8
mov ecx, dword [edi + 0x1c10]
cmp ecx, 0x7fffffff
je 0x4075f8
xor edx, edx
mov eax, 2
cmp byte [edi + 0xfd], dl
cmovne eax, edx
add eax, ecx
jmp 0x407603
movzx eax, byte [edi + 0xfd]
neg eax
sbb eax, eax
mov dword [edi + 0x1cf8], eax
mov eax, dword [edi + 0x1ce8]
mov dword [edi + 0x1ce4], 0
mov dword [edi + 0x1cf0], 0x7fffffff
mov dword [edi + 0x1cec], 0x7fffffff
test eax, eax
je 0x4076a7
mov edx, dword [edi + 0x1cf4]
mov dword [edi + 0x1ce4], eax
cmp edx, 0x7fffffff
je 0x407663
mov ecx, dword [eax + 0x1a8]
cmp ecx, 0xffffffff
je 0x407663
inc ecx
lea eax, [ecx + edx]
cdq
idiv ecx
mov eax, dword [edi + 0x1ce8]
mov dword [edi + 0x1cec], edx
mov edx, dword [edi + 0x1cf8]
cmp edx, 0x7fffffff
je 0x407689
mov ecx, dword [eax + 0x1ac]
cmp ecx, 0xffffffff
je 0x407689
inc ecx
lea eax, [ecx + edx]
cdq
idiv ecx
mov dword [edi + 0x1cf0], edx
mov dword [edi + 0x1ce8], 0
mov dword [edi + 0x1cf8], 0x7fffffff
mov dword [edi + 0x1cf4], 0x7fffffff
mov dword [edi + 0x1c10], 0x7fffffff
cmp byte [esi + 0x1a1f], 0
jne 0x4076df
movss xmm0, dword [esi + 0xb8]
comiss xmm6, xmm0
ja 0x4076df
movsd xmm1, qword [esi + 0x1a08]
cvtpd2ps xmm1, xmm1
subss xmm1, xmm0
movss dword [esp + 0x14], xmm1
jmp 0x4076e7
movss xmm1, dword [0x497b30]
xor edi, edi
mov dword [esp + 0x1c], edi
cmp dword [esi + 0x1a2c], edi
je 0x4078a8
nop dword [eax]
mov eax, dword [esi + 0x1a34]
xor ecx, ecx
mov edi, dword [eax + edi*4]
mov al, byte [edi + 0x8a]
mov byte [edi + 0x8b], al
mov word [edi + 0x96], cx
mov byte [edi + 0x8a], cl
mov byte [edi + 0x8c], cl
test al, al
jne 0x40788d
cmp byte [edi + 0x360], cl
jne 0x40788d
comiss xmm1, dword [edi + 0x260]
jbe 0x40788d
mov ecx, dword [edi + 0x288]
mov byte [edi + 0x360], 1
mov eax, dword [ecx + 0x10]
mov dword [edi + 0x358], eax
mov eax, dword [ecx + 0x1c]
mov dword [edi + 0x35c], eax
mov ecx, dword [edi + 0xc8]
test ecx, ecx
je 0x4077b0
mov eax, dword [0x4a4ba0]
mov dword [edi + 0xc4], 0
mov dword [edi + 0xc0], 0
test eax, eax
je 0x407797
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
add esp, 8
mov dword [edi + 0xc8], 0
mov ecx, dword [edi + 0x288]
call fcn.0041c680
mov ecx, dword [edi + 0x190]
test ecx, ecx
je 0x407801
mov eax, dword [0x4a4ba0]
mov dword [edi + 0x18c], 0
mov dword [edi + 0x188], 0
test eax, eax
je 0x4077e8
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
add esp, 8
mov dword [edi + 0x190], 0
mov ecx, dword [edi + 0x1c4]
test ecx, ecx
je 0x407847
mov eax, dword [0x4a4ba0]
mov dword [edi + 0x1c0], 0
mov dword [edi + 0x1bc], 0
test eax, eax
je 0x40782e
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
add esp, 8
mov dword [edi + 0x1c4], 0
mov ecx, dword [edi + 0x1d0]
test ecx, ecx
je 0x40788d
mov eax, dword [0x4a4ba0]
mov dword [edi + 0x1cc], 0
mov dword [edi + 0x1c8], 0
test eax, eax
je 0x407874
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
add esp, 8
mov dword [edi + 0x1d0], 0
mov edi, dword [esp + 0x1c]
movss xmm1, dword [esp + 0x14]
inc edi
mov dword [esp + 0x1c], edi
cmp edi, dword [esi + 0x1a2c]
jne 0x407700
xor ecx, ecx
mov dword [esp + 0x20], ecx
cmp dword [esi + 0x1f28], ecx
jle 0x407a27
xor edx, edx
xorps xmm1, xmm1
mov dword [esp + 0x3c], edx
nop dword [eax]
nop word [eax + eax]
mov eax, dword [esi + 0x1f30]
movss xmm0, dword [eax + ecx*4]
comiss xmm0, xmm1
jb 0x407a0c
movss xmm2, dword [esp + 0x14]
comiss xmm2, xmm0
jbe 0x407a0c
mov edi, dword [esi + 0x1f08]
mov eax, dword [0x4a4ba0]
add edi, edx
mov dword [esp + 0x1c], eax
lea ecx, [edi + 0x1c4]
call fcn.0041ee10
mov ecx, dword [edi + 0x1ec]
test ecx, ecx
je 0x407955
mov eax, dword [0x4a4ba0]
mov dword [edi + 0x1e8], 0
mov dword [edi + 0x1e4], 0
test eax, eax
je 0x40793c
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
add esp, 8
mov dword [edi + 0x1ec], 0
mov dword [edi + 0x1f0], 0
mov byte [edi + 0x217], 1
mov ecx, dword [edi + 0x1c0]
test ecx, ecx
je 0x4079ac
mov eax, dword [0x4a4ba0]
mov dword [edi + 0x1bc], 0
mov dword [edi + 0x1b8], 0
test eax, eax
je 0x407993
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
add esp, 8
mov dword [edi + 0x1c0], 0
xor edx, edx
mov byte [edi + 0x221], 1
cmp dword [edi + 0x54], edx
jle 0x4079d5
xor ecx, ecx
or esi, 0xffffffff
nop
mov eax, dword [edi + 0xc]
lea ecx, [ecx + 0x68]
inc edx
mov word [eax + ecx - 0x18], si
cmp edx, dword [edi + 0x54]
jl 0x4079c0
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
xorps xmm1, xmm1
sub edi, dword [eax + 0x1f08]
mov eax, 0x76b981db
imul edi
mov eax, dword [esp + 0x1c]
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
mov eax, dword [eax + 0x1f30]
add ecx, edx
mov edx, dword [esp + 0x3c]
mov dword [eax + ecx*4], 0xbf800000
mov ecx, dword [esp + 0x20]
inc ecx
add edx, 0x228
mov dword [esp + 0x20], ecx
mov dword [esp + 0x3c], edx
cmp ecx, dword [esi + 0x1f28]
jl 0x4078d0
cmp byte [esi + 0x1a1f], 0
je 0x407ac6
mov edi, dword [0x4a4ba0]
mov eax, dword [edi + 0x1b9c]
test eax, eax
je 0x407a7b
mov dword [edi + 0x1b98], 0
mov dword [edi + 0x1b94], 0
test edi, edi
je 0x407a62
dec dword [edi + 0x370]
push dword [0x4a4b98]
push eax
call fcn.00403270
add esp, 8
mov dword [edi + 0x1b9c], 0
mov ecx, dword [edi + 0x1ba8]
test ecx, ecx
je 0x407ac1
mov eax, dword [0x4a4ba0]
mov dword [edi + 0x1ba4], 0
mov dword [edi + 0x1ba0], 0
test eax, eax
je 0x407aa8
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
add esp, 8
mov dword [edi + 0x1ba8], 0
call fcn.00426350
mov eax, dword [esi + 0x1bc4]
mov byte [esi + 0x1a1f], 0
test eax, eax
je 0x407b50
cmp byte [eax + 0x8b], 0
jne 0x407b50
mov eax, dword [0x4a4ba0]
mov ecx, dword [eax + 0x1a38]
sub ecx, 1
mov dword [esp + 0x3c], ecx
js 0x407b49
mov eax, dword [eax + 0x1a40]
lea eax, [eax + ecx*4]
mov dword [esp + 0x20], eax
mov edi, dword [eax]
test edi, edi
je 0x407b39
cmp byte [edi + 0x8b], 0
je 0x407b39
mov edx, dword [edi + 8]
mov eax, edx
and eax, 0x40200
cmp eax, 0x40200
setne cl
bt edx, 0x18
setae al
test al, cl
jne 0x407de2
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
dec ecx
sub eax, 4
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x20], eax
test ecx, ecx
jns 0x407b01
xor ecx, ecx
call fcn.0040e010
mov ecx, dword [esi + 0x1a54]
test ecx, ecx
jns 0x407b76
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
xor ecx, ecx
test eax, eax
cmovg ecx, eax
push ecx
lea ecx, [esi + 0x1a50]
call fcn.00414230
mov dword [esi + 0x1a50], 0
mov ecx, dword [esi + 0x1bbc]
test ecx, ecx
jns 0x407ba6
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
xor ecx, ecx
test eax, eax
cmovg ecx, eax
push ecx
lea ecx, [esi + 0x1bb8]
call fcn.00414720
lea edi, [esi + 0x1b94]
mov dword [esi + 0x1bb8], 0
mov ecx, dword [edi + 4]
test ecx, ecx
jns 0x407c4d
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
xor ecx, ecx
test eax, eax
cmovg ecx, eax
mov dword [esp + 0x20], ecx
cmp ecx, dword [edi + 4]
jle 0x407c4d
mov eax, dword [0x4a4ba0]
test eax, eax
je 0x407be9
inc dword [eax + 0x370]
push dword [0x4a4b98]
lea eax, [ecx*4]
push eax
call fcn.00403250
mov edx, dword [edi + 8]
add esp, 8
mov dword [esp + 0x3c], eax
test edx, edx
je 0x407c43
mov ecx, dword [edi]
shl ecx, 2
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [edi + 8]
add esp, 0xc
test ecx, ecx
je 0x407c30
mov eax, dword [0x4a4ba0]
test eax, eax
je 0x407c30
dec dword [eax + 0x370]
push dword [0x4a4b98]
push ecx
call fcn.00403270
mov eax, dword [esp + 0x44]
add esp, 8
mov dword [edi + 8], eax
mov eax, dword [esp + 0x20]
mov dword [edi + 4], eax
lea eax, [esp + 0x3c]
mov dword [edi], 0
push eax
mov ecx, edi
mov dword [esp + 0x40], 0
call fcn.00413fd0
push 0
lea ecx, [esi + 0x1ba0]
call fcn.00413f10
mov ecx, dword [esi + 0x1bc4]
xor dl, dl
call fcn.0040f570
mov edi, dword [0x4a4ba0]
cmp byte [edi + 0x2f34], 0
mov dword [edi + 0x2f38], 0
je 0x407d5a
mov eax, dword [edi + 0x6c]
mov ecx, dword [edi + 0x1a94]
mov dword [esp + 0x18], ecx
mov dword [edi + 0x1e68], 7
test eax, eax
js 0x407ccf
mov ecx, eax
call fcn.004092a0
mov ecx, dword [esp + 0x18]
test al, al
je 0x407ccf
mov byte [edi + 0x2f34], 0
movss xmm0, dword [edi + 0x3f4]
ucomiss xmm0, dword [0x497874]
lahf
test ah, 0x44
jp 0x407cf5
test ecx, ecx
je 0x407cf5
mov dword [edi + 0x2f38], ecx
mov byte [edi + 0x2f34], 0
or dword [edi + 0x1af0], 0x40
xor edx, edx
mov dword [edi + 0x1b44], 0x3f19999a
call fcn.0040f340
mov edi, dword [esp + 0x18]
push edi
push str.HoveredId:_0x_08X
call fcn.00427050
push str.Press_ESC_to_abort_picking.
call fcn.00427050
add esp, 0xc
xor ecx, ecx
mov eax, 0x10
test edi, edi
cmove ecx, eax
mov eax, dword [0x4a4ba0]
add eax, 0x15dc
add eax, ecx
push str.Click_to_break_in_debugger_
push eax
call fcn.004270d0
add esp, 8
call fcn.0040df80
mov edi, dword [0x4a4ba0]
mov byte [esi + 0x1a1d], 1
xor edx, edx
or dword [edi + 0x1af0], 2
mov ecx, str.DebugDefault
push 0
mov dword [edi + 0x1b10], 0x43c80000
mov dword [edi + 0x1b14], 0x43c80000
mov dword [edi + 0x1af8], 4
call fcn.0040bbc0
xor ecx, ecx
add esp, 4
mov dword [esp + 0x3c], ecx
cmp dword [esi + 0x2ef8], ecx
jle 0x407ddc
xor edi, edi
nop word [eax + eax]
mov eax, dword [esi + 0x2f00]
add eax, edi
cmp dword [eax + 4], 1
jne 0x407dcc
push eax
mov eax, dword [eax + 0xc]
push esi
call eax
mov ecx, dword [esp + 0x44]
add esp, 8
inc ecx
add edi, 0x14
mov dword [esp + 0x3c], ecx
cmp ecx, dword [esi + 0x2ef8]
jl 0x407db0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 0x32c]
test ecx, ecx
je 0x407df9
cmp byte [ecx + 0x8b], 0
jne 0x407b4b
mov ecx, edi
jmp 0x407b4b