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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov esi, esp
mov eax, dword [0x101db764]
mov ecx, dword [ebp + 0x14]
mov ebx, dword [ebp + 8]
xor eax, ebp
mov dword [esi + 0xb8], eax
mov dword [esi + 0x48], ecx
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebx + 0x10c]
mov edx, dword [ebx + 0x114]
mov dword [esi + 0x44], ecx
mov ecx, dword [ebp + 0xc]
lea eax, [edx + edi]
shl eax, 2
mov dword [esi + 0x28], ecx
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
mov dword [esi + 8], edx
lea edx, [edx*4]
lea ecx, [ebx + 0x18]
push edx
mov dword [esi + 0x68], ecx
push ecx
mov dword [esi + 4], eax
push eax
call fcn.101613e0
add esp, 0xc
mov eax, dword [ebx + 0x110]
mov dword [esi + 0x64], eax
mov eax, dword [ebx + 0x128]
mov dword [esi + 0x10], eax
jmp 0x1015b2f3
mov eax, dword [esi + 0x44]
mov edx, ebx
lea eax, [eax + ecx*2]
mov dword [esi + 0x44], eax
lea eax, [ebx + ecx*4]
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x114]
mov dword [esi + 8], ecx
lea ecx, [ecx*4]
push ecx
push eax
push edx
call fcn.101613e0
add esp, 0xc
mov edi, dword [ebx + 0x10c]
mov eax, dword [ebx + 0x128]
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 4]
cmp ecx, edi
cmovle edi, ecx
mov ecx, dword [esi + 8]
lea ecx, [edx + ecx*4]
push edi
push eax
mov eax, dword [esi + 0x44]
push eax
push ecx
push ebx
call fcn.1015e0d0
add esp, 0x14
mov eax, dword [ebx + 0x114]
mov dword [esi + 0x6c], edi
shl edi, 0x10
cmp eax, 0x12
je 0x1015b7b0
cmp eax, 0x18
je 0x1015bb11
cmp eax, 0x24
jne 0x1015bdba
test edi, edi
jle 0x1015bdba
mov ebx, dword [esi + 4]
xor eax, eax
mov dword [esi + 0x2c], edi
mov dword [esi + 0x60], eax
sar eax, 0x10
movdqu xmm2, xmmword [ebx + eax*4 + 0x70]
movdqu xmm3, xmmword [ebx + eax*4 + 0x10]
movdqu xmm6, xmmword [ebx + eax*4 + 0x50]
movdqu xmm0, xmmword [ebx + eax*4 + 0x80]
mov dword [esi + 0x5c], eax
movdqu xmm1, xmmword [ebx + eax*4]
movdqu xmm4, xmmword [ebx + eax*4 + 0x20]
movdqu xmm5, xmmword [ebx + eax*4 + 0x30]
movdqu xmm7, xmmword [ebx + eax*4 + 0x60]
mov eax, dword [esi + 0x10]
pshufd xmm2, xmm2, 0x1b
pshufd xmm0, xmm0, 0x1b
paddd xmm2, xmm3
pshufd xmm3, xmm6, 0x1b
paddd xmm0, xmm1
pshufd xmm1, xmm7, 0x1b
movq xmm6, qword [eax + 0xc]
paddd xmm3, xmm5
movq xmm5, qword [eax + 4]
pshufd xmm7, xmm0, 0xe5
paddd xmm1, xmm4
movq xmm4, qword [eax + 0x14]
movd edi, xmm2
movdqa xmmword [esi + 0xa0], xmm0
movd ecx, xmm7
sar edi, 0x10
sar ecx, 0x10
punpcklwd xmm6, xmm6
punpcklwd xmm5, xmm5
psrad xmm6, 0x10
punpcklwd xmm4, xmm4
psrad xmm5, 0x10
psrad xmm4, 0x10
movd edx, xmm6
pshufd xmm7, xmm5, 0xe5
movd ebx, xmm5
movdqa xmmword [esi + 0x90], xmm4
imul edx, edi
movd dword [esi + 8], xmm7
pshufd xmm7, xmm0, 0x4e
movd dword [esi + 0x58], xmm7
pshufd xmm7, xmm5, 0x4e
movd dword [esi + 0x14], xmm7
pshufd xmm7, xmm0, 0xe7
movd dword [esi + 0x54], xmm7
pshufd xmm7, xmm5, 0xe7
movd dword [esi + 0x24], xmm7
pshufd xmm7, xmm2, 0xe5
movd dword [esi + 0x50], xmm7
pshufd xmm7, xmm6, 0xe5
movd dword [esi + 0xc], xmm7
pshufd xmm7, xmm2, 0x4e
movd dword [esi + 0x4c], xmm7
pshufd xmm7, xmm6, 0x4e
movd dword [esi + 0x18], xmm7
pshufd xmm7, xmm2, 0xe7
movd dword [esi + 0x88], xmm7
pshufd xmm7, xmm6, 0xe7
movd dword [esi + 0x20], xmm7
pshufd xmm7, xmm1, 0xe5
movd dword [esi + 0x84], xmm7
pshufd xmm7, xmm4, 0xe5
movd dword [esi + 0x1c], xmm7
pshufd xmm7, xmm1, 0x4e
movd dword [esi + 0x80], xmm7
pshufd xmm7, xmm4, 0x4e
movd dword [esi + 0x40], xmm7
pshufd xmm7, xmm1, 0xe7
movd dword [esi + 0x7c], xmm7
pshufd xmm7, xmm4, 0xe7
movd dword [esi + 0x3c], xmm7
pshufd xmm7, xmm3, 0xe5
movd dword [esi + 0x70], xmm7
movq xmm7, qword [eax + 0x1c]
movd eax, xmm0
movdqa xmm0, xmmword [0x101aebe0]
sar eax, 0x10
imul ebx, eax
mov eax, dword [esi + 8]
mov dword [esi + 0x8c], ebx
punpcklwd xmm7, xmm7
psrad xmm7, 0x10
imul eax, ecx
mov ecx, dword [esi + 0x58]
pshufd xmm4, xmm7, 0xe5
mov dword [esi + 0x58], edx
mov edx, dword [esi + 0x5c]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x14]
movd dword [esi + 0x38], xmm4
pshufd xmm4, xmm3, 0x4e
movd dword [esi + 0x78], xmm4
pshufd xmm4, xmm7, 0x4e
movd dword [esi + 0x34], xmm4
pshufd xmm4, xmm3, 0xe7
sar ecx, 0x10
movd dword [esi + 0x74], xmm4
pshufd xmm4, xmm7, 0xe7
mov edi, edx
imul eax, ecx
mov ecx, dword [esi + 0x54]
movd dword [esi + 0x30], xmm4
movdqa xmm4, xmmword [0x101aebe0]
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x24]
sar ecx, 0x10
pand xmm2, xmm4
imul eax, ecx
mov ecx, dword [esi + 0x50]
pshufd xmm4, xmm2, 0xf5
pmuludq xmm2, xmm6
pshufd xmm6, xmm6, 0xf5
mov dword [esi + 0x24], eax
mov eax, dword [esi + 0xc]
pmuludq xmm6, xmm4
movdqa xmm4, xmmword [esi + 0x90]
pshufd xmm2, xmm2, 0xe8
sar ecx, 0x10
imul eax, ecx
mov ecx, dword [esi + 0x4c]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x18]
sar ecx, 0x10
imul eax, ecx
mov ecx, dword [esi + 0x88]
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x20]
sar ecx, 0x10
imul eax, ecx
movd ecx, xmm4
pshufd xmm4, xmm6, 0xe8
pshufd xmm6, xmm7, 0xf5
mov dword [esi + 0x20], eax
movd eax, xmm1
punpckldq xmm2, xmm4
pand xmm1, xmm0
sar eax, 0x10
psrad xmm2, 0x10
imul ecx, eax
mov eax, dword [esi + 0x1c]
mov dword [esi + 0x54], ecx
mov ecx, dword [esi + 0x84]
sar ecx, 0x10
imul eax, ecx
mov ecx, dword [esi + 0x80]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x40]
sar ecx, 0x10
imul eax, ecx
mov ecx, dword [esi + 0x7c]
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x3c]
sar ecx, 0x10
imul eax, ecx
movd ecx, xmm7
mov dword [esi + 0x3c], eax
movd eax, xmm3
pand xmm3, xmm0
sar eax, 0x10
pshufd xmm4, xmm3, 0xf5
pmuludq xmm3, xmm7
movdqa xmm7, xmmword [esi + 0xa0]
imul ecx, eax
mov eax, dword [esi + 0x38]
pmuludq xmm6, xmm4
pshufd xmm3, xmm3, 0xe8
mov dword [esi + 0x50], ecx
mov ecx, dword [esi + 0x70]
pshufd xmm4, xmm6, 0xe8
punpckldq xmm3, xmm4
pand xmm7, xmm0
psrad xmm3, 0x10
pshufd xmm4, xmm7, 0xf5
pmuludq xmm7, xmm5
pshufd xmm5, xmm5, 0xf5
paddd xmm2, xmm3
sar ecx, 0x10
pmuludq xmm5, xmm4
pshufd xmm0, xmm7, 0xe8
imul eax, ecx
mov ecx, dword [esi + 0x78]
pshufd xmm4, xmm5, 0xe8
movdqa xmm5, xmmword [esi + 0x90]
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0x34]
punpckldq xmm0, xmm4
pshufd xmm4, xmm1, 0xf5
psrad xmm0, 0x10
sar ecx, 0x10
pmuludq xmm1, xmm5
pshufd xmm5, xmm5, 0xf5
imul eax, ecx
mov ecx, dword [esi + 0x74]
pmuludq xmm5, xmm4
pshufd xmm1, xmm1, 0xe8
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x30]
pshufd xmm4, xmm5, 0xe8
punpckldq xmm1, xmm4
psrad xmm1, 0x10
sar ecx, 0x10
paddd xmm2, xmm1
imul eax, ecx
paddd xmm2, xmm0
mov dword [esi + 0x30], eax
mov eax, dword [esi + 4]
pshufd xmm0, xmm2, 0x4e
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0xe5
paddd xmm1, xmm0
mov ecx, dword [eax + edx*4 + 0x4c]
mov eax, dword [esi + 4]
add ecx, dword [eax + edx*4 + 0x40]
mov ebx, ecx
movzx eax, cx
mov ecx, dword [esi + 0x10]
sar ebx, 0x10
movsx edx, word [ecx + 0x24]
imul eax, edx
imul ebx, edx
mov edx, dword [esi + 4]
mov dword [esi + 0x4c], ebx
mov ebx, dword [esi + 4]
sar eax, 0x10
mov edx, dword [edx + edi*4 + 0x48]
add edx, dword [ebx + edi*4 + 0x44]
movsx ebx, word [ecx + 0x26]
mov ecx, 0x8000
movzx edi, dx
sar edx, 0x10
imul edi, ebx
imul edx, ebx
movd ebx, xmm1
add ebx, eax
sar edi, 0x10
add ebx, edi
mov edi, dword [esi + 0x28]
add ebx, dword [esi + 0x8c]
add ebx, dword [esi + 8]
add ebx, dword [esi + 0x14]
add ebx, dword [esi + 0x24]
add ebx, dword [esi + 0x58]
add ebx, dword [esi + 0xc]
add ebx, dword [esi + 0x18]
add ebx, dword [esi + 0x20]
add ebx, dword [esi + 0x54]
add ebx, dword [esi + 0x1c]
add ebx, dword [esi + 0x40]
add ebx, dword [esi + 0x3c]
add ebx, dword [esi + 0x50]
add ebx, dword [esi + 0x38]
add ebx, dword [esi + 0x34]
add ebx, dword [esi + 0x30]
add ebx, dword [esi + 0x4c]
add ebx, edx
mov edx, 0x7fff
mov eax, ebx
shr eax, 5
inc eax
shr eax, 1
cmp ebx, 0xffdfffe0
cmovl eax, ecx
cmp ebx, 0x1fffdf
mov ebx, dword [esi + 4]
cmovg eax, edx
mov edx, dword [esi + 0x60]
mov word [edi], ax
add edi, 2
mov dword [esi + 0x28], edi
add edx, dword [esi + 0x64]
cmp edx, dword [esi + 0x2c]
mov eax, edx
jl 0x1015b34b
jmp 0x1015bdbd
test edi, edi
jle 0x1015bdba
mov eax, dword [ebx + 0x118]
mov ebx, dword [esi + 4]
mov dword [esi + 0x2c], edi
movsx edx, ax
dec eax
mov dword [esi + 0x20], eax
xor eax, eax
mov dword [esi + 0x1c], edx
mov ecx, eax
mov dword [esi + 0x24], eax
movzx eax, ax
sar ecx, 0x10
imul eax, dword [esi + 0x1c]
mov dword [esi + 8], ecx
mov ecx, dword [ebx + ecx*4]
sar eax, 0x10
mov ebx, ecx
movzx edi, cx
mov ecx, dword [esi + 0x10]
lea edx, [eax + eax*8]
mov dword [esi + 0xc], eax
sar ebx, 0x10
mov dword [esi + 0x14], edx
movsx eax, word [ecx + edx*2 + 4]
imul edi, eax
imul ebx, eax
mov eax, dword [esi + 4]
sar edi, 0x10
add edi, ebx
mov ebx, dword [esi + 8]
mov ebx, dword [eax + ebx*4 + 4]
movsx eax, word [ecx + edx*2 + 6]
mov edx, dword [esi + 8]
mov dword [esi + 0x18], ebx
sar ebx, 0x10
movzx ecx, word [esi + 0x18]
imul ebx, eax
add ebx, edi
imul ecx, eax
mov eax, dword [esi + 4]
sar ecx, 0x10
add ecx, ebx
mov ebx, dword [esi + 0x14]
mov edi, dword [eax + edx*4 + 8]
mov eax, dword [esi + 0x10]
movsx ebx, word [eax + ebx*2 + 8]
mov dword [esi + 0x18], edi
sar edi, 0x10
movzx eax, word [esi + 0x18]
imul edi, ebx
add edi, ecx
mov ecx, dword [esi + 4]
imul eax, ebx
mov ebx, dword [esi + 0x14]
sar eax, 0x10
add eax, edi
mov edx, dword [ecx + edx*4 + 0xc]
mov ecx, dword [esi + 0x10]
movsx ecx, word [ecx + ebx*2 + 0xa]
mov edi, edx
sar edi, 0x10
imul edi, ecx
add edi, eax
movzx eax, dx
mov edx, dword [esi + 8]
imul eax, ecx
mov ecx, dword [esi + 4]
sar eax, 0x10
add eax, edi
mov edi, dword [ecx + edx*4 + 0x10]
mov ecx, dword [esi + 0x10]
movsx ecx, word [ecx + ebx*2 + 0xc]
mov dword [esi + 0x18], edi
sar edi, 0x10
imul edi, ecx
add edi, eax
movzx eax, word [esi + 0x18]
imul eax, ecx
mov ecx, dword [esi + 4]
sar eax, 0x10
add eax, edi
mov ecx, dword [ecx + edx*4 + 0x14]
mov edx, ebx
mov ebx, dword [esi + 0x10]
movsx ebx, word [ebx + edx*2 + 0xe]
mov edi, ecx
sar edi, 0x10
imul edi, ebx
add edi, eax
movzx eax, cx
mov ecx, dword [esi + 4]
imul eax, ebx
mov ebx, dword [esi + 0x10]
sar eax, 0x10
add eax, edi
mov edi, dword [esi + 8]
mov edi, dword [ecx + edi*4 + 0x18]
movsx ecx, word [ebx + edx*2 + 0x10]
mov edx, dword [esi + 8]
mov dword [esi + 0x18], edi
sar edi, 0x10
imul edi, ecx
add edi, eax
movzx eax, word [esi + 0x18]
imul eax, ecx
mov ecx, dword [esi + 4]
sar eax, 0x10
add eax, edi
mov ecx, dword [ecx + edx*4 + 0x1c]
mov edx, dword [esi + 0x14]
movsx edx, word [ebx + edx*2 + 0x12]
mov edi, ecx
mov ebx, dword [esi + 8]
sar edi, 0x10
imul edi, edx
add edi, eax
movzx eax, cx
mov ecx, dword [esi + 4]
imul eax, edx
mov edx, dword [esi + 0x10]
sar eax, 0x10
add eax, edi
mov edi, dword [ecx + ebx*4 + 0x20]
mov ecx, dword [esi + 0x14]
movsx edx, word [edx + ecx*2 + 0x14]
mov dword [esi + 0x18], edi
sar edi, 0x10
movzx ecx, word [esi + 0x18]
imul edi, edx
add edi, eax
mov eax, dword [esi + 0x20]
imul ecx, edx
mov edx, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
sub eax, dword [esi + 0xc]
mov edi, dword [edx + ebx*4 + 0x44]
mov ebx, dword [esi + 0x10]
lea eax, [eax + eax*8]
mov dword [esi + 0xc], edi
sar edi, 0x10
movsx edx, word [ebx + eax*2 + 4]
mov dword [esi + 0x14], eax
mov eax, dword [esi + 8]
imul edi, edx
add edi, ecx
movzx ecx, word [esi + 0xc]
imul ecx, edx
mov edx, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
mov edx, dword [edx + eax*4 + 0x40]
mov eax, dword [esi + 0x14]
movsx ebx, word [ebx + eax*2 + 6]
mov edi, edx
mov eax, dword [esi + 8]
sar edi, 0x10
imul edi, ebx
add edi, ecx
movzx ecx, dx
mov edx, dword [esi + 4]
imul ecx, ebx
mov ebx, dword [esi + 0x14]
sar ecx, 0x10
add ecx, edi
mov edi, dword [edx + eax*4 + 0x3c]
mov edx, dword [esi + 0x10]
movsx edx, word [edx + ebx*2 + 8]
mov dword [esi + 0xc], edi
sar edi, 0x10
imul edi, edx
add edi, ecx
movzx ecx, word [esi + 0xc]
imul ecx, edx
mov edx, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
mov edx, dword [edx + eax*4 + 0x38]
mov eax, dword [esi + 0x10]
movsx eax, word [eax + ebx*2 + 0xa]
mov edi, edx
mov ebx, dword [esi + 0x10]
sar edi, 0x10
imul edi, eax
add edi, ecx
movzx ecx, dx
mov edx, dword [esi + 4]
imul ecx, eax
mov eax, dword [esi + 8]
sar ecx, 0x10
add ecx, edi
mov edi, dword [edx + eax*4 + 0x34]
mov edx, dword [esi + 0x14]
movsx ebx, word [ebx + edx*2 + 0xc]
mov dword [esi + 0xc], edi
sar edi, 0x10
mov edx, dword [esi + 4]
imul edi, ebx
add edi, ecx
movzx ecx, word [esi + 0xc]
imul ecx, ebx
mov ebx, dword [esi + 0x10]
sar ecx, 0x10
add ecx, edi
mov edi, dword [edx + eax*4 + 0x30]
mov eax, dword [esi + 0x14]
movsx edx, word [ebx + eax*2 + 0xe]
mov dword [esi + 0xc], edi
sar edi, 0x10
imul edi, edx
add edi, ecx
movzx ecx, word [esi + 0xc]
imul ecx, edx
mov edx, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
mov edi, dword [esi + 8]
mov edi, dword [edx + edi*4 + 0x2c]
movsx edx, word [ebx + eax*2 + 0x10]
mov dword [esi + 0xc], edi
sar edi, 0x10
imul edi, edx
add edi, ecx
movzx ecx, word [esi + 0xc]
imul ecx, edx
mov edx, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
mov edi, dword [esi + 8]
mov edi, dword [edx + edi*4 + 0x28]
mov edx, eax
mov eax, dword [esi + 0x10]
movsx ebx, word [eax + edx*2 + 0x12]
mov dword [esi + 0xc], edi
sar edi, 0x10
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x10]
imul edi, ebx
add edi, ecx
movzx ecx, word [esi + 0xc]
imul ecx, ebx
mov ebx, dword [esi + 4]
sar ecx, 0x10
add ecx, edi
mov edi, dword [ebx + edx*4 + 0x24]
mov edx, dword [esi + 0x14]
movsx eax, word [eax + edx*2 + 0x14]
mov dword [esi + 8], edi
sar edi, 0x10
mov edx, 0x8000
imul edi, eax
add edi, ecx
movzx ecx, word [esi + 8]
imul ecx, eax
sar ecx, 0x10
add ecx, edi
mov edi, dword [esi + 0x28]
mov eax, ecx
shr eax, 5
inc eax
shr eax, 1
cmp ecx, 0xffdfffe0
cmovl eax, edx
cmp ecx, 0x1fffdf
mov edx, 0x7fff
cmovg eax, edx
mov edx, dword [esi + 0x24]
mov word [edi], ax
add edi, 2
mov dword [esi + 0x28], edi
add edx, dword [esi + 0x64]
cmp edx, dword [esi + 0x2c]
mov eax, edx
jl 0x1015b7d0
jmp 0x1015bdbd
test edi, edi
jle 0x1015bdba
mov ebx, dword [esi + 4]
xor eax, eax
mov dword [esi + 0x2c], edi
mov dword [esi + 8], eax
sar eax, 0x10
mov edx, dword [esi + 0x10]
movdqu xmm0, xmmword [ebx + eax*4 + 0x50]
movdqu xmm1, xmmword [ebx + eax*4]
movdqu xmm3, xmmword [ebx + eax*4 + 0x10]
mov dword [esi + 0x5c], eax
mov edi, edx
pshufd xmm0, xmm0, 0x1b
paddd xmm0, xmm1
movq xmm1, qword [edx + 4]
movd ecx, xmm0
pshufd xmm2, xmm0, 0xe5
sar ecx, 0x10
punpcklwd xmm1, xmm1
psrad xmm1, 0x10
movd edx, xmm1
imul edx, ecx
movd ecx, xmm2
pshufd xmm2, xmm1, 0xe5
mov dword [esi + 0x14], edx
movd edx, xmm2
sar ecx, 0x10
pshufd xmm2, xmm0, 0x4e
imul edx, ecx
movd ecx, xmm2
pshufd xmm2, xmm1, 0x4e
mov dword [esi + 0x24], edx
movd edx, xmm2
sar ecx, 0x10
pshufd xmm2, xmm0, 0xe7
imul edx, ecx
movd ecx, xmm2
pshufd xmm2, xmm1, 0xe7
mov dword [esi + 0xc], edx
movd edx, xmm2
movdqu xmm2, xmmword [ebx + eax*4 + 0x40]
sar ecx, 0x10
imul edx, ecx
mov dword [esi + 0x18], edx
pshufd xmm2, xmm2, 0x1b
paddd xmm2, xmm3
movq xmm3, qword [edi + 0xc]
movd ecx, xmm2
pshufd xmm4, xmm2, 0xe5
sar ecx, 0x10
punpcklwd xmm3, xmm3
psrad xmm3, 0x10
movd edx, xmm3
imul edx, ecx
movd ecx, xmm4
pshufd xmm4, xmm3, 0xe5
mov dword [esi + 0x20], edx
movd edx, xmm4
sar ecx, 0x10
pshufd xmm4, xmm2, 0x4e
imul edx, ecx
movd ecx, xmm4
pshufd xmm4, xmm3, 0x4e
mov dword [esi + 0x1c], edx
movd edx, xmm4
sar ecx, 0x10
pshufd xmm4, xmm2, 0xe7
imul edx, ecx
movd ecx, xmm4
pshufd xmm4, xmm3, 0xe7
mov dword [esi + 0x40], edx
movd edx, xmm4
sar ecx, 0x10
movdqa xmm4, xmmword [0x101aebe0]
imul edx, ecx
mov ecx, dword [ebx + eax*4 + 0x3c]
mov dword [esi + 0x3c], edx
pand xmm0, xmm4
pand xmm2, xmm4
add ecx, dword [ebx + eax*4 + 0x20]
pshufd xmm4, xmm0, 0xf5
pmuludq xmm0, xmm1
pshufd xmm1, xmm1, 0xf5
pmuludq xmm1, xmm4
pshufd xmm0, xmm0, 0xe8
pshufd xmm1, xmm1, 0xe8
punpckldq xmm0, xmm1
pshufd xmm1, xmm2, 0xf5
pmuludq xmm2, xmm3
pshufd xmm3, xmm3, 0xf5
mov edx, ecx
movzx eax, cx
movsx ecx, word [edi + 0x14]
pmuludq xmm3, xmm1
pshufd xmm2, xmm2, 0xe8
psrad xmm0, 0x10
sar edx, 0x10
pshufd xmm1, xmm3, 0xe8
punpckldq xmm2, xmm1
psrad xmm2, 0x10
imul eax, ecx
imul edx, ecx
paddd xmm0, xmm2
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0x5c]
mov dword [esi + 0x38], edx
pshufd xmm1, xmm0, 0x4e
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
paddd xmm0, xmm1
mov ecx, dword [ebx + eax*4 + 0x38]
add ecx, dword [ebx + eax*4 + 0x24]
mov edx, ecx
movzx ebx, cx
movsx ecx, word [edi + 0x16]
sar edx, 0x10
imul edx, ecx
imul ebx, ecx
mov ecx, dword [esi + 4]
mov dword [esi + 0x90], ebx
mov dword [esi + 0x34], edx
movsx edx, word [edi + 0x18]
mov ebx, dword [ecx + eax*4 + 0x34]
mov ecx, dword [esi + 4]
add ebx, dword [ecx + eax*4 + 0x28]
movzx ecx, bx
sar ebx, 0x10
imul ecx, edx
imul ebx, edx
mov dword [esi + 0x60], ecx
mov ecx, dword [esi + 4]
mov edx, dword [ecx + eax*4 + 0x30]
mov ecx, dword [esi + 4]
add edx, dword [ecx + eax*4 + 0x2c]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x30]
movsx eax, word [eax + 0x1a]
movzx edi, dx
sar edx, 0x10
sar ecx, 0x10
imul edi, eax
imul edx, eax
movd eax, xmm0
add eax, ecx
mov ecx, dword [esi + 0x90]
sar edi, 0x10
sar ecx, 0x10
add eax, ecx
mov ecx, dword [esi + 0x60]
sar ecx, 0x10
add eax, ecx
add eax, edi
add eax, dword [esi + 0x14]
add eax, dword [esi + 0x24]
add eax, dword [esi + 0xc]
add eax, dword [esi + 0x18]
add eax, dword [esi + 0x20]
add eax, dword [esi + 0x1c]
add eax, dword [esi + 0x40]
add eax, dword [esi + 0x3c]
add eax, dword [esi + 0x38]
add eax, dword [esi + 0x34]
add eax, ebx
mov ebx, dword [esi + 4]
add eax, edx
mov edx, 0x8000
mov ecx, eax
shr ecx, 5
inc ecx
shr ecx, 1
cmp eax, 0xffdfffe0
cmovl ecx, edx
mov edx, dword [esi + 8]
cmp eax, 0x1fffdf
mov eax, 0x7fff
cmovg ecx, eax
mov eax, dword [esi + 0x28]
add edx, dword [esi + 0x64]
mov word [eax], cx
add eax, 2
mov dword [esi + 0x28], eax
cmp edx, dword [esi + 0x2c]
mov eax, edx
jl 0x1015bb21
jmp 0x1015bdbd
mov ebx, dword [esi + 4]
mov eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x6c]
sub eax, ecx
cmp eax, 2
mov dword [esi + 0x48], eax
jge 0x1015b2bb
lea eax, [ebx + ecx*4]
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x114]
shl ecx, 2
push ecx
push eax
push dword [esi + 0x68]
call fcn.101613e0
add esp, 0xc
mov ecx, dword [esi + 0xb8]
xor ecx, ebp
call fcn.1015e65c
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret