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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x990
mov esi, ecx
mov edi, dword [esp + 0x9a4]
mov ebx, dword [esp + 0x9a8]
lea ecx, [esp + 0x390]
call fcn.00407556
lea ecx, [esp + 0x290]
mov edx, ebx
call fcn.00407556
lea ebp, [esp + 0x490]
mov ecx, ebp
mov edx, edi
call fcn.00407625
movsd xmm0, qword [edi + 0x20]
lea edx, [esp + 0x128]
movsd qword [edx + 0x20], xmm0
movups xmm0, xmmword [edi]
movups xmm1, xmmword [edi + 0x10]
movups xmmword [edx + 0x10], xmm1
movups xmmword [edx], xmm0
movups xmm0, xmmword [edi + 0x28]
movups xmm1, xmmword [edi + 0x38]
movups xmmword [edx + 0x28], xmm0
movups xmmword [edx + 0x38], xmm1
movsd xmm0, qword [edi + 0x48]
movsd qword [edx + 0x48], xmm0
movups xmm0, xmmword [edi + 0x50]
movdqu xmm1, xmmword [edi + 0x60]
movups xmmword [edx + 0x50], xmm0
movdqu xmmword [edx + 0x60], xmm1
movq xmm0, qword [edi + 0x70]
movq qword [edx + 0x70], xmm0
lea edi, [esp + 8]
mov ecx, edi
call fcn.004076dd
lea ebx, [esp + 0x1f0]
mov ecx, ebx
mov edx, edi
call fcn.004078e3
mov ecx, edi
mov edx, ebx
push ebp
call fcn.00407934
add esp, 4
lea ebp, [esp + 0x128]
mov ecx, ebp
mov edx, edi
call fcn.004078e3
lea ebx, [esp + 0x530]
mov ecx, ebx
mov edx, ebp
call fcn.00407625
mov ecx, edi
lea edx, [esp + 0x1f0]
push ebx
call fcn.00407934
add esp, 4
mov ecx, ebp
mov edx, edi
call fcn.004078e3
lea ebx, [esp + 0x5d0]
mov ecx, ebx
mov edx, ebp
call fcn.00407625
mov ecx, edi
lea edx, [esp + 0x1f0]
push ebx
call fcn.00407934
add esp, 4
mov ecx, ebp
mov edx, edi
call fcn.004078e3
lea ebx, [esp + 0x670]
mov ecx, ebx
mov edx, ebp
call fcn.00407625
mov ecx, edi
lea edx, [esp + 0x1f0]
push ebx
call fcn.00407934
add esp, 4
mov ecx, ebp
mov edx, edi
call fcn.004078e3
lea ebx, [esp + 0x710]
mov ecx, ebx
mov edx, ebp
call fcn.00407625
mov ecx, edi
lea edx, [esp + 0x1f0]
push ebx
call fcn.00407934
add esp, 4
mov ecx, ebp
mov edx, edi
call fcn.004078e3
lea ebx, [esp + 0x7b0]
mov ecx, ebx
mov edx, ebp
call fcn.00407625
mov ecx, edi
lea edx, [esp + 0x1f0]
push ebx
call fcn.00407934
add esp, 4
mov ecx, ebp
mov edx, edi
call fcn.004078e3
lea ebx, [esp + 0x850]
mov ecx, ebx
mov edx, ebp
call fcn.00407625
mov ecx, edi
lea edx, [esp + 0x1f0]
push ebx
call fcn.00407934
add esp, 4
mov ecx, ebp
mov edx, edi
call fcn.004078e3
lea ecx, [esp + 0x8f0]
mov edx, ebp
call fcn.00407625
xor eax, eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x20], eax
pxor xmm0, xmm0
movdqu xmmword [esi + 0x10], xmm0
movdqu xmmword [esi], xmm0
lea ecx, [esi + 0x28]
mov dword [esp + 0xd4], ecx
movdqu xmmword [esi + 0x2c], xmm0
movdqu xmmword [esi + 0x3c], xmm0
mov dword [esi + 0x4c], eax
xor ecx, ecx
inc ecx
mov dword [esi + 0x28], ecx
lea edx, [esi + 0x50]
mov dword [esp + 0xd0], edx
movdqu xmmword [esi + 0x54], xmm0
movdqu xmmword [esi + 0x64], xmm0
mov dword [esi + 0x74], eax
mov dword [esp + 4], esi
mov dword [esi + 0x50], ecx
mov esi, 0xff
xor eax, eax
dec eax
cmp byte [esp + esi + 0x390], 0
jne 0x40698f
cmp byte [esp + esi + 0x290], 0
jne 0x40698f
add esi, 0xffffffff
jb 0x406974
mov esi, eax
test esi, esi
js 0x407302
inc esi
lea ebp, [esp + 8]
mov ecx, ebp
mov edx, dword [esp + 4]
call fcn.004076dd
movzx ebx, byte [esp + esi + 0x38f]
test bl, bl
mov dword [esp], esi
jle 0x4069eb
mov edi, esi
lea esi, [esp + 0x128]
mov ecx, esi
mov edx, ebp
call fcn.004078e3
shr ebx, 1
lea eax, [ebx + ebx*4]
shl eax, 5
add eax, esp
add eax, 0x490
mov ecx, ebp
mov edx, esi
mov esi, edi
push eax
call fcn.00407934
add esp, 4
jmp 0x406cec
test bl, bl
jns 0x406cec
lea ecx, [esp + 0x128]
lea edx, [esp + 8]
call fcn.004078e3
movdqu xmm0, xmmword [esp + 0x150]
movdqu xmm1, xmmword [esp + 0x128]
movdqu xmm2, xmmword [esp + 0x138]
movdqa xmm3, xmm1
paddd xmm3, xmm0
movdqu xmm4, xmmword [esp + 0x160]
movdqa xmm5, xmm2
paddd xmm5, xmm4
mov eax, dword [esp + 0x170]
mov ecx, dword [esp + 0x148]
lea edx, [ecx + eax]
mov esi, dword [esp + 0x174]
mov ebp, dword [esp + 0x14c]
movdqu xmmword [esp + 8], xmm3
movdqu xmmword [esp + 0x18], xmm5
mov dword [esp + 0x28], edx
lea edx, [esi + ebp]
mov dword [esp + 0x2c], edx
sub eax, ecx
sub esi, ebp
lea ebp, [esp + 0x30]
neg bl
shr bl, 1
movzx ecx, bl
psubd xmm0, xmm1
movdqa xmm1, xmmword [0x40b310]
paddd xmm0, xmm1
psubd xmm4, xmm2
movdqa xmm1, xmmword [0x40b320]
paddd xmm4, xmm1
mov edi, 0x7fffffe
add eax, edi
mov edx, 0x3fffffe
add esi, edx
movdqu xmmword [esp + 0x30], xmm0
movdqu xmmword [esp + 0x40], xmm4
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], esi
lea esi, [ecx + ecx*4]
shl esi, 5
lea ebx, [esp + esi]
add ebx, 0x490
lea eax, [esp + esi + 0x4b8]
lea ecx, [esp + 0xd8]
lea edx, [esp + 8]
push eax
call fcn.00403ce1
add esp, 4
lea ecx, [esp + 0xa8]
mov edx, ebp
push ebx
call fcn.00403ce1
add esp, 4
lea edx, [esp + esi]
add edx, 0x508
lea ecx, [esp + 0x1c8]
lea eax, [esp + 0x1a0]
push eax
call fcn.00403ce1
add esp, 4
lea eax, [esp + esi]
add eax, 0x4e0
lea ecx, [esp + 0x100]
lea edx, [esp + 0x178]
push eax
call fcn.00403ce1
add esp, 4
movdqu xmm0, xmmword [esp + 0x100]
movdqu xmm1, xmmword [esp + 0x110]
paddd xmm0, xmm0
paddd xmm1, xmm1
mov eax, dword [esp + 0x120]
add eax, eax
mov ecx, dword [esp + 0x124]
add ecx, ecx
movdqu xmmword [esp + 0x80], xmm0
movdqu xmmword [esp + 0x90], xmm1
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], ecx
movdqu xmm0, xmmword [esp + 0xd8]
movdqu xmm1, xmmword [esp + 0xe8]
movdqu xmm2, xmmword [esp + 0xa8]
movdqu xmm3, xmmword [esp + 0xb8]
movdqa xmm4, xmm0
psubd xmm4, xmm2
paddd xmm4, xmmword [0x40b310]
movdqa xmm5, xmm1
psubd xmm5, xmm3
paddd xmm5, xmmword [0x40b320]
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xc8]
mov edx, eax
sub edx, ecx
add edx, edi
mov esi, dword [esp + 0xfc]
mov ebx, dword [esp + 0xcc]
movdqu xmmword [esp + 8], xmm4
movdqu xmmword [esp + 0x18], xmm5
mov dword [esp + 0x28], edx
mov edx, esi
sub edx, ebx
mov ebp, 0x3fffffe
add edx, ebp
mov dword [esp + 0x2c], edx
add ecx, eax
add ebx, esi
paddd xmm2, xmm0
paddd xmm3, xmm1
movdqu xmmword [esp + 0x30], xmm2
movdqu xmmword [esp + 0x40], xmm3
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], ebx
lea ecx, [esp + 0xd8]
lea edx, [esp + 0x80]
call fcn.00404c74
movdqu xmm0, xmmword [esp + 0xd8]
movdqu xmm1, xmmword [esp + 0xe8]
movdqu xmm2, xmmword [esp + 0x1c8]
movdqu xmm3, xmmword [esp + 0x1d8]
movdqa xmm4, xmm0
psubd xmm4, xmm2
paddd xmm4, xmmword [0x40b310]
movdqa xmm5, xmm1
psubd xmm5, xmm3
paddd xmm5, xmmword [0x40b320]
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0x1e8]
mov edx, eax
sub edx, ecx
add edx, edi
mov esi, dword [esp + 0xfc]
mov ebx, dword [esp + 0x1ec]
movdqu xmmword [esp + 0x58], xmm4
movdqu xmmword [esp + 0x68], xmm5
mov dword [esp + 0x78], edx
mov edx, esi
sub edx, ebx
add edx, ebp
mov dword [esp + 0x7c], edx
add ecx, eax
add ebx, esi
mov esi, dword [esp]
paddd xmm2, xmm0
paddd xmm3, xmm1
movdqu xmmword [esp + 0x80], xmm2
movdqu xmmword [esp + 0x90], xmm3
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], ebx
movzx ebx, byte [esp + esi + 0x28f]
test bl, bl
jle 0x406fd3
lea ecx, [esp + 0x128]
lea edx, [esp + 8]
call fcn.004078e3
movdqu xmm0, xmmword [esp + 0x150]
movdqu xmm1, xmmword [esp + 0x128]
movdqu xmm2, xmmword [esp + 0x138]
movdqa xmm3, xmm1
paddd xmm3, xmm0
movdqu xmm4, xmmword [esp + 0x160]
movdqa xmm5, xmm2
paddd xmm5, xmm4
mov eax, dword [esp + 0x170]
mov ecx, dword [esp + 0x148]
lea edx, [ecx + eax]
mov esi, dword [esp + 0x174]
mov ebp, dword [esp + 0x14c]
movdqu xmmword [esp + 8], xmm3
movdqu xmmword [esp + 0x18], xmm5
mov dword [esp + 0x28], edx
lea edx, [esi + ebp]
mov dword [esp + 0x2c], edx
sub eax, ecx
sub esi, ebp
lea ebp, [esp + 0x30]
psubd xmm0, xmm1
movdqa xmm1, xmmword [0x40b310]
paddd xmm0, xmm1
psubd xmm4, xmm2
movdqa xmm1, xmmword [0x40b320]
paddd xmm4, xmm1
mov ecx, 0x7fffffe
add eax, ecx
movdqu xmmword [esp + 0x30], xmm0
movdqu xmmword [esp + 0x40], xmm4
mov dword [esp + 0x50], eax
shr ebx, 1
mov eax, 0x3fffffe
add esi, eax
mov dword [esp + 0x54], esi
imul esi, ebx, 0x78
lea eax, [esi + 0x40b740]
lea edi, [esp + 0xa8]
mov ecx, edi
lea edx, [esp + 8]
push eax
call fcn.00403ce1
add esp, 4
lea eax, [esi + 0x40b768]
lea ecx, [esp + 0x100]
mov edx, ebp
push eax
call fcn.00403ce1
add esp, 4
lea edx, [esi + 0x40b790]
lea ecx, [esp + 0xd8]
lea eax, [esp + 0x1a0]
push eax
call fcn.00403ce1
add esp, 4
movdqu xmm0, xmmword [esp + 0x178]
movdqu xmm1, xmmword [esp + 0x188]
paddd xmm0, xmm0
paddd xmm1, xmm1
mov eax, dword [esp + 0x198]
add eax, eax
mov ecx, dword [esp + 0x19c]
add ecx, ecx
movdqu xmmword [esp + 0x80], xmm0
movdqu xmmword [esp + 0x90], xmm1
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], ecx
movdqu xmm0, xmmword [esp + 0xa8]
movdqu xmm1, xmmword [esp + 0xb8]
movdqu xmm2, xmmword [esp + 0x100]
movdqu xmm3, xmmword [esp + 0x110]
movdqa xmm4, xmm0
psubd xmm4, xmm2
paddd xmm4, xmmword [0x40b310]
movdqa xmm5, xmm1
psubd xmm5, xmm3
paddd xmm5, xmmword [0x40b320]
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0x120]
mov edx, eax
sub edx, ecx
mov esi, 0x7fffffe
add edx, esi
mov esi, dword [esp + 0xcc]
mov ebx, dword [esp + 0x124]
movdqu xmmword [esp + 8], xmm4
movdqu xmmword [esp + 0x18], xmm5
mov dword [esp + 0x28], edx
mov edx, esi
sub edx, ebx
mov ebp, 0x3fffffe
add edx, ebp
mov dword [esp + 0x2c], edx
add ecx, eax
add ebx, esi
paddd xmm2, xmm0
paddd xmm3, xmm1
movdqu xmmword [esp + 0x30], xmm2
movdqu xmmword [esp + 0x40], xmm3
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], ebx
mov ecx, edi
lea edi, [esp + 0x80]
mov edx, edi
call fcn.00404c74
movdqu xmm0, xmmword [esp + 0xa8]
movdqu xmm1, xmmword [esp + 0xb8]
movdqu xmm2, xmmword [esp + 0xd8]
movdqu xmm3, xmmword [esp + 0xe8]
movdqa xmm4, xmm2
paddd xmm4, xmm0
movdqa xmm5, xmm3
paddd xmm5, xmm1
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0xf8]
lea edx, [ecx + eax]
mov esi, dword [esp + 0xcc]
mov ebx, dword [esp + 0xfc]
movdqu xmmword [esp + 0x58], xmm4
movdqu xmmword [esp + 0x68], xmm5
mov dword [esp + 0x78], edx
lea edx, [ebx + esi]
mov dword [esp + 0x7c], edx
sub eax, ecx
sub esi, ebx
psubd xmm0, xmm2
paddd xmm0, xmmword [0x40b310]
psubd xmm1, xmm3
paddd xmm1, xmmword [0x40b320]
mov ecx, 0x7fffffe
add eax, ecx
movdqu xmmword [esp + 0x80], xmm0
movdqu xmmword [esp + 0x90], xmm1
mov dword [esp + 0xa0], eax
add esi, ebp
mov dword [esp + 0xa4], esi
mov esi, dword [esp]
jmp 0x4072be
test bl, bl
lea edi, [esp + 0x80]
jns 0x4072be
lea ecx, [esp + 0x128]
lea edi, [esp + 8]
mov edx, edi
call fcn.004078e3
movdqu xmm0, xmmword [esp + 0x150]
movdqu xmm1, xmmword [esp + 0x128]
movdqu xmm2, xmmword [esp + 0x138]
movdqa xmm3, xmm1
paddd xmm3, xmm0
movdqu xmm4, xmmword [esp + 0x160]
movdqa xmm5, xmm2
paddd xmm5, xmm4
mov eax, dword [esp + 0x170]
mov ecx, dword [esp + 0x148]
lea edx, [ecx + eax]
mov esi, dword [esp + 0x174]
mov ebp, dword [esp + 0x14c]
movdqu xmmword [esp + 8], xmm3
movdqu xmmword [esp + 0x18], xmm5
mov dword [esp + 0x28], edx
lea edx, [esi + ebp]
mov dword [esp + 0x2c], edx
sub eax, ecx
sub esi, ebp
lea ebp, [esp + 0x30]
neg bl
shr bl, 1
movzx ecx, bl
psubd xmm0, xmm1
movdqa xmm1, xmmword [0x40b310]
paddd xmm0, xmm1
psubd xmm4, xmm2
movdqa xmm1, xmmword [0x40b320]
paddd xmm4, xmm1
mov edx, 0x7fffffe
add eax, edx
mov edx, 0x3fffffe
add esi, edx
movdqu xmmword [esp + 0x30], xmm0
movdqu xmmword [esp + 0x40], xmm4
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], esi
imul esi, ecx, 0x78
lea ebx, [esi + 0x40b740]
lea eax, [esi + 0x40b768]
lea ecx, [esp + 0xa8]
mov edx, edi
push eax
call fcn.00403ce1
add esp, 4
lea ecx, [esp + 0x100]
mov edx, ebp
lea edi, [esp + 0x80]
push ebx
call fcn.00403ce1
add esp, 4
lea edx, [esi + 0x40b790]
lea ecx, [esp + 0xd8]
lea eax, [esp + 0x1a0]
push eax
call fcn.00403ce1
add esp, 4
movdqu xmm0, xmmword [esp + 0x178]
movdqu xmm1, xmmword [esp + 0x188]
paddd xmm0, xmm0
paddd xmm1, xmm1
mov eax, dword [esp + 0x198]
add eax, eax
mov ecx, dword [esp + 0x19c]
add ecx, ecx
movdqu xmmword [esp + 0x80], xmm0
movdqu xmmword [esp + 0x90], xmm1
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], ecx
movdqu xmm0, xmmword [esp + 0xa8]
movdqu xmm1, xmmword [esp + 0xb8]
movdqu xmm2, xmmword [esp + 0x100]
movdqu xmm3, xmmword [esp + 0x110]
movdqa xmm4, xmm0
psubd xmm4, xmm2
paddd xmm4, xmmword [0x40b310]
movdqa xmm5, xmm1
psubd xmm5, xmm3
paddd xmm5, xmmword [0x40b320]
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0x120]
mov edx, eax
sub edx, ecx
mov esi, 0x7fffffe
add edx, esi
mov esi, dword [esp + 0xcc]
mov ebx, dword [esp + 0x124]
movdqu xmmword [esp + 8], xmm4
movdqu xmmword [esp + 0x18], xmm5
mov dword [esp + 0x28], edx
mov edx, esi
sub edx, ebx
mov ebp, 0x3fffffe
add edx, ebp
mov dword [esp + 0x2c], edx
add ecx, eax
add ebx, esi
paddd xmm2, xmm0
paddd xmm3, xmm1
movdqu xmmword [esp + 0x30], xmm2
movdqu xmmword [esp + 0x40], xmm3
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], ebx
lea ecx, [esp + 0xa8]
mov edx, edi
call fcn.00404c74
movdqu xmm0, xmmword [esp + 0xa8]
movdqu xmm1, xmmword [esp + 0xb8]
movdqu xmm2, xmmword [esp + 0xd8]
movdqu xmm3, xmmword [esp + 0xe8]
movdqa xmm4, xmm0
psubd xmm4, xmm2
paddd xmm4, xmmword [0x40b310]
movdqa xmm5, xmm1
psubd xmm5, xmm3
paddd xmm5, xmmword [0x40b320]
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0xf8]
mov edx, eax
sub edx, ecx
mov esi, 0x7fffffe
add edx, esi
mov esi, dword [esp + 0xcc]
mov ebx, dword [esp + 0xfc]
movdqu xmmword [esp + 0x58], xmm4
movdqu xmmword [esp + 0x68], xmm5
mov dword [esp + 0x78], edx
mov edx, esi
sub edx, ebx
add edx, ebp
mov dword [esp + 0x7c], edx
add ecx, eax
add ebx, esi
mov esi, dword [esp]
paddd xmm2, xmm0
paddd xmm3, xmm1
movdqu xmmword [esp + 0x80], xmm2
movdqu xmmword [esp + 0x90], xmm3
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], ebx
mov ecx, dword [esp + 4]
lea ebp, [esp + 8]
mov edx, ebp
push edi
call fcn.00403ce1
add esp, 4
mov ecx, dword [esp + 0xd4]
lea edx, [esp + 0x30]
lea ebx, [esp + 0x58]
push ebx
call fcn.00403ce1
add esp, 4
mov ecx, dword [esp + 0xd0]
mov edx, ebx
push edi
call fcn.00403ce1
add esp, 4
dec esi
jg 0x40699c
add esp, 0x990
pop esi
pop edi
pop ebx
pop ebp
ret