Function at 0x10021eb0
Capabilities:
Access peb ldr_data
Resolve function by parsing pe exports

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1011452c
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x208
mov eax, dword [0x101a8540]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
push esi
mov dword [ebp - 0x16c], eax
mov dword [ebp - 0x160], esi
call fcn.1000df40
add esp, 4
mov dword [esi + 8], 0
mov ecx, esi
mov dword [esi + 0xc], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
mov dword [esi + 0x40], 0
call fcn.1000d7e0
xor edx, edx
mov byte [ebp - 0x151], 0
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1d4], 0
mov dword [ebp - 0x188], edx
mov dword [ebp - 0x1cc], edx
xor esi, esi
mov dword [ebp - 4], edx
mov dword [ebp - 0x1c4], edx
mov dword [ebp - 0x1c8], edx
mov dword [ebp - 0x184], esi
mov dword [ebp - 0x1c0], esi
mov eax, dword [ebp - 0x160]
lea edx, [esi + 8]
mov byte [ebp - 4], 1
mov ecx, dword [eax + 0x5c]
mov dword [ebp - 0x194], ecx
test ecx, ecx
jle 0x10021fe3
cmp ecx, edx
mov edi, ecx
cmovl edi, edx
test edi, edi
jle 0x10021fe3
imul eax, edi, 0x5c
push eax
call fcn.10090530
mov ecx, dword [ebp - 0x194]
lea edx, [esi + 8]
mov dword [ebp - 0x188], eax
add esp, 4
mov dword [ebp - 0x1cc], eax
mov eax, dword [ebp - 0x160]
mov dword [ebp - 0x1d0], edi
mov eax, dword [eax + 0x44]
mov dword [ebp - 0x1d4], ecx
mov dword [ebp - 0x170], eax
test eax, eax
jle 0x10022031
cmp eax, 8
mov edi, eax
cmovl edi, edx
test edi, edi
jle 0x10022031
lea eax, [edi + edi*2]
shl eax, 3
push eax
call fcn.10090530
mov ecx, dword [ebp - 0x194]
mov esi, eax
mov eax, dword [ebp - 0x170]
add esp, 4
mov dword [ebp - 0x184], esi
mov dword [ebp - 0x1c0], esi
mov dword [ebp - 0x1c4], edi
mov edi, dword [ebp - 0x188]
imul ecx, ecx, 0x5c
mov dword [ebp - 0x1c8], eax
push ecx
push 0
push edi
call fcn.10113501
mov eax, dword [ebp - 0x170]
lea eax, [eax + eax*2]
shl eax, 3
push eax
push 0
push esi
call fcn.10113501
mov edx, dword [ebp - 0x160]
add esp, 0x18
mov dword [ebp - 0x178], 0
cmp dword [edx + 0x5c], 0
jle 0x100221c7
xor ecx, ecx
add edi, 0x3c
mov dword [ebp - 0x198], ecx
mov dword [ebp - 0x164], edi
nop dword [eax]
mov eax, dword [edx + 0x64]
xor edx, edx
add eax, ecx
mov dword [edi - 4], 0xffffffff
mov ecx, dword [ebp - 0x160]
mov dword [ebp - 0x180], eax
cmp dword [ecx + 0x44], edx
jle 0x10022463
mov esi, dword [ebp - 0x164]
or edi, 0xffffffff
nop dword [eax]
mov ecx, edi
cmp edi, 0xffffffff
jne 0x100220f3
mov ecx, dword [ebp - 0x160]
or edi, edi
mov eax, dword [eax + 0x78]
mov ecx, dword [ecx + 0x4c]
cmp eax, dword [ecx + edx*4]
jne 0x100220df
mov dword [esi - 4], edx
mov edi, edx
mov eax, dword [ebp - 0x160]
inc edx
mov ecx, edi
cmp edx, dword [eax + 0x44]
mov eax, dword [ebp - 0x180]
jl 0x100220c0
mov esi, dword [ebp - 0x184]
cmp ecx, 0xffffffff
je 0x10022463
push dword [ebx + 0x10]
mov edi, dword [ebp - 0x164]
push eax
push dword [ebp - 0x16c]
lea ecx, [edi - 0x3c]
call fcn.10023250
test al, al
je 0x10022463
mov edx, dword [ebp - 0x180]
mov eax, dword [edx + 0x40]
mov edx, dword [edx + 0x30]
shr eax, 8
and al, 1
or byte [ebp - 0x151], al
mov eax, dword [edi - 4]
lea eax, [eax + eax*2]
mov dword [ebp - 0x1a0], eax
test edx, edx
jne 0x10022156
mov ecx, dword [ebp - 0x160]
call fcn.1000d820
mov edx, eax
mov dword [edi - 8], edx
cmp word [edx], 0
je 0x1002217b
nop
movzx eax, word [edx + 2]
test ax, ax
je 0x1002217b
mov ecx, eax
cmp dword [edi], ecx
cmovge ecx, dword [edi]
add edx, 4
mov dword [edi], ecx
cmp word [edx], 0
jne 0x10022160
mov edx, dword [ebp - 0x1a0]
mov eax, dword [ebp - 0x178]
inc dword [esi + edx*8]
mov ecx, dword [edi]
cmp dword [esi + edx*8 + 4], ecx
cmovge ecx, dword [esi + edx*8 + 4]
inc eax
mov dword [esi + edx*8 + 4], ecx
add edi, 0x5c
mov edx, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x198]
add ecx, 0x7c
mov dword [ebp - 0x178], eax
mov dword [ebp - 0x164], edi
mov dword [ebp - 0x198], ecx
cmp eax, dword [edx + 0x5c]
jl 0x10022090
mov eax, dword [ebp - 0x194]
xor edi, edi
mov dword [ebp - 0x168], edi
test eax, eax
jle 0x1002254d
mov edx, dword [ebp - 0x188]
add edx, 0x40
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x158], edx
mov eax, dword [edx - 8]
lea esi, [edx + 4]
mov ecx, esi
lea edi, [eax + eax*2]
mov eax, dword [edx - 4]
add eax, 0x20
mov dword [ebp - 0x164], edi
sar eax, 5
push eax
call fcn.10011a40
mov eax, dword [esi]
shl eax, 2
push eax
mov eax, dword [ebp - 0x158]
push 0
push dword [eax + 0xc]
call fcn.10113501
mov eax, dword [ebp - 0x184]
add esp, 0xc
cmp dword [eax + edi*8 + 0xc], 0
lea esi, [eax + edi*8]
jne 0x10022262
mov eax, dword [eax + edi*8 + 4]
lea ecx, [esi + 0xc]
add eax, 0x20
sar eax, 5
push eax
call fcn.10011a40
mov eax, dword [esi + 0xc]
shl eax, 2
push eax
push 0
push dword [esi + 0x14]
call fcn.10113501
add esp, 0xc
mov edx, dword [ebp - 0x158]
mov eax, dword [edx - 0xc]
mov dword [ebp - 0x17c], eax
cmp word [eax], 0
je 0x10022351
nop dword [eax + eax]
movzx ecx, word [eax + 2]
test cx, cx
je 0x10022351
movzx edi, word [eax]
cmp edi, ecx
ja 0x10022338
nop dword [eax + eax]
mov eax, dword [ebp - 0x164]
mov ecx, edi
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov esi, edi
mov ecx, dword [ebp - 0x184]
sar esi, 5
mov dword [ebp - 0x16c], edx
mov eax, dword [ecx + eax*8 + 0x14]
test dword [eax + esi*4], edx
jne 0x1002231f
mov eax, dword [ebp - 0x158]
push edi
push dword [eax - 0x28]
call fcn.100a2260
mov edx, dword [ebp - 0x158]
add esp, 8
test eax, eax
je 0x10022325
inc dword [edx]
mov eax, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x184]
inc dword [ecx + eax*8 + 8]
mov eax, dword [edx + 0xc]
mov ecx, dword [ebp - 0x16c]
mov edx, dword [ebp - 0x184]
or dword [eax + esi*4], ecx
mov eax, dword [ebp - 0x164]
mov eax, dword [edx + eax*8 + 0x14]
or dword [eax + esi*4], ecx
inc dword [ebp - 0x168]
mov edx, dword [ebp - 0x158]
mov eax, dword [ebp - 0x17c]
inc edi
movzx eax, word [eax + 2]
cmp edi, eax
jle 0x100222a0
mov eax, dword [ebp - 0x17c]
add eax, 4
mov dword [ebp - 0x17c], eax
cmp word [eax], 0
jne 0x10022280
add edx, 0x5c
sub dword [ebp - 0x180], 1
mov dword [ebp - 0x158], edx
jne 0x100221f2
mov esi, dword [ebp - 0x188]
mov eax, dword [ebp - 0x194]
add esi, 0x54
mov dword [ebp - 0x178], eax
nop dword [eax]
mov edi, dword [esi - 0x14]
cmp edi, dword [esi]
jle 0x100223c6
mov eax, edi
shl eax, 5
push eax
call fcn.10090530
mov edx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x16c], eax
test edx, edx
je 0x100223c1
mov ecx, dword [esi - 4]
shl ecx, 5
push ecx
push edx
push eax
call fcn.101134f5
push dword [esi + 4]
call fcn.100905c0
mov eax, dword [ebp - 0x16c]
add esp, 0x10
mov dword [esi + 4], eax
mov dword [esi], edi
mov ecx, dword [esi - 8]
mov edx, ecx
mov eax, dword [esi - 0x10]
mov dword [ebp - 0x1a0], ecx
mov dword [ebp - 0x180], ecx
lea eax, [ecx + eax*4]
mov dword [ebp - 0x190], eax
cmp ecx, eax
jae 0x1002250a
nop dword [eax + eax]
mov eax, dword [edx]
mov dword [ebp - 0x16c], eax
test eax, eax
je 0x100224f5
xor edi, edi
mov dword [ebp - 0x164], edi
nop dword [eax + eax]
mov eax, 1
mov ecx, edi
shl eax, cl
test dword [ebp - 0x16c], eax
je 0x100224e5
mov ecx, dword [esi]
mov eax, edx
sub eax, dword [ebp - 0x1a0]
xorps xmm0, xmm0
shl eax, 3
and eax, 0xffffffe0
add eax, edi
movzx eax, ax
movups xmmword [ebp - 0x204], xmm0
mov dword [ebp - 0x1fc], eax
mov eax, dword [esi - 4]
cmp eax, ecx
jne 0x100224c5
lea edi, [eax + 1]
test ecx, ecx
je 0x1002246f
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
jmp 0x10022474
mov byte [ebp - 0x151], 0
jmp 0x100231fe
mov eax, 8
cmp eax, edi
cmovg edi, eax
cmp edi, ecx
jle 0x100224bf
mov eax, edi
shl eax, 5
push eax
call fcn.10090530
mov edx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x1ac], eax
test edx, edx
je 0x100224b7
mov ecx, dword [esi - 4]
shl ecx, 5
push ecx
push edx
push eax
call fcn.101134f5
push dword [esi + 4]
call fcn.100905c0
mov eax, dword [ebp - 0x1ac]
add esp, 0x10
mov dword [esi + 4], eax
xorps xmm0, xmm0
mov dword [esi], edi
mov edi, dword [ebp - 0x164]
mov eax, dword [esi - 4]
mov edx, dword [ebp - 0x180]
shl eax, 5
add eax, dword [esi + 4]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x204]
movups xmmword [eax + 0x10], xmm0
inc dword [esi - 4]
inc edi
mov dword [ebp - 0x164], edi
cmp edi, 0x20
jb 0x10022410
add edx, 4
mov dword [ebp - 0x180], edx
cmp edx, dword [ebp - 0x190]
jb 0x100223f0
mov eax, dword [esi - 8]
test eax, eax
je 0x1002252f
push eax
mov dword [esi - 0xc], 0
mov dword [esi - 0x10], 0
call fcn.100905c0
add esp, 4
mov dword [esi - 8], 0
add esi, 0x5c
sub dword [ebp - 0x178], 1
jne 0x10022380
mov esi, dword [ebp - 0x184]
mov edi, dword [ebp - 0x168]
jmp 0x10022555
xor edi, edi
mov dword [ebp - 0x168], edi
cmp dword [ebp - 0x170], 0
jle 0x100225a7
mov edi, dword [ebp - 0x170]
lea eax, [esi + 0x14]
mov dword [ebp - 0x16c], eax
mov esi, eax
nop
mov eax, dword [esi]
test eax, eax
je 0x10022593
push eax
mov dword [esi - 4], 0
mov dword [esi - 8], 0
call fcn.100905c0
add esp, 4
mov dword [esi], 0
add esi, 0x18
sub edi, 1
jne 0x10022570
mov esi, dword [ebp - 0x184]
mov edi, dword [ebp - 0x168]
test esi, esi
je 0x100225d6
push esi
mov dword [ebp - 0x1c4], 0
mov dword [ebp - 0x1c8], 0
call fcn.100905c0
add esp, 4
xor eax, eax
mov dword [ebp - 0x184], eax
mov dword [ebp - 0x1c0], eax
xor eax, eax
mov dword [ebp - 0x1f0], 0
mov dword [ebp - 0x1f4], 0
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x1ec], eax
mov byte [ebp - 4], 6
test edi, edi
jle 0x10022632
cmp edi, 8
mov esi, edi
mov ecx, 8
cmovl esi, ecx
test esi, esi
jle 0x10022632
lea eax, [esi + esi*2]
shl eax, 3
push eax
call fcn.10090530
add esp, 4
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x1ec], eax
mov dword [ebp - 0x1f0], esi
lea ecx, [edi + edi*2]
mov dword [ebp - 0x1f4], edi
shl ecx, 3
push ecx
push 0
push eax
call fcn.10113501
xor eax, eax
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x1b8], eax
mov dword [ebp - 0x1bc], eax
mov dword [ebp - 0x1b4], eax
push 0x40000
mov byte [ebp - 4], 7
call fcn.10090530
push 0x20
mov esi, eax
call fcn.10090530
movss xmm1, dword [0x1011dfec]
mov ecx, 1
mov dword [ebp - 0x1a4], ecx
xor edi, edi
mov dword [ebp - 0x1bc], ecx
add esp, 0x14
mov edx, 8
mov ecx, dword [ebp - 0x160]
mov dword [ebp - 0x1a8], eax
mov dword [ebp - 0x1b4], eax
mov dword [eax], esi
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x1b8], edx
mov dword [ebp - 0x158], edi
mov dword [ebp - 0x164], edi
mov dword [ebp - 0x168], eax
cmp dword [ebp - 0x194], edi
jle 0x10022a64
mov esi, dword [ebp - 0x188]
xor edx, edx
mov eax, dword [ebp - 0x194]
add esi, 0x18
mov dword [ebp - 0x18c], edx
mov dword [ebp - 0x19c], eax
mov ecx, dword [ecx + 0x64]
add ecx, edx
mov edx, dword [esi + 0x28]
test edx, edx
je 0x10022a31
mov eax, dword [ebp - 0x164]
mov edi, dword [ebp - 0x180]
add dword [ebp - 0x164], edx
lea eax, [eax + eax*2]
lea eax, [edi + eax*8]
mov dword [esi + 0x18], eax
movss xmm0, dword [ecx + 0x44]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1002274a
push ecx
lea eax, [ebp - 0x118]
movss dword [esp], xmm0
push eax
mov byte [ebp - 0x159], 1
call fcn.1000e010
add esp, 8
jmp 0x10022751
mov byte [ebp - 0x159], 0
cmp dword [esi + 0x38], 0
mov edi, dword [ebp - 0x158]
mov dword [ebp - 0x198], 0
jle 0x10022a31
xor ecx, ecx
mov dword [ebp - 0x17c], 0
mov dword [ebp - 0x174], ecx
nop dword [eax]
mov edi, dword [esi + 0x40]
add edi, ecx
push dword [edi + 0x18]
push dword [esi]
call fcn.100a2260
add esp, 8
test eax, eax
je 0x100229ff
push dword [esi + 8]
push eax
push dword [esi]
call fcn.100a2c30
add esp, 0xc
test eax, eax
jne 0x100229ff
test byte [esi + 4], 0x20
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x178], eax
je 0x100227d0
push eax
call fcn.100a8f10
mov eax, dword [ebp - 0x178]
add esp, 4
test byte [esi + 4], 0x40
je 0x100227df
push eax
call fcn.100a8ff0
add esp, 4
mov eax, dword [ebp - 0x178]
add eax, 0x18
je 0x100229ff
mov eax, dword [esi]
push dword [esi + 0xc]
mov eax, dword [eax + 0x54]
push eax
mov dword [ebp - 0x16c], eax
call fcn.100a5290
add esp, 8
test eax, eax
jne 0x100229ff
mov eax, dword [esi]
mov ecx, dword [eax + 0x54]
mov eax, dword [ecx + 0x50]
add ecx, 0x4c
mov dword [edi], eax
mov dword [ebp - 0x178], ecx
mov eax, dword [ecx]
mov dword [edi + 4], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x64]
mov dword [edi + 8], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x68]
neg eax
mov dword [edi + 0xc], eax
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax + 0x40]
add eax, 0x3f
and eax, 0xffffffc0
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x10], xmm0
cmp byte [ecx + 0x12], 7
sete al
mov byte [edi + 0x14], al
test ecx, ecx
je 0x100229ff
mov eax, dword [edi + 4]
imul eax, dword [edi]
mov edx, dword [ebp - 0x170]
shl eax, 2
mov dword [ebp - 0x190], eax
add eax, edx
cmp eax, 0x40000
jle 0x1002297a
xor eax, eax
push 0x40000
mov dword [ebp - 0x170], eax
call fcn.10090530
mov ecx, dword [ebp - 0x1a4]
add esp, 4
mov dword [ebp - 0x1ac], eax
mov eax, dword [ebp - 0x1b8]
cmp ecx, eax
jne 0x10022956
inc ecx
test eax, eax
je 0x100228d8
cdq
sub eax, edx
mov edx, dword [ebp - 0x1b8]
sar eax, 1
add eax, edx
jmp 0x100228e3
mov edx, dword [ebp - 0x1b8]
mov eax, 8
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp - 0x1a0], ecx
cmp ecx, edx
jle 0x10022950
lea eax, [ecx*4]
push eax
call fcn.10090530
mov edx, dword [ebp - 0x1a8]
add esp, 4
mov dword [ebp - 0x16c], eax
test edx, edx
je 0x10022938
mov ecx, dword [ebp - 0x1a4]
shl ecx, 2
push ecx
push edx
push eax
call fcn.101134f5
mov edx, dword [ebp - 0x1a8]
push edx
call fcn.100905c0
mov eax, dword [ebp - 0x16c]
add esp, 0x10
mov dword [ebp - 0x1a8], eax
mov dword [ebp - 0x1b4], eax
mov eax, dword [ebp - 0x1a0]
mov dword [ebp - 0x1b8], eax
mov ecx, dword [ebp - 0x1a4]
mov edx, dword [ebp - 0x1a8]
mov eax, dword [ebp - 0x1ac]
mov dword [edx + ecx*4], eax
inc ecx
mov edx, dword [ebp - 0x170]
mov dword [ebp - 0x1a4], ecx
mov dword [ebp - 0x1bc], ecx
jmp 0x10022980
mov ecx, dword [ebp - 0x1a4]
mov eax, dword [ebp - 0x1a8]
mov ecx, dword [eax + ecx*4 - 4]
lea eax, [ebp - 0x118]
add ecx, edx
add edx, dword [ebp - 0x190]
mov dword [ebp - 0x170], edx
xor edx, edx
cmp byte [ebp - 0x159], dl
mov dword [edi + 0x1c], ecx
cmove eax, edx
push eax
push dword [edi]
push ecx
push dword [ebp - 0x178]
lea ecx, [esi - 0x18]
call fcn.10021870
mov ecx, dword [edi]
mov edx, dword [ebp - 0x17c]
mov eax, dword [esi + 0x18]
add ecx, dword [ebp - 0x168]
mov dword [eax + edx + 4], ecx
mov ecx, dword [edi + 4]
mov eax, dword [esi + 0x18]
add ecx, dword [ebp - 0x168]
mov edi, dword [ebp - 0x158]
mov dword [eax + edx + 8], ecx
mov ecx, dword [esi + 0x18]
mov eax, dword [ecx + edx + 8]
imul eax, dword [ecx + edx + 4]
add edi, eax
mov dword [ebp - 0x158], edi
jmp 0x10022a05
mov edi, dword [ebp - 0x158]
mov eax, dword [ebp - 0x198]
mov ecx, dword [ebp - 0x174]
inc eax
add dword [ebp - 0x17c], 0x18
add ecx, 0x20
mov dword [ebp - 0x198], eax
mov dword [ebp - 0x174], ecx
cmp eax, dword [esi + 0x38]
jl 0x10022780
mov edx, dword [ebp - 0x18c]
add esi, 0x5c
movss xmm1, dword [0x1011dfec]
add edx, 0x7c
sub dword [ebp - 0x19c], 1
mov ecx, dword [ebp - 0x160]
mov dword [ebp - 0x18c], edx
jne 0x100226f3
mov eax, dword [ebp - 0x168]
mov esi, dword [ecx + 0x50]
test esi, esi
jle 0x10022a94
mov edx, dword [ecx + 0x58]
add edx, 4
movzx ecx, word [edx + 2]
lea edx, [edx + 0x1c]
add ecx, eax
movzx eax, word [edx - 0x1c]
add eax, dword [ebp - 0x168]
imul ecx, eax
mov eax, dword [ebp - 0x168]
add edi, ecx
sub esi, 1
jne 0x10022a71
movd xmm0, edi
xorps xmm1, xmm1
cvtdq2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x10022aad
sqrtsd xmm0, xmm0
jmp 0x10022ab2
call fcn.10113585
mov edi, dword [ebp - 0x160]
cvtsd2ss xmm0, xmm0
mov esi, dword [edi + 0x10]
mov dword [edi + 0x30], 0
cvttss2si eax, xmm0
inc eax
test esi, esi
jg 0x10022b0a
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [0x10121c68]
jb 0x10022ae6
mov esi, 0x1000
jmp 0x10022b0a
comiss xmm0, dword [0x10121c64]
jb 0x10022af6
mov esi, 0x800
jmp 0x10022b0a
comiss xmm0, dword [str.333D33]
mov esi, 0x200
mov eax, 0x400
cmovae esi, eax
mov dword [edi + 0x2c], esi
xor eax, eax
sub esi, dword [edi + 0x14]
mov dword [ebp - 0x1dc], 0
mov dword [ebp - 0x1e0], 0
mov dword [ebp - 0x1d8], eax
mov byte [ebp - 4], 8
test esi, esi
jle 0x10022b66
cmp esi, 8
mov edi, esi
mov ecx, 8
cmovl edi, ecx
test edi, edi
jle 0x10022b60
lea eax, [edi + edi*2]
shl eax, 2
push eax
call fcn.10090530
add esp, 4
mov dword [ebp - 0x1d8], eax
mov dword [ebp - 0x1dc], edi
mov edi, dword [ebp - 0x160]
push esi
push eax
mov eax, dword [edi + 0x2c]
mov ecx, 0x8000
sub ecx, dword [edi + 0x14]
sub eax, dword [edi + 0x14]
push ecx
push eax
lea eax, [ebp - 0x150]
mov dword [ebp - 0x1e0], esi
push eax
call fcn.100234b0
lea eax, [ebp - 0x150]
push eax
push edi
call fcn.1000e070
mov eax, dword [ebp - 0x194]
add esp, 0x1c
test eax, eax
jle 0x10022c10
mov esi, dword [ebp - 0x188]
add esi, 0x40
mov dword [ebp - 0x19c], eax
mov eax, dword [esi]
test eax, eax
je 0x10022bfe
push eax
push dword [esi - 0x10]
lea eax, [ebp - 0x150]
push eax
call fcn.10023630
xor edi, edi
add esp, 0xc
cmp dword [esi], edi
jle 0x10022bfe
xor edx, edx
mov eax, dword [esi - 0x10]
cmp dword [edx + eax + 0x14], 0
je 0x10022bf6
mov ecx, dword [edx + eax + 0x10]
add ecx, dword [edx + eax + 8]
mov eax, dword [ebp - 0x160]
cmp dword [eax + 0x30], ecx
cmovge ecx, dword [eax + 0x30]
mov dword [eax + 0x30], ecx
inc edi
add edx, 0x18
cmp edi, dword [esi]
jl 0x10022bd4
add esi, 0x5c
sub dword [ebp - 0x19c], 1
jne 0x10022bb3
mov edi, dword [ebp - 0x160]
test byte [edi], 1
mov eax, dword [edi + 0x30]
jne 0x10022c3d
lea ecx, [eax - 1]
mov eax, ecx
sar eax, 1
or ecx, eax
mov eax, ecx
sar eax, 2
or ecx, eax
mov eax, ecx
sar eax, 4
or ecx, eax
mov eax, ecx
sar eax, 8
or ecx, eax
mov eax, ecx
sar eax, 0x10
or eax, ecx
mov esi, dword [edi + 0x2c]
inc eax
movss xmm2, dword [0x1011dfec]
movaps xmm1, xmm2
mov dword [edi + 0x30], eax
movd xmm0, esi
cvtdq2ps xmm0, xmm0
imul esi, eax
cmp byte [ebp - 0x151], 0
divss xmm1, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x34], xmm1
divss xmm2, xmm0
movss dword [edi + 0x38], xmm2
je 0x10022c89
shl esi, 2
push esi
call fcn.10090530
mov dword [edi + 0x28], eax
jmp 0x10022c92
push esi
call fcn.10090530
mov dword [edi + 0x24], eax
push esi
push 0
push eax
call fcn.10113501
mov edx, dword [ebp - 0x194]
xor al, al
add esp, 0x10
mov byte [ebp - 0x159], al
test edx, edx
jle 0x100230e1
mov eax, dword [ebp - 0x188]
xor ecx, ecx
add eax, 4
mov dword [ebp - 0x1a0], ecx
mov dword [ebp - 0x168], eax
mov dword [ebp - 0x16c], edx
mov esi, dword [edi + 0x64]
sub esp, 8
movss xmm0, dword [eax + 4]
add esi, ecx
movss xmm1, dword [eax]
mov dword [ebp - 0x1e4], esi
movss dword [esp + 4], xmm0
mov ecx, dword [esi + 0x78]
movss dword [esp], xmm1
push esi
push ecx
push edi
mov dword [ebp - 0x19c], ecx
call fcn.1000e580
mov eax, dword [ebp - 0x168]
add esp, 0x14
mov ecx, dword [eax + 0x3c]
test ecx, ecx
je 0x100230b6
mov eax, dword [ebp - 0x19c]
movss xmm3, dword [esi + 0x28]
movss dword [ebp - 0x164], xmm3
mov dword [ebp - 0x1ac], 0
movss xmm0, dword [eax + 0x50]
addss xmm0, dword [0x1011d930]
cvttss2si eax, xmm0
movd xmm2, eax
mov eax, dword [ebp - 0x168]
cvtdq2ps xmm2, xmm2
addss xmm2, dword [esi + 0x2c]
mov esi, dword [edi + 0x14]
mov dword [ebp - 0x170], esi
movss dword [ebp - 0x17c], xmm2
jle 0x100230af
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x198], ecx
mov dword [ebp - 0x178], edx
nop
mov edi, dword [eax + 0x54]
mov eax, dword [eax + 0x2c]
add edi, edx
add eax, ecx
cmp dword [eax + 4], 0
jne 0x10022d9a
cmp dword [eax + 8], 0
je 0x10023073
mov edx, dword [eax + 0xc]
sub esp, 0x24
mov ecx, dword [edi + 4]
add edx, esi
mov esi, dword [eax + 0x10]
mov eax, dword [ebp - 0x168]
movd xmm0, dword [edi + 0xc]
movd xmm1, dword [edi + 8]
add esi, dword [ebp - 0x170]
movss xmm6, dword [eax + 0x28]
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x18c], esi
mov esi, dword [ebp - 0x160]
mov dword [ebp - 0x174], edx
cvtdq2ps xmm1, xmm1
mulss xmm0, xmm6
movd xmm7, eax
add eax, edx
movd xmm5, ecx
addss xmm0, xmm2
mulss xmm1, xmm6
cvtdq2ps xmm5, xmm5
cvtdq2ps xmm7, xmm7
addss xmm1, xmm3
movss dword [ebp - 0x190], xmm0
mulss xmm5, xmm6
mulss xmm7, xmm6
addss xmm5, xmm0
movd xmm2, eax
movd xmm0, dword [esi + 0x2c]
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0x158], xmm1
addss xmm7, xmm1
movd xmm1, dword [esi + 0x30]
mov esi, dword [ebp - 0x18c]
movd xmm4, edx
cvtdq2ps xmm4, xmm4
lea eax, [ecx + esi]
cvtdq2ps xmm2, xmm2
divss xmm4, xmm0
divss xmm2, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, word [edi + 0x18]
cvtdq2ps xmm1, xmm1
movd xmm3, esi
cvtdq2ps xmm3, xmm3
mov esi, dword [ebp - 0x19c]
mov ecx, esi
mulss xmm6, dword [edi + 0x10]
divss xmm0, xmm1
divss xmm3, xmm1
movss dword [esp + 0x20], xmm6
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [ebp - 0x190]
movss dword [esp + 0x18], xmm2
movss dword [esp + 0x14], xmm3
movss dword [esp + 0x10], xmm4
movss dword [esp + 0xc], xmm5
movss dword [esp + 8], xmm7
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp - 0x158]
movss dword [esp], xmm0
push eax
push dword [ebp - 0x1e4]
call fcn.1000b990
cmp byte [edi + 0x14], 0
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x28]
lea eax, [eax + eax*4]
je 0x10022edf
or dword [ecx + eax*8 - 0x28], 1
mov byte [ebp - 0x159], 1
mov esi, dword [ebp - 0x160]
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi]
mov dword [ebp - 0x158], ecx
mov eax, dword [esi + 0x2c]
mov esi, eax
mov ecx, dword [ebp - 0x160]
imul esi, dword [ebp - 0x18c]
mov dword [ebp - 0x190], eax
mov dword [ebp - 0x18c], 0
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x10022fb1
add eax, dword [ebp - 0x174]
mov ecx, dword [ebp - 0x158]
add eax, esi
cmp dword [edi + 4], 0
mov dword [ebp - 0x174], eax
jle 0x1002305d
lea esi, [edx*4]
mov dword [ebp - 0x1b0], esi
lea esi, [ecx + 3]
mov dword [ebp - 0x158], esi
xor ecx, ecx
test edx, edx
jle 0x10022f82
nop word [eax + eax]
mov edx, dword [ebp - 0x174]
lea esi, [esi + 4]
mov al, byte [esi - 4]
mov byte [edx + ecx], al
inc ecx
mov edx, dword [edi]
cmp ecx, edx
jl 0x10022f60
mov eax, dword [ebp - 0x174]
mov esi, dword [ebp - 0x158]
mov ecx, dword [ebp - 0x18c]
add eax, dword [ebp - 0x190]
inc ecx
add esi, dword [ebp - 0x1b0]
mov dword [ebp - 0x18c], ecx
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x158], esi
cmp ecx, dword [edi + 4]
jl 0x10022f51
jmp 0x1002305d
mov eax, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x174]
add ecx, esi
cmp dword [edi + 4], 0
mov eax, dword [eax + 0x28]
lea eax, [eax + ecx*4]
mov dword [ebp - 0x174], eax
jle 0x1002305d
mov ecx, dword [ebp - 0x190]
shl ecx, 2
mov dword [ebp - 0x190], ecx
lea ecx, [edx*4]
mov dword [ebp - 0x1e8], ecx
mov ecx, dword [ebp - 0x158]
xor esi, esi
test edx, edx
jle 0x10023033
mov ecx, eax
mov eax, dword [ebp - 0x158]
sub eax, dword [ebp - 0x174]
mov dword [ebp - 0x1b0], eax
mov eax, dword [eax + ecx]
lea ecx, [ecx + 4]
mov dword [ecx - 4], eax
inc esi
mov edx, dword [edi]
mov eax, dword [ebp - 0x1b0]
cmp esi, edx
jl 0x10023011
mov eax, dword [ebp - 0x174]
mov ecx, dword [ebp - 0x158]
mov esi, dword [ebp - 0x18c]
add eax, dword [ebp - 0x190]
inc esi
add ecx, dword [ebp - 0x1e8]
mov dword [ebp - 0x18c], esi
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x158], ecx
cmp esi, dword [edi + 4]
jl 0x10022ff7
mov esi, dword [ebp - 0x170]
movss xmm3, dword [ebp - 0x164]
movss xmm2, dword [ebp - 0x17c]
mov ecx, dword [ebp - 0x1ac]
mov eax, dword [ebp - 0x168]
inc ecx
add dword [ebp - 0x178], 0x20
add dword [ebp - 0x198], 0x18
mov edx, dword [ebp - 0x178]
cmp ecx, dword [eax + 0x3c]
mov dword [ebp - 0x1ac], ecx
mov ecx, dword [ebp - 0x198]
jl 0x10022d80
mov edi, dword [ebp - 0x160]
mov dword [eax + 0x2c], 0
mov ecx, dword [ebp - 0x1a0]
add eax, 0x5c
add ecx, 0x7c
mov dword [ebp - 0x168], eax
sub dword [ebp - 0x16c], 1
mov dword [ebp - 0x1a0], ecx
jne 0x10022cd1
mov al, byte [ebp - 0x159]
mov byte [edi + 0x21], al
xor esi, esi
mov edi, dword [ebp - 0x1a4]
test edi, edi
jle 0x10023106
mov eax, dword [ebp - 0x1a8]
push dword [eax + esi*4]
call fcn.100905c0
inc esi
add esp, 4
cmp esi, edi
jl 0x100230f0
mov edi, dword [ebp - 0x194]
test edi, edi
jle 0x10023169
mov esi, dword [ebp - 0x188]
add esi, 0x18
nop dword [eax]
mov eax, dword [esi + 0x40]
mov byte [ebp - 4], 9
test eax, eax
je 0x10023134
push eax
call fcn.100905c0
add esp, 4
mov eax, dword [esi + 0x34]
mov byte [ebp - 4], 0xa
test eax, eax
je 0x10023148
push eax
call fcn.100905c0
add esp, 4
mov eax, dword [esi]
mov byte [ebp - 4], 8
test eax, eax
je 0x10023161
push eax
call fcn.100a1da0
add esp, 4
mov dword [esi], 0
add esi, 0x5c
sub edi, 1
jne 0x10023120
mov esi, dword [ebp - 0x188]
test esi, esi
je 0x1002319e
push esi
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1d4], 0
call fcn.100905c0
add esp, 4
xor esi, esi
mov dword [ebp - 0x188], esi
mov dword [ebp - 0x1cc], esi
push dword [ebp - 0x160]
call fcn.1000dcd0
add esp, 4
mov byte [ebp - 0x151], 1
mov eax, dword [ebp - 0x1d8]
mov byte [ebp - 4], 0xb
test eax, eax
je 0x100231ca
push eax
call fcn.100905c0
add esp, 4
mov eax, dword [ebp - 0x1a8]
mov byte [ebp - 4], 0xc
test eax, eax
je 0x100231e1
push eax
call fcn.100905c0
add esp, 4
mov eax, dword [ebp - 0x180]
mov byte [ebp - 4], 0xd
test eax, eax
je 0x100231f8
push eax
call fcn.100905c0
add esp, 4
mov esi, dword [ebp - 0x184]
mov byte [ebp - 4], 0xe
test esi, esi
je 0x1002320f
push esi
call fcn.100905c0
add esp, 4
mov eax, dword [ebp - 0x188]
mov dword [ebp - 4], 0xf
test eax, eax
je 0x10023229
push eax
call fcn.100905c0
add esp, 4
mov al, byte [ebp - 0x151]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.10111c1a
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret