Function at 0x1002f730
Capabilities:
Encode data using xor
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
mov eax, dword [0x1008b040]
xor eax, esp
mov dword [esp + 0x94], eax
push esi
mov esi, dword [0x10116ebc]
push edi
mov dword [esp + 0x2c], esi
mov eax, dword [esi + 0x5a0c]
sub eax, 1
mov dword [esp + 0x14], eax
js 0x1002f7d0
lea edi, [eax + eax*4]
shl edi, 2
nop dword [eax + eax]
mov ecx, dword [esi + 0x5a14]
cmp dword [ecx + edi + 4], 7
jne 0x1002f7c4
mov eax, 0x66666667
imul edi
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esi + 0x5a14]
lea eax, [ecx + ecx*4]
lea edx, [edx + eax*4]
mov eax, dword [esi + 0x5a0c]
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 + 0x20]
add esp, 0xc
dec dword [esi + 0x5a0c]
dec eax
sub edi, 0x14
mov dword [esp + 0x14], eax
test eax, eax
jns 0x1002f770
xor eax, eax
mov dword [esp + 0x14], eax
cmp dword [esi + 0x5a0c], eax
jle 0x1002f80e
xor edi, edi
mov ecx, dword [esi + 0x5a14]
cmp dword [ecx + edi + 4], 0
jne 0x1002f7fe
lea eax, [ecx + edi]
mov ecx, dword [eax + 0xc]
push eax
push esi
call ecx
mov eax, dword [esp + 0x1c]
add esp, 8
inc eax
add edi, 0x14
mov dword [esp + 0x14], eax
cmp eax, dword [esi + 0x5a0c]
jl 0x1002f7e0
mov edi, dword [0x10116ebc]
cmp byte [edi + 0x66], 0
je 0x1002f824
test byte [edi + 0xc], 2
jne 0x1002f824
mov byte [edi + 0x66], 0
cmp byte [edi + 0x59d5], 0
mov eax, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov dword [esp + 0x1c], eax
jne 0x1002f898
mov ecx, dword [edi + 0x20]
test ecx, ecx
je 0x1002f891
push ecx
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 0
push eax
lea edx, [esp + 0x21]
mov dword [esp + 0x20], 0x62725e
call fcn.1002b120
mov ecx, eax
add esp, 8
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x1002f891
mov edx, dword [esp + 0x14]
test edx, edx
je 0x1002f87a
call fcn.100408c0
mov ecx, dword [esp + 0x20]
mov eax, dword [0x10116ebc]
test eax, eax
je 0x1002f889
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov byte [edi + 0x59d5], 1
movss xmm1, dword [edi + 0x59d8]
xorps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x1002f94a
subss xmm1, dword [edi + 0x18]
comiss xmm0, xmm1
movss dword [edi + 0x59d8], xmm1
jb 0x1002f94a
mov eax, dword [edi + 0x20]
mov dword [esp + 0x20], eax
test eax, eax
je 0x1002f939
mov eax, dword [0x10116ebc]
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], 0
mov dword [eax + 0x59d8], 0
call fcn.10040af0
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x19]
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], 0x747712
call fcn.1002b020
mov dword [esp + 0x20], eax
test eax, eax
je 0x1002f940
push eax
push dword [esp + 0x18]
mov dword [esp + 0x8c], 0
push 1
push dword [esp + 0x3c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push dword [esp + 0x30]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
jmp 0x1002f940
mov byte [edi + 0x98], 1
mov dword [edi + 0x59d8], 0
movss xmm0, dword [esi + 0x18]
lea ecx, [esi + 0x59a8]
inc dword [esi + 0x3dc8]
xor eax, eax
cvtps2pd xmm0, xmm0
push eax
mov byte [esi + 0x3dd4], 1
mov word [esi + 0x599a], ax
mov dword [esi + 0x3e1c], eax
addsd xmm0, qword [esi + 0x3dc0]
movsd qword [esi + 0x3dc0], xmm0
call fcn.100423a0
mov eax, dword [esi + 0x5b98]
mov ecx, 0x3c
movss xmm1, dword [esi + 0x18]
xorps xmm3, xmm3
movaps xmm0, xmm1
movss xmm2, dword [0x10085708]
subss xmm0, dword [esi + eax*4 + 0x5aa8]
addss xmm0, dword [esi + 0x5ba0]
movss dword [esi + 0x5ba0], xmm0
movss dword [esi + eax*4 + 0x5aa8], xmm1
mov eax, dword [esi + 0x5b98]
inc eax
movss xmm1, dword [esi + 0x5ba0]
cdq
idiv ecx
mov eax, dword [esi + 0x5b9c]
movss xmm0, dword [0x1008580c]
inc eax
cmp eax, ecx
mov dword [esi + 0x5b98], edx
movss dword [esp + 0x18], xmm0
cmovl ecx, eax
comiss xmm1, xmm3
mov dword [esi + 0x5b9c], ecx
jbe 0x1002fa19
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movaps xmm0, xmm2
divss xmm0, xmm1
mov edi, dword [0x10116ebc]
movss dword [esi + 0x9c], xmm0
mov eax, dword [edi + 0x4790]
mov edx, dword [eax]
mov dword [edx], 5
mov dword [edx + 4], 0
mov dword [edx + 8], 0
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], ecx
cmp dword [edi + 0x4788], 0
jle 0x1002fb3b
xor esi, esi
nop
mov eax, dword [edi + 0x4790]
movaps xmm2, xmm3
mov edx, dword [eax + esi*4]
inc esi
mov eax, dword [edx + 0x8c]
mov ecx, dword [edx + 0x90]
movss xmm0, dword [edx + 8]
movss xmm1, dword [edx + 4]
mov dword [edx + 0x7c], eax
mov eax, dword [edx + 0x94]
mov dword [edx + 0x80], ecx
mov ecx, dword [edx + 0x98]
mov dword [edx + 0x84], eax
mov dword [edx + 0x88], ecx
mov dword [edx + 0x94], 0
mov eax, dword [edx + 0x94]
mov dword [edx + 0x98], 0
mov ecx, dword [edx + 0x98]
mov dword [edx + 0x8c], eax
mov dword [edx + 0x90], ecx
addss xmm0, dword [edx + 0x80]
addss xmm1, dword [edx + 0x7c]
movss dword [edx + 0x18], xmm0
movss xmm0, dword [edx + 0x10]
movss dword [edx + 0x14], xmm1
movaps xmm1, xmm3
subss xmm0, dword [edx + 0x80]
addss xmm0, dword [edx + 0x88]
maxss xmm2, xmm0
movss xmm0, dword [edx + 0xc]
subss xmm0, dword [edx + 0x7c]
addss xmm0, dword [edx + 0x84]
movss dword [edx + 0x20], xmm2
maxss xmm1, xmm0
movss dword [edx + 0x1c], xmm1
cmp esi, dword [edi + 0x4788]
jl 0x1002fa60
movss xmm2, dword [0x10085708]
mov esi, dword [esp + 0x2c]
mov eax, dword [esi + 0x48]
mov byte [eax + 0x10], 1
mov eax, dword [edi + 0x54]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x1002fb59
mov eax, dword [edi + 0x48]
mov eax, dword [eax + 0x3c]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov ecx, dword [edi + 0x3e28]
movaps xmm1, xmm2
mov dword [edi + 0x3bb0], eax
movss xmm0, dword [eax + 0x10]
mulss xmm0, dword [edi + 0x4c]
mulss xmm0, dword [eax + 0x44]
maxss xmm1, xmm0
movss dword [edi + 0x3bb8], xmm1
test ecx, ecx
je 0x1002fba3
mulss xmm1, dword [ecx + 0x240]
mov ecx, dword [ecx + 0x2dc]
test ecx, ecx
je 0x1002fba6
mulss xmm1, dword [ecx + 0x240]
jmp 0x1002fba6
movaps xmm1, xmm3
movaps xmm0, xmmword [0x100863a0]
movss dword [edi + 0x3bb4], xmm1
mov edx, dword [eax + 0x30]
movaps xmmword [esp + 0x80], xmm0
mov eax, dword [edx + 0x2c]
mov ecx, dword [edx + 0x30]
mov dword [edi + 0x3bbc], eax
lea eax, [edx + 0x58]
mov dword [edi + 0x3db8], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x3bc0], ecx
xor ecx, ecx
mov dword [edi + 0x3bc4], eax
movss dword [edi + 0x3bc8], xmm1
mov edx, dword [esi + 0x4788]
test edx, edx
jle 0x1002fca6
mov edi, dword [esi + 0x4790]
movss xmm4, dword [esp + 0x8c]
movss xmm5, dword [esp + 0x88]
movss xmm6, dword [esp + 0x84]
movss xmm7, dword [esp + 0x80]
nop word [eax + eax]
mov eax, dword [edi + ecx*4]
movss xmm3, dword [eax + 4]
comiss xmm7, xmm3
movss xmm2, dword [eax + 8]
movaps xmm0, xmm3
addss xmm0, dword [eax + 0xc]
movaps xmm1, xmm2
addss xmm1, dword [eax + 0x10]
jbe 0x1002fc55
movaps xmm7, xmm3
comiss xmm6, xmm2
jbe 0x1002fc5d
movaps xmm6, xmm2
comiss xmm0, xmm5
jbe 0x1002fc65
movaps xmm5, xmm0
comiss xmm1, xmm4
jbe 0x1002fc6d
movaps xmm4, xmm1
inc ecx
cmp ecx, edx
jl 0x1002fc30
movss xmm2, dword [0x10085708]
movss dword [esp + 0x8c], xmm4
movss dword [esp + 0x88], xmm5
movss dword [esp + 0x84], xmm6
movss dword [esp + 0x80], xmm7
movaps xmm0, xmmword [esp + 0x80]
mov eax, dword [esi + 0x3858]
movss xmm1, dword [esi + 0x385c]
mov dword [esi + 0x3bcc], eax
movups xmmword [esi + 0x3bd4], xmm0
movss xmm0, dword [esi + 0x3bd0]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1002fdbb
movss dword [esi + 0x3bd0], xmm1
xor edi, edi
movd xmm0, edi
cvtdq2ps xmm0, xmm0
test edi, edi
je 0x1002fd69
movss xmm1, dword [esi + 0x3bd0]
minss xmm1, xmm0
divss xmm1, xmm0
movaps xmm0, xmm2
subss xmm0, xmm1
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_acos_precise
movss xmm1, dword [0x10085744]
sub esp, 8
cvtsd2ss xmm0, xmm0
divss xmm1, xmm0
cvtps2pd xmm0, xmm1
movsd qword [esp + 0x28], xmm0
fld qword [esp + 0x28]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_ceil
fstp qword [esp + 0x28]
movsd xmm0, qword [esp + 0x28]
add esp, 8
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
inc eax
cdq
sub eax, edx
and eax, 0xfffffffe
cmp eax, 4
jge 0x1002fd5a
mov eax, 4
jmp 0x1002fd6e
cmp eax, 0x200
mov ecx, 0x200
cmovg eax, ecx
jmp 0x1002fd6e
mov eax, 0x30
movss xmm2, dword [0x10085708]
mov byte [esi + edi + 0x3d78], al
inc edi
cmp edi, 0x40
jl 0x1002fce0
movss xmm0, dword [0x100856a0]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
movss xmm1, dword [0x10085708]
cvtsd2ss xmm0, xmm0
subss xmm1, xmm0
movss xmm0, dword [esi + 0x3bd0]
divss xmm0, xmm1
movss dword [esi + 0x3d74], xmm0
xor edx, edx
mov dword [esi + 0x3be4], 0
cmp byte [esi + 0x3854], dl
je 0x1002fdde
mov dword [esi + 0x3be4], 1
mov edx, 1
cmp byte [esi + 0x3855], 0
mov ecx, edx
je 0x1002fe00
mov eax, dword [esi + 0x3bb0]
mov eax, dword [eax + 0x30]
test byte [eax], 4
jne 0x1002fe00
or ecx, 2
mov dword [esi + 0x3be4], ecx
cmp byte [esi + 0x3856], 0
je 0x1002fe12
or ecx, 4
mov dword [esi + 0x3be4], ecx
test byte [esi + 0xc], 8
je 0x1002fe21
or ecx, 8
mov dword [esi + 0x3be4], ecx
xor edi, edi
cmp dword [esi + 0x4788], edi
jle 0x1002fe52
nop dword [eax + eax]
mov eax, dword [esi + 0x4790]
push 0x2c
push 0
mov eax, dword [eax + edi*4]
add eax, 0x38
push eax
call sub.VCRUNTIME140.dll_memset
inc edi
add esp, 0xc
cmp edi, dword [esi + 0x4788]
jl 0x1002fe30
cmp byte [esi + 0x491c], 0
je 0x1002fe8b
mov ecx, dword [esi + 0x4934]
cmp ecx, dword [esi + 0x3e60]
jne 0x1002fe8b
mov eax, dword [0x10116ebc]
cmp dword [eax + 0x3e60], ecx
jne 0x1002fe7c
mov dword [eax + 0x3e64], ecx
cmp dword [eax + 0x3e88], ecx
jne 0x1002fe8b
mov byte [eax + 0x3e8c], 1
cmp dword [esi + 0x3e50], 0
jne 0x1002fea0
mov dword [esi + 0x3e58], 0
jmp 0x1002feb2
mov eax, dword [esi + 0x3e4c]
test eax, eax
je 0x1002febc
cmp dword [esi + 0x3e60], eax
jne 0x1002febc
mov dword [esi + 0x3e5c], 0
mov eax, dword [esi + 0x3e4c]
test eax, eax
je 0x1002fef8
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [esi + 0x3e58]
movss dword [esi + 0x3e58], xmm0
cmp dword [esi + 0x3e60], eax
je 0x1002fef8
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [esi + 0x3e5c]
movss dword [esi + 0x3e5c], xmm0
mov dword [esi + 0x3e50], eax
mov eax, dword [esi + 0x3e60]
mov dword [esi + 0x3e4c], 0
mov word [esi + 0x3e54], 0
test eax, eax
je 0x1002ffa0
cmp dword [esi + 0x3e64], eax
je 0x1002ffa0
cmp dword [esi + 0x3e88], eax
jne 0x1002ffa0
test byte [esi + 0x5a50], 1
je 0x1002ff97
movaps xmm0, xmmword [0x10086130]
xor ecx, ecx
movups xmmword [esp + 0x38], xmm0
mov dword [esp + 0x78], 0x371c584f
movaps xmm0, xmmword [0x100861c0]
movups xmmword [esp + 0x48], xmm0
mov byte [esp + 0x7c], 0
movaps xmm0, xmmword [0x10086170]
movups xmmword [esp + 0x58], xmm0
movaps xmm0, xmmword [0x100860d0]
movups xmmword [esp + 0x68], xmm0
mov al, byte [esp + 0x38]
xor byte [esp + ecx + 0x39], al
inc ecx
cmp ecx, 0x43
jb 0x1002ff77
lea eax, [esp + 0x39]
mov byte [esp + 0x7c], 0
push eax
call fcn.10041400
add esp, 4
xor edx, edx
xor ecx, ecx
call fcn.1002d8b0
mov ecx, dword [esi + 0x3e60]
test ecx, ecx
je 0x1002ffbf
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [esi + 0x3e68]
movss dword [esi + 0x3e68], xmm0
mov eax, dword [esi + 0x3e7c]
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [esi + 0x3e98]
mov dword [esi + 0x3e90], eax
mov al, byte [esi + 0x3e70]
mov byte [esi + 0x3e8d], al
mov eax, dword [esi + 0x5928]
movss dword [esi + 0x3e98], xmm0
mov dword [esi + 0x3e88], ecx
mov dword [esi + 0x3e64], 0
mov byte [esi + 0x3e71], 0
mov byte [esi + 0x3e8c], 0
mov byte [esi + 0x3e6c], 0
test eax, eax
je 0x10030029
cmp ecx, eax
je 0x10030029
mov dword [esi + 0x5928], 0
test ecx, ecx
jne 0x10030047
mov dword [esi + 0x4664], ecx
mov dword [esi + 0x465c], ecx
mov byte [esi + 0x4660], cl
mov dword [esi + 0x4664], ecx
jmp 0x10030070
mov eax, dword [esi + 0x4664]
test eax, eax
je 0x10030070
test al, 2
je 0x10030070
mov edx, dword [esi + 0x3e60]
mov ecx, 0x20e
call fcn.1002a3d0
mov dword [eax + 4], edx
mov dword [eax], edx
mov word [eax + 8], 0
mov eax, dword [esi + 0x4a44]
movss xmm0, dword [esi + 0x4a4c]
mov dword [esi + 0x4a48], eax
test eax, eax
je 0x100300a1
addss xmm0, dword [esi + 0x18]
mov dword [esi + 0x4a44], 0
movss dword [esi + 0x4a4c], xmm0
jmp 0x100300e1
comiss xmm0, dword [0x10085668]
jbe 0x100300eb
movss xmm2, dword [esi + 0x18]
movss xmm0, dword [0x100856b4]
movaps xmm1, xmm2
addss xmm1, dword [esi + 0x4a50]
addss xmm2, xmm2
movss dword [esi + 0x4a50], xmm1
maxss xmm0, xmm2
comiss xmm1, xmm0
jb 0x100300eb
mov dword [esi + 0x4a4c], 0
mov dword [esi + 0x4a50], 0
mov eax, dword [esi + 0x4980]
lea ecx, [esi + 0x378c]
push ecx
mov dword [esi + 0x4984], eax
mov dword [esi + 0x4980], 0
mov dword [esi + 0x497c], 0x7f7fffff
mov word [esi + 0x491d], 0
mov dword [esi + 0x498c], 0
call fcn.10042240
mov cl, byte [esi + 0x62]
call fcn.100390f0
call fcn.1002e7b0
call fcn.1003cb80
call fcn.1002ec70
call fcn.1002f4c0
mov edi, dword [0x10116ebc]
mov ecx, dword [edi + 0x3e34]
test ecx, ecx
je 0x1003020b
mov eax, dword [edi + 0x3e60]
mov dword [edi + 0x3e64], eax
cmp dword [edi + 0x3e88], eax
jne 0x10030175
mov byte [edi + 0x3e8c], 1
cmp byte [edi + 0xdc0], 0
mov eax, dword [ecx + 0x2e4]
mov dword [esp + 0x20], eax
je 0x100301ff
lea ecx, [edi + 0xdb8]
test ecx, ecx
je 0x10030196
mov eax, ecx
jmp 0x100301a0
mov eax, dword [0x10116ebc]
add eax, 0xdb8
movss xmm0, dword [eax]
movss xmm1, dword [0x10085838]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x100301ff
comiss xmm2, xmm1
jb 0x100301ff
movss xmm1, dword [ecx + 4]
lea edx, [esp + 0x30]
movss xmm0, dword [ecx]
subss xmm1, dword [edi + 0x3e78]
subss xmm0, dword [edi + 0x3e74]
mov ecx, dword [esp + 0x20]
push 1
movss dword [esp + 0x38], xmm1
movss dword [esp + 0x34], xmm0
call fcn.100385c0
mov ecx, dword [edi + 0x3e34]
add esp, 4
call fcn.10038150
jmp 0x10030247
mov dword [edi + 0x3e34], 0
jmp 0x1003023e
mov ecx, dword [edi + 0x3e7c]
test ecx, ecx
je 0x10030247
mov eax, dword [edi + 0x3e60]
cmp dword [ecx + 0x54], eax
jne 0x10030247
mov dword [edi + 0x3e64], eax
cmp dword [edi + 0x3e88], eax
jne 0x10030235
mov byte [edi + 0x3e8c], 1
cmp byte [edi + 0xdc0], 0
jne 0x10030247
xor edx, edx
xor ecx, ecx
call fcn.1002d8b0
mov eax, dword [0x10116ebc]
mov edx, dword [eax + 0x476c]
sub edx, 1
js 0x1003027d
mov eax, dword [eax + 0x4774]
lea ecx, [edx + edx*4]
lea eax, [eax + ecx*8]
add eax, 4
mov ecx, dword [eax]
test ecx, ecx
je 0x10030275
test dword [ecx + 8], 0x8000000
jne 0x10030297
sub eax, 0x28
sub edx, 1
jns 0x10030266
cmp dword [esi + 0x48ec], 0
je 0x100302b6
movss xmm0, dword [esi + 0x48fc]
comiss xmm0, dword [0x10085668]
jbe 0x100302b6
movss xmm1, dword [esi + 0x18]
mulss xmm1, dword [0x1008575c]
addss xmm1, dword [esi + 0x4914]
minss xmm1, dword [0x10085708]
jmp 0x100302d7
movss xmm0, dword [esi + 0x18]
mulss xmm0, dword [0x10085770]
movss xmm1, dword [esi + 0x4914]
subss xmm1, xmm0
maxss xmm1, dword [0x10085668]
movss dword [esi + 0x4914], xmm1
movups xmm0, xmmword [esi + 0x59b4]
mov dword [esi + 0x4918], 0
mov dword [esi + 0x5bac], 0xffffffff
mov dword [esi + 0x5ba8], 0xffffffff
mov dword [esi + 0x5ba4], 0xffffffff
movups xmmword [esi + 0x59c4], xmm0
mov byte [esi + 0x59b4], 0
call fcn.1002f070
cmp byte [esi + 0x3dd7], 0
jne 0x1003034f
movss xmm1, dword [esi + 0x68]
xorps xmm0, xmm0
comiss xmm0, xmm1
ja 0x1003034f
movsd xmm0, qword [esi + 0x3dc0]
cvtpd2ps xmm0, xmm0
subss xmm0, xmm1
movss dword [esp + 0x18], xmm0
jmp 0x10030355
movss xmm0, dword [esp + 0x18]
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp dword [esi + 0x3de0], ecx
je 0x1003050c
nop word [eax + eax]
mov eax, dword [esi + 0x3de8]
mov edi, dword [eax + ecx*4]
mov ax, word [edi + 0x9a]
mov cl, byte [edi + 0x8e]
mov word [edi + 0x9c], ax
xor eax, eax
mov byte [edi + 0x8f], cl
mov byte [edi + 0x8e], 0
mov byte [edi + 0x90], 0
mov word [edi + 0x9a], ax
test cl, cl
jne 0x100304f1
cmp byte [edi + 0x32c], al
jne 0x100304f1
comiss xmm0, dword [edi + 0x220]
jbe 0x100304f1
mov ecx, dword [edi + 0x248]
mov byte [edi + 0x32c], 1
mov eax, dword [ecx + 0x10]
mov dword [edi + 0x324], eax
mov eax, dword [ecx + 0x1c]
mov dword [edi + 0x328], eax
mov ecx, dword [edi + 0xd0]
test ecx, ecx
je 0x10030429
mov eax, dword [0x10116ebc]
mov dword [edi + 0xcc], 0
mov dword [edi + 0xc8], 0
test eax, eax
je 0x10030417
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0xd0], 0
mov ecx, dword [edi + 0x248]
call fcn.1004a3f0
mov ecx, dword [edi + 0x16c]
test ecx, ecx
je 0x10030473
mov eax, dword [0x10116ebc]
mov dword [edi + 0x168], 0
mov dword [edi + 0x164], 0
test eax, eax
je 0x10030461
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0x16c], 0
mov ecx, dword [edi + 0x194]
test ecx, ecx
je 0x100304b2
mov eax, dword [0x10116ebc]
mov dword [edi + 0x190], 0
mov dword [edi + 0x18c], 0
test eax, eax
je 0x100304a0
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0x194], 0
mov ecx, dword [edi + 0x1a0]
test ecx, ecx
je 0x100304f1
mov eax, dword [0x10116ebc]
mov dword [edi + 0x19c], 0
mov dword [edi + 0x198], 0
test eax, eax
je 0x100304df
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0x1a0], 0
mov ecx, dword [esp + 0x14]
movss xmm0, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, dword [esi + 0x3de0]
jne 0x10030370
xor eax, eax
mov dword [esp + 0x30], eax
cmp dword [esi + 0x49f0], eax
jle 0x10030669
xor edx, edx
xorps xmm1, xmm1
mov dword [esp + 0x20], edx
nop word [eax + eax]
mov ecx, dword [esi + 0x49f8]
movss xmm0, dword [ecx + eax*4]
comiss xmm0, xmm1
jb 0x1003064e
movss xmm0, dword [esp + 0x18]
comiss xmm0, dword [ecx + eax*4]
jbe 0x1003064e
mov edi, dword [esi + 0x49d8]
mov eax, dword [0x10116ebc]
add edi, edx
mov dword [esp + 0x14], eax
mov dword [edi + 0x1a4], 0
mov ecx, dword [edi + 0x1a0]
test ecx, ecx
je 0x100305a9
mov dword [edi + 0x19c], 0
mov dword [edi + 0x198], 0
test eax, eax
je 0x10030597
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0x1a0], 0
mov byte [edi + 0x1cc], 1
mov ecx, dword [edi + 0x170]
test ecx, ecx
je 0x100305ef
mov eax, dword [0x10116ebc]
mov dword [edi + 0x16c], 0
mov dword [edi + 0x168], 0
test eax, eax
je 0x100305dd
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0x170], 0
xor edx, edx
mov byte [edi + 0x1d6], 1
cmp dword [edi + 0x54], edx
jle 0x10030617
xor ecx, ecx
or esi, 0xffffffff
mov eax, dword [edi + 0x10]
lea ecx, [ecx + 0x68]
inc edx
mov word [eax + ecx - 0x18], si
cmp edx, dword [edi + 0x54]
jl 0x10030602
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
xorps xmm1, xmm1
sub edi, dword [eax + 0x49d8]
mov eax, 0x22b63cbf
imul edi
mov eax, dword [esp + 0x14]
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
mov eax, dword [eax + 0x49f8]
add ecx, edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0xbf800000
mov eax, dword [esp + 0x30]
inc eax
add edx, 0x1d8
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], edx
cmp eax, dword [esi + 0x49f0]
jl 0x10030530
xor ecx, ecx
mov dword [esp + 0x20], ecx
cmp dword [esi + 0x49c4], ecx
jle 0x100306cf
xor edi, edi
xorps xmm1, xmm1
nop dword [eax]
mov eax, dword [esi + 0x49cc]
mov dword [esp + 0x30], eax
movss xmm0, dword [eax + edi + 4]
comiss xmm0, xmm1
jb 0x100306bf
movss xmm0, dword [esp + 0x18]
comiss xmm0, dword [eax + edi + 4]
jbe 0x100306bf
lea ecx, [eax + 0x10]
add ecx, edi
call fcn.1004d1d0
mov eax, dword [esp + 0x30]
xorps xmm1, xmm1
mov ecx, dword [esp + 0x20]
mov dword [eax + edi + 4], 0xbf800000
inc ecx
add edi, 0x68
mov dword [esp + 0x20], ecx
cmp ecx, dword [esi + 0x49c4]
jl 0x10030680
cmp byte [esi + 0x3dd7], 0
je 0x10030760
mov edi, dword [0x10116ebc]
mov eax, dword [edi + 0x475c]
test eax, eax
je 0x1003071c
mov dword [edi + 0x4758], 0
mov dword [edi + 0x4754], 0
test edi, edi
je 0x1003070a
dec dword [edi + 0xb0]
push eax
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0x475c], 0
mov ecx, dword [edi + 0x4768]
test ecx, ecx
je 0x1003075b
mov eax, dword [0x10116ebc]
mov dword [edi + 0x4764], 0
mov dword [edi + 0x4760], 0
test eax, eax
je 0x10030749
dec dword [eax + 0xb0]
push ecx
call dword [esp + 0x20]
add esp, 4
mov dword [edi + 0x4768], 0
call fcn.1006d0a0
mov eax, dword [esi + 0x4794]
mov byte [esi + 0x3dd7], 0
test eax, eax
je 0x100307c0
cmp byte [eax + 0x8f], 0
jne 0x100307c0
mov edi, dword [0x10116ebc]
mov edx, dword [edi + 0x3dec]
sub edx, 1
js 0x100307b9
mov edi, dword [edi + 0x3df4]
mov ecx, dword [edi + edx*4]
test ecx, ecx
je 0x100307b4
cmp byte [ecx + 0x8f], 0
je 0x100307b4
mov eax, dword [ecx + 8]
and eax, 0x40200
cmp eax, 0x40200
jne 0x10030989
sub edx, 1
jns 0x10030791
xor ecx, ecx
call fcn.10038150
mov ecx, dword [esi + 0x3e08]
test ecx, ecx
jns 0x100307e6
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 + 0x3e04]
call fcn.10042980
mov dword [esi + 0x3e04], 0
mov ecx, dword [esi + 0x477c]
test ecx, ecx
jns 0x10030816
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 + 0x4778]
call fcn.10042900
lea edi, [esi + 0x4754]
mov dword [esi + 0x4778], 0
mov ecx, dword [edi + 4]
test ecx, ecx
jns 0x10030845
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
xor ecx, ecx
test eax, eax
cmovg ecx, eax
push ecx
mov ecx, edi
call fcn.10042100
mov dword [edi], 0
cmp dword [edi + 4], 0
jne 0x1003085e
mov edx, 8
mov ecx, edi
push edx
call fcn.10042100
mov ecx, dword [edi]
mov eax, dword [edi + 8]
push 0
mov dword [eax + ecx*4], 0
lea ecx, [esi + 0x4760]
inc dword [edi]
call fcn.10041ed0
mov edi, dword [0x10116ebc]
cmp byte [edi + 0x5a71], 0
mov dword [edi + 0x5a74], 0
je 0x10030a6a
mov eax, dword [edi + 0x3e50]
xor edx, edx
push 1
mov ecx, 0x20e
mov dword [esp + 0x18], eax
mov dword [edi + 0x4918], 7
call fcn.10038bc0
add esp, 4
test al, al
je 0x100308c6
mov byte [edi + 0x5a71], 0
mov eax, dword [edi + 0xdd4]
xorps xmm1, xmm1
mov dword [esp + 0x1c], eax
cmp eax, 0x3000
je 0x1003092b
movzx ecx, byte [edi + 0x5a72]
cmp byte [edi + ecx + 0xdc0], 0
je 0x1003092b
movss xmm0, dword [edi + ecx*4 + 0x3728]
comiss xmm1, xmm0
ja 0x1003092b
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10030927
add ecx, 0x281
xor edx, edx
call fcn.10039620
test al, al
je 0x10030927
mov eax, dword [esp + 0x14]
test eax, eax
je 0x10030927
mov dword [edi + 0x5a74], eax
mov byte [edi + 0x5a71], dl
mov eax, dword [esp + 0x1c]
xor ecx, ecx
mov edx, 0x3728
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], edx
nop word [eax + eax]
cmp eax, 0x3000
jne 0x100309a9
cmp byte [edi + ecx + 0xdc0], 0
je 0x100309a9
movss xmm0, dword [edi + edx]
comiss xmm1, xmm0
ja 0x100309a9
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x100309a5
add ecx, 0x281
xor edx, edx
call fcn.10039620
mov ecx, dword [esp + 0x18]
test al, al
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
je 0x100309a9
mov byte [edi + 0x5a72], cl
jmp 0x100309a9
mov eax, dword [ecx + 0x2f4]
test eax, eax
je 0x1003099c
cmp byte [eax + 0x8f], 0
jne 0x1003099e
mov eax, ecx
mov ecx, eax
jmp 0x100307bb
mov eax, dword [esp + 0x1c]
add edx, 4
inc ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], edx
cmp edx, 0x3734
jl 0x10030940
or dword [edi + 0x46c4], 0x40
xor ecx, ecx
mov dword [edi + 0x4718], 0x3f333333
call fcn.1003a6b0
push dword [esp + 0x14]
push str.HoveredId:_0x_08X
call fcn.1006dea0
push str.Press_ESC_to_abort_picking.
call fcn.1006dea0
add esp, 0xc
mov dword [esp + 0x80], str.Left
cmp dword [esp + 0x1c], 0x3000
mov dword [esp + 0x84], str.Right
mov dword [esp + 0x88], str.Middle
jne 0x10030a2a
push str.Remap_w__CtrlShift:_click_anywhere_to_select_new_mouse_button.
call fcn.1006dea0
add esp, 4
jmp 0x10030a65
movzx eax, byte [edi + 0x5a72]
mov ecx, 0xc8
mov edi, 0xd8
mov edx, dword [esp + eax*4 + 0x80]
mov eax, dword [0x10116ebc]
add eax, 0x3798
cmp dword [esp + 0x14], 0
push edx
cmove ecx, edi
add ecx, eax
push str.Click__s_Button_to_break_in_debugger___remap_w__CtrlShift_
push ecx
call fcn.1006df30
add esp, 0xc
call fcn.10037f00
call fcn.10041760
mov al, byte [esi + 0x5a70]
test al, al
je 0x10030a8d
sub al, 1
mov byte [esi + 0x5a70], al
jne 0x10030a8d
mov dword [esi + 0x4670], 0
mov eax, dword [0x10116ebc]
movaps xmm0, xmmword [str._Z_JX]
mov byte [esi + 0x3dd5], 1
movups xmmword [esp + 0x80], xmm0
or dword [eax + 0x46c4], 2
xor ecx, ecx
mov dword [eax + 0x46e4], 0x43c80000
mov dword [eax + 0x46e8], 0x43c80000
mov dword [eax + 0x46cc], 4
nop
mov al, byte [esp + 0x80]
xor byte [esp + ecx + 0x81], al
inc ecx
cmp ecx, 0xe
jb 0x10030ad0
push 0
xor edx, edx
mov byte [esp + 0x93], 0
lea ecx, [esp + 0x85]
call fcn.10035850
xor edi, edi
add esp, 4
cmp dword [esi + 0x5a0c], edi
jle 0x10030b3c
xor ecx, ecx
mov dword [esp + 0x20], ecx
nop
mov eax, dword [esi + 0x5a14]
add eax, ecx
cmp dword [eax + 4], 1
jne 0x10030b2c
push eax
mov eax, dword [eax + 0xc]
push esi
call eax
mov ecx, dword [esp + 0x28]
add esp, 8
inc edi
add ecx, 0x14
mov dword [esp + 0x20], ecx
cmp edi, dword [esi + 0x5a0c]
jl 0x10030b10
mov ecx, dword [esp + 0x9c]
pop edi
pop esi
xor ecx, esp
call fcn.1007e2f7
mov esp, ebp
pop ebp
ret