Function at 0x408e30
Capabilities:
Write file on windows

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x28
push esi
mov esi, dword [0x4598f8]
push edi
xor edi, edi
mov dword [ebp - 8], esi
cmp dword [esi + 0x2e20], edi
jle 0x408e8c
xor ecx, ecx
mov dword [ebp - 4], ecx
mov eax, dword [esi + 0x2e28]
add eax, ecx
cmp dword [eax], 0
jne 0x408e7d
push eax
mov eax, dword [eax + 8]
push esi
call eax
mov ecx, dword [ebp - 4]
add esp, 8
inc edi
add ecx, 0x10
mov dword [ebp - 4], ecx
cmp edi, dword [esi + 0x2e20]
jl 0x408e63
mov edi, dword [0x4598f8]
cmp byte [edi + 0xb3], 0
je 0x408ea8
test byte [edi + 0xc], 2
jne 0x408ea8
mov byte [edi + 0xb3], 0
cmp byte [edi + 0x2df5], 0
jne 0x408f00
mov ecx, dword [edi + 0x20]
test ecx, ecx
je 0x408ef9
push ecx
lea eax, [ebp - 4]
mov dword [ebp - 4], 0
push eax
call fcn.00405f40
add esp, 8
mov dword [ebp - 0xc], eax
test eax, eax
je 0x408ef9
mov edx, dword [ebp - 4]
mov ecx, eax
call fcn.00414ca0
mov ecx, dword [0x4598f8]
test ecx, ecx
je 0x408eed
dec dword [ecx + 0x370]
push dword [ebp - 0xc]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov byte [edi + 0x2df5], 1
movss xmm0, dword [edi + 0x2df8]
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x408f8f
subss xmm0, dword [edi + 0x18]
comiss xmm1, xmm0
movss dword [edi + 0x2df8], xmm0
jb 0x408f8f
mov eax, dword [edi + 0x20]
mov dword [ebp - 0xc], eax
test eax, eax
je 0x408f7e
mov eax, dword [0x4598f8]
lea ecx, [ebp - 4]
mov dword [ebp - 4], 0
mov dword [eax + 0x2df8], 0
call fcn.00414f40
mov ecx, dword [ebp - 0xc]
mov edx, 0x43a79c
mov dword [ebp - 0x10], eax
call fcn.00405e70
mov dword [ebp - 0xc], eax
test eax, eax
je 0x408f85
push eax
push dword [ebp - 4]
push 1
push dword [ebp - 0x10]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push dword [ebp - 0xc]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
jmp 0x408f85
mov byte [edi + 0x358], 1
mov dword [edi + 0x2df8], 0
movss xmm1, dword [esi + 0x18]
inc dword [esi + 0x19b8]
cvtps2pd xmm0, xmm1
mov byte [esi + 0x19c4], 1
mov dword [esi + 0x2dc8], 0
mov dword [esi + 0x1a0c], 0
addsd xmm0, qword [esi + 0x19b0]
movsd qword [esi + 0x19b0], xmm0
mov ecx, dword [esi + 0x2ddc]
test ecx, ecx
jns 0x408ff3
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 + 0x2dd8]
call fcn.004159f0
movss xmm1, dword [esi + 0x18]
mov dword [esi + 0x2dd8], 0
movaps xmm0, xmm1
mov eax, dword [esi + 0x3050]
mov ecx, 0x78
movss xmm2, dword [0x43efc0]
subss xmm0, dword [esi + eax*4 + 0x2e70]
addss xmm0, dword [esi + 0x3054]
movss dword [esi + 0x3054], xmm0
movss dword [esi + eax*4 + 0x2e70], xmm1
mov eax, dword [esi + 0x3050]
inc eax
movss xmm1, dword [esi + 0x3054]
cdq
idiv ecx
comiss xmm1, dword [0x43ef54]
mov dword [esi + 0x3050], edx
movss xmm0, dword [0x43f0f8]
movss dword [ebp - 0xc], xmm0
jbe 0x409072
divss xmm1, dword [0x43f098]
movaps xmm0, xmm2
divss xmm0, xmm1
mov eax, dword [esi + 0x98]
movss dword [esi + 0x35c], xmm0
mov byte [eax], 1
mov eax, dword [0x4598f8]
mov ecx, dword [eax + 0xa4]
test ecx, ecx
jne 0x40909d
mov eax, dword [eax + 0x98]
mov eax, dword [eax + 0x3c]
mov ecx, dword [eax]
call fcn.0040ffc0
movss xmm0, dword [esi + 0x10]
mov eax, dword [esi + 0x15cc]
movss xmm1, dword [esi + 0x15d0]
movss dword [ebp - 0x18], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [ebp - 0x14], xmm0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
movups xmm0, xmmword [ebp - 0x20]
mov dword [esi + 0x18f0], eax
movups xmmword [esi + 0x18f8], xmm0
movss xmm0, dword [esi + 0x18f4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x409172
movss dword [esi + 0x18f4], xmm1
xor edi, edi
nop
movd xmm1, edi
cvtdq2ps xmm1, xmm1
addss xmm1, xmm2
movaps xmm0, xmm1
subss xmm0, dword [esi + 0x18f4]
divss xmm0, xmm1
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_acos_precise
movss xmm1, dword [0x43f058]
cvtsd2ss xmm0, xmm0
divss xmm1, xmm0
cvttss2si edx, xmm1
cmp edx, 0xc
jge 0x409142
mov edx, 0xc
jmp 0x409150
cmp edx, 0x200
mov eax, 0x200
cmovg edx, eax
movss xmm2, dword [0x43efc0]
mov ecx, 0xff
cmp edx, ecx
movzx eax, dl
cmovl ecx, eax
mov byte [esi + edi + 0x196c], cl
inc edi
cmp edi, 0x40
jl 0x409100
xor edx, edx
mov dword [esi + 0x1908], 0
cmp byte [esi + 0x15c8], dl
je 0x409195
mov dword [esi + 0x1908], 1
mov edx, 1
cmp byte [esi + 0x15c9], 0
mov ecx, edx
je 0x4091b8
mov eax, dword [esi + 0x18d4]
mov eax, dword [eax + 0x30]
test byte [eax + 4], 4
jne 0x4091b8
or ecx, 2
mov dword [esi + 0x1908], ecx
cmp byte [esi + 0x15ca], 0
je 0x4091ca
or ecx, 4
mov dword [esi + 0x1908], ecx
test byte [esi + 0xc], 8
je 0x4091d9
or ecx, 8
mov dword [esi + 0x1908], ecx
lea edi, [esi + 0x1ccc]
mov ecx, edi
call fcn.0041d7d0
mov eax, dword [esi + 0x98]
mov edx, dword [edi + 0x48]
mov ecx, dword [edi + 0x4c]
mov eax, dword [eax + 8]
mov dword [ebp - 4], eax
cmp edx, ecx
jne 0x409228
inc edx
mov dword [ebp - 0x10], edx
test ecx, ecx
je 0x409212
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [ebp - 0x10]
sar eax, 1
add eax, ecx
jmp 0x409217
mov eax, 8
cmp eax, edx
lea ecx, [edi + 0x48]
cmovg edx, eax
push edx
call fcn.004159f0
mov edx, dword [edi + 0x48]
mov eax, dword [edi + 0x50]
mov ecx, dword [ebp - 4]
mov dword [eax + edx*4], ecx
inc dword [edi + 0x48]
lea edi, [esi + 0x1ccc]
mov dword [edi + 0x70], ecx
mov ecx, edi
call fcn.0041dbe0
mov eax, dword [edi + 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 [ebp - 0x20], xmm2
movss dword [ebp - 0x1c], xmm1
movss dword [ebp - 0x18], xmm0
movss dword [ebp - 0x14], xmm3
jb 0x409279
movss dword [ebp - 0x18], xmm2
comiss xmm1, xmm3
jb 0x409283
movss dword [ebp - 0x14], xmm1
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + 0x40]
cmp eax, ecx
jne 0x4092bb
lea edx, [eax + 1]
mov dword [ebp - 0x10], edx
test ecx, ecx
je 0x4092a5
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [ebp - 0x10]
sar eax, 1
add eax, ecx
jmp 0x4092aa
mov eax, 8
cmp eax, edx
lea ecx, [edi + 0x3c]
cmovg edx, eax
push edx
call fcn.004242a0
mov eax, dword [edi + 0x3c]
movaps xmm0, xmmword [ebp - 0x20]
lea ecx, [esi + 0x1ccc]
shl eax, 4
add eax, dword [edi + 0x44]
movups xmmword [eax], xmm0
inc dword [edi + 0x3c]
movups xmmword [esi + 0x1d2c], xmm0
call fcn.0041db40
lea ecx, [esi + 0x1d58]
call fcn.0041d7d0
mov eax, dword [esi + 0x98]
lea ecx, [esi + 0x1da0]
mov edx, dword [ecx]
mov edi, dword [ecx + 4]
mov eax, dword [eax + 8]
mov dword [ebp - 4], eax
cmp edx, edi
jne 0x409336
lea ecx, [edx + 1]
test edi, edi
je 0x409315
mov eax, edi
cdq
sub eax, edx
sar eax, 1
add eax, edi
jmp 0x40931a
mov eax, 8
cmp eax, ecx
lea edi, [esi + 0x1d58]
cmovg ecx, eax
push ecx
lea ecx, [edi + 0x48]
call fcn.004159f0
mov edx, dword [edi + 0x48]
lea ecx, [edi + 0x48]
jmp 0x40933c
lea edi, [esi + 0x1d58]
mov eax, dword [ecx + 8]
mov esi, dword [ebp - 4]
mov dword [eax + edx*4], esi
mov eax, esi
inc dword [ecx]
mov ecx, edi
mov dword [edi + 0x70], eax
call fcn.0041dbe0
mov eax, dword [edi + 0x2c]
mov esi, dword [ebp - 8]
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 [ebp - 0x20], xmm2
movss dword [ebp - 0x1c], xmm1
movss dword [ebp - 0x18], xmm0
movss dword [ebp - 0x14], xmm3
jb 0x40938b
movss dword [ebp - 0x18], xmm2
comiss xmm1, xmm3
jb 0x409395
movss dword [ebp - 0x14], xmm1
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + 0x40]
cmp eax, ecx
jne 0x4093cd
lea edx, [eax + 1]
mov dword [ebp - 0x10], edx
test ecx, ecx
je 0x4093b7
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [ebp - 0x10]
sar eax, 1
add eax, ecx
jmp 0x4093bc
mov eax, 8
cmp eax, edx
lea ecx, [edi + 0x3c]
cmovg edx, eax
push edx
call fcn.004242a0
mov eax, dword [edi + 0x3c]
movaps xmm0, xmmword [ebp - 0x20]
lea ecx, [esi + 0x1d58]
shl eax, 4
add eax, dword [edi + 0x44]
movups xmmword [eax], xmm0
inc dword [edi + 0x3c]
movups xmmword [esi + 0x1db8], xmm0
call fcn.0041db40
mov edi, dword [0x4598f8]
mov dword [esi + 0x1ca8], 0
mov eax, dword [esi + 0x1ca8]
mov dword [esi + 0x1cac], 0
mov ecx, dword [esi + 0x1cac]
mov byte [esi + 0x1c84], 0
mov dword [esi + 0x1c88], 0
mov dword [esi + 0x1c90], 0
mov dword [esi + 0x1c94], 0
mov dword [esi + 0x1c8c], 0
mov dword [esi + 0x1ca0], eax
mov dword [esi + 0x1ca4], ecx
mov dword [esi + 0x1c98], eax
mov dword [esi + 0x1c9c], ecx
cmp byte [esi + 0x1de8], 0
je 0x409490
mov eax, dword [esi + 0x1e00]
cmp eax, dword [esi + 0x1a48]
jne 0x409490
cmp dword [edi + 0x1a48], eax
jne 0x409481
mov dword [edi + 0x1a4c], eax
cmp dword [edi + 0x1a84], eax
jne 0x409490
mov byte [edi + 0x1a88], 1
cmp dword [esi + 0x1a38], 0
mov eax, dword [esi + 0x1a34]
jne 0x4094ab
mov dword [esi + 0x1a40], 0
jmp 0x4094b9
mov ecx, eax
test eax, eax
je 0x4094c5
cmp dword [esi + 0x1a48], eax
jne 0x4094c5
mov dword [esi + 0x1a44], 0
mov ecx, eax
movss xmm2, dword [esi + 0x18]
mov eax, dword [esi + 0x1a48]
test ecx, ecx
je 0x4094fe
movaps xmm0, xmm2
addss xmm0, dword [esi + 0x1a40]
movss dword [esi + 0x1a40], xmm0
cmp eax, ecx
je 0x4094fe
movaps xmm0, xmm2
addss xmm0, dword [esi + 0x1a44]
movss dword [esi + 0x1a44], xmm0
movaps xmm1, xmm2
mov dword [esi + 0x1a38], ecx
mov ecx, eax
mov dword [esi + 0x1a34], 0
mov word [esi + 0x1a3c], 0
cmp dword [esi + 0x1a4c], eax
je 0x409540
cmp dword [esi + 0x1a84], eax
jne 0x409540
test eax, eax
je 0x409540
call fcn.00407930
mov ecx, dword [esi + 0x1a48]
movss xmm1, dword [esi + 0x18]
test ecx, ecx
je 0x409557
movaps xmm0, xmm1
addss xmm0, dword [esi + 0x1a50]
movss dword [esi + 0x1a50], xmm0
mov eax, dword [esi + 0x1a78]
addss xmm1, dword [esi + 0x1a94]
mov dword [esi + 0x1a8c], eax
mov al, byte [esi + 0x1a58]
mov byte [esi + 0x1a89], al
mov eax, dword [esi + 0x2d88]
movss dword [esi + 0x1a94], xmm1
mov dword [esi + 0x1a84], ecx
mov dword [esi + 0x1a4c], 0
mov byte [esi + 0x1a59], 0
mov byte [esi + 0x1a88], 0
mov byte [esi + 0x1a54], 0
test eax, eax
je 0x4095bc
cmp ecx, eax
je 0x4095bc
mov dword [esi + 0x2d88], 0
test ecx, ecx
jne 0x4095d8
mov dword [esi + 0x1a5c], ecx
mov dword [esi + 0x1a60], ecx
mov dword [esi + 0x1a68], ecx
mov dword [esi + 0x1a6c], ecx
mov eax, dword [esi + 0x1e4c]
mov dword [esi + 0x1e50], eax
xor eax, eax
mov dword [esi + 0x1e4c], 0
mov dword [esi + 0x1e48], 0x7f7fffff
mov word [esi + 0x1de9], 0
mov dword [esi + 0x1e58], 0
cmp byte [edi + 0xfc], al
movss xmm1, dword [0x43f104]
setne al
mov ecx, eax
or ecx, 2
cmp byte [edi + 0xfd], 0
cmove ecx, eax
mov edx, ecx
or edx, 4
cmp byte [edi + 0xfe], 0
cmove edx, ecx
mov ecx, 0x200
mov eax, edx
or eax, 8
cmp byte [edi + 0xff], 0
lea edi, [esi + 0xc58]
cmove eax, edx
lea edx, [esi + 0x458]
mov dword [esi + 0x37c], eax
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 8]
xor eax, eax
nop dword [eax + eax]
cmp byte [esi + eax + 0x100], 0
je 0x409692
movss xmm0, dword [edx]
xorps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x40968b
xorps xmm0, xmm0
jmp 0x409695
addss xmm0, dword [esi + 0x18]
jmp 0x409695
movaps xmm0, xmm1
movss dword [edx], xmm0
inc eax
add edx, 4
cmp eax, 0x200
jl 0x409670
call fcn.00412480
call fcn.00408340
call fcn.00408c50
call fcn.00407ee0
mov edi, dword [0x4598f8]
mov edx, dword [edi + 0x1b30]
sub edx, 1
js 0x4096ef
mov eax, dword [edi + 0x1b38]
lea ecx, [edx + edx*8]
lea eax, [eax + ecx*4]
add eax, 4
mov ecx, dword [eax]
test ecx, ecx
je 0x4096e7
test dword [ecx + 8], 0x8000000
jne 0x409709
sub eax, 0x24
sub edx, 1
jns 0x4096d8
cmp dword [esi + 0x1c50], 0
je 0x409728
movss xmm0, dword [esi + 0x1c60]
comiss xmm0, dword [0x43ef54]
jbe 0x409728
movss xmm1, dword [esi + 0x18]
mulss xmm1, dword [0x43f054]
addss xmm1, dword [esi + 0x1cc8]
minss xmm1, dword [0x43efc0]
jmp 0x409749
movss xmm0, dword [esi + 0x18]
mulss xmm0, dword [0x43f060]
movss xmm1, dword [esi + 0x1cc8]
subss xmm1, xmm0
maxss xmm1, dword [0x43ef54]
movss dword [esi + 0x1cc8], xmm1
mov dword [esi + 0x1de4], 0
mov dword [esi + 0x3060], 0xffffffff
mov dword [esi + 0x305c], 0xffffffff
mov dword [esi + 0x3058], 0xffffffff
mov dword [esi + 0x2de4], 0x3f800000
mov dword [esi + 0x2de8], 0x3f800000
call fcn.00408700
mov eax, dword [edi + 0x1b48]
test eax, eax
je 0x4097cb
cmp byte [eax + 0x82], 0
je 0x4097cb
test dword [eax + 8], 0x40000
jne 0x4097cb
cmp byte [edi + 0xfc], 0
jne 0x4097cb
mov ecx, dword [edi + 0x34]
test ecx, ecx
js 0x4097cb
call fcn.0040b020
test al, al
je 0x4097cb
mov al, 1
jmp 0x4097cd
xor al, al
cmp dword [edi + 0x1a48], 0
mov byte [edi + 0x1c80], al
jne 0x409832
test al, al
je 0x409832
cmp dword [edi + 0x1b4c], 0
mov eax, dword [edi + 0x1b48]
mov dword [edi + 0x1c6c], eax
mov dword [edi + 0x1c78], 0x7fffffff
je 0x409821
mov ecx, dword [edi + 0x1b94]
cmp ecx, 0x7fffffff
je 0x409821
xor edx, edx
mov eax, 2
cmp byte [edi + 0xfd], dl
cmovne eax, edx
add eax, ecx
jmp 0x40982c
movzx eax, byte [edi + 0xfd]
neg eax
sbb eax, eax
mov dword [edi + 0x1c7c], eax
mov eax, dword [edi + 0x1c6c]
mov dword [edi + 0x1c68], 0
mov dword [edi + 0x1c74], 0x7fffffff
mov dword [edi + 0x1c70], 0x7fffffff
test eax, eax
je 0x4098d0
mov edx, dword [edi + 0x1c78]
mov dword [edi + 0x1c68], eax
cmp edx, 0x7fffffff
je 0x40988c
mov ecx, dword [eax + 0x1a0]
cmp ecx, 0xffffffff
je 0x40988c
inc ecx
lea eax, [ecx + edx]
cdq
idiv ecx
mov eax, dword [edi + 0x1c6c]
mov dword [edi + 0x1c70], edx
mov edx, dword [edi + 0x1c7c]
cmp edx, 0x7fffffff
je 0x4098b2
mov ecx, dword [eax + 0x1a4]
cmp ecx, 0xffffffff
je 0x4098b2
inc ecx
lea eax, [ecx + edx]
cdq
idiv ecx
mov dword [edi + 0x1c74], edx
mov dword [edi + 0x1c6c], 0
mov dword [edi + 0x1c7c], 0x7fffffff
mov dword [edi + 0x1c78], 0x7fffffff
mov dword [edi + 0x1b94], 0x7fffffff
movss xmm0, dword [esi + 0xb8]
comiss xmm0, dword [0x43ef54]
jb 0x409902
movsd xmm1, qword [esi + 0x19b0]
cvtpd2ps xmm1, xmm1
subss xmm1, xmm0
movss dword [ebp - 0xc], xmm1
jmp 0x40990a
movss xmm1, dword [0x43f0f8]
xor ecx, ecx
mov dword [ebp - 8], ecx
cmp dword [esi + 0x19d0], ecx
je 0x40997e
nop word [eax + eax]
mov eax, dword [esi + 0x19d8]
xor edx, edx
mov ecx, dword [eax + ecx*4]
mov al, byte [ecx + 0x82]
mov byte [ecx + 0x83], al
mov word [ecx + 0x8e], dx
mov byte [ecx + 0x82], dl
mov byte [ecx + 0x84], dl
test al, al
jne 0x409964
cmp byte [ecx + 0x368], dl
jne 0x409964
comiss xmm1, dword [ecx + 0x26c]
jbe 0x409964
call fcn.004076c0
mov ecx, dword [ebp - 8]
movss xmm1, dword [ebp - 0xc]
inc ecx
mov dword [ebp - 8], ecx
cmp ecx, dword [esi + 0x19d0]
jne 0x409920
mov edi, dword [0x4598f8]
mov eax, dword [esi + 0x1b48]
test eax, eax
je 0x4099fb
cmp byte [eax + 0x83], 0
jne 0x4099fb
mov ecx, dword [edi + 0x19dc]
sub ecx, 1
mov dword [ebp - 0xc], ecx
js 0x4099f4
mov eax, dword [edi + 0x19e4]
lea eax, [eax + ecx*4]
mov dword [ebp - 8], eax
nop dword [eax + eax]
mov edi, dword [eax]
test edi, edi
je 0x4099e6
cmp byte [edi + 0x83], 0
je 0x4099e6
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 0x409bc2
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
dec ecx
sub eax, 4
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], eax
test ecx, ecx
jns 0x4099b0
xor ecx, ecx
call fcn.0040fd80
mov ecx, dword [esi + 0x19f8]
test ecx, ecx
jns 0x409a21
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 + 0x19f4]
call fcn.004159f0
mov dword [esi + 0x19f4], 0
mov ecx, dword [esi + 0x1b40]
test ecx, ecx
jns 0x409a51
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 + 0x1b3c]
call fcn.00415e40
mov dword [esi + 0x1b3c], 0
xor dl, dl
mov ecx, dword [esi + 0x1b48]
call fcn.00411150
mov edi, dword [0x4598f8]
cmp byte [edi + 0x2e58], 0
mov dword [edi + 0x2e5c], 0
je 0x409b3e
mov eax, dword [edi + 0x6c]
mov ecx, dword [edi + 0x1a38]
mov dword [ebp - 4], ecx
mov dword [edi + 0x1de4], 7
test eax, eax
js 0x409ab4
mov ecx, eax
call fcn.0040b020
mov ecx, dword [ebp - 4]
test al, al
je 0x409ab4
mov byte [edi + 0x2e58], 0
movss xmm0, dword [edi + 0x3f4]
ucomiss xmm0, dword [0x43ef54]
lahf
test ah, 0x44
jp 0x409ada
test ecx, ecx
je 0x409ada
mov dword [edi + 0x2e5c], ecx
mov byte [edi + 0x2e58], 0
or dword [edi + 0x1a98], 0x40
xor edx, edx
mov dword [edi + 0x1aec], 0x3f19999a
call fcn.00410f20
mov edi, dword [ebp - 4]
push edi
push str.HoveredId:_0x_08X
call fcn.00425b30
push str.Press_ESC_to_abort_picking.
call fcn.00425b30
add esp, 0xc
xor ecx, ecx
mov eax, 0x10
test edi, edi
cmove ecx, eax
mov eax, dword [0x4598f8]
add eax, 0x15d4
add eax, ecx
push str.Click_to_break_in_debugger_
push eax
call fcn.00425bb0
add esp, 8
call fcn.0040fcb0
mov edi, dword [0x4598f8]
mov byte [esi + 0x19c5], 1
xor edx, edx
or dword [edi + 0x1a98], 2
mov ecx, str.DebugDefault
push 0
mov dword [edi + 0x1ab8], 0x43c80000
mov dword [edi + 0x1abc], 0x43c80000
mov dword [edi + 0x1aa0], 4
call fcn.0040d8c0
xor ecx, ecx
add esp, 4
mov dword [ebp - 0xc], ecx
cmp dword [esi + 0x2e20], ecx
jle 0x409bb9
xor edi, edi
nop word [eax + eax]
mov eax, dword [esi + 0x2e28]
add eax, edi
cmp dword [eax], 1
jne 0x409baa
push eax
mov eax, dword [eax + 8]
push esi
call eax
mov ecx, dword [ebp - 0xc]
add esp, 8
inc ecx
add edi, 0x10
mov dword [ebp - 0xc], ecx
cmp ecx, dword [esi + 0x2e20]
jl 0x409b90
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov ecx, dword [edi + 0x334]
test ecx, ecx
je 0x409bd9
cmp byte [ecx + 0x83], 0
jne 0x4099f6
mov ecx, edi
jmp 0x4099f6