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

Disassembly:
cmp dword [ecx + 0xc], 0
je 0x40cb38
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
movdqu xmm0, xmmword [ecx + 0x10]
lea edi, [esp + 0x40]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x3c], edx
mov ecx, edi
pshufd xmm1, xmm0, 0x44
pshufd xmm2, xmm0, 0xee
pxor xmm1, xmmword [str.uespemosarenegylmodnarodsetybdetNoneSome]
pxor xmm2, xmmword [0x45f6e0]
movdqu xmmword [esp + 0x40], xmm1
movdqu xmmword [esp + 0x50], xmm2
movdqu xmmword [esp + 0x60], xmm0
pxor xmm0, xmm0
movq qword [esp + 0x70], xmm0
movq qword [esp + 0x78], xmm0
push dword [ebp + 8]
call fcn.00407ee0
add esp, 4
lea edx, [esp + 0x1b]
mov ecx, edi
mov byte [esp + 0x1b], 0xff
push 1
call fcn.00407ee0
add esp, 4
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x44]
shl eax, 0x18
mov dword [esp + 0x38], ecx
xor edx, ecx
mov ecx, dword [esp + 0x40]
or eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
xor esi, eax
mov eax, dword [esp + 0x50]
add ecx, eax
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x54]
adc edi, ecx
mov ebx, edi
mov dword [esp + 0x10], edi
mov edi, eax
shld edi, ecx, 0xd
shld ecx, eax, 0xd
mov eax, dword [esp + 0x48]
xor ecx, ebx
mov ebx, dword [esp + 0x4c]
xor edi, dword [esp + 0xc]
add eax, edx
mov dword [esp + 0x14], eax
mov eax, edx
adc ebx, esi
shrd edx, esi, 0x10
shld eax, esi, 0x10
xor edx, ebx
mov esi, dword [esp + 0xc]
mov dword [esp + 0x20], ebx
xor eax, dword [esp + 0x14]
add dword [esp + 0x10], eax
mov ebx, eax
adc esi, edx
shrd eax, edx, 0xb
shld ebx, edx, 0x15
mov edx, dword [esp + 0x10]
xor eax, esi
mov dword [esp + 0xc], esi
mov esi, edi
xor ebx, edx
add dword [esp + 0x14], edi
adc dword [esp + 0x20], ecx
shld esi, ecx, 0x11
shrd edi, ecx, 0xf
mov ecx, dword [esp + 0xc]
xor edx, dword [esp + 0x38]
xor esi, dword [esp + 0x14]
xor ecx, dword [esp + 0x80]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x20]
xor edi, ecx
xor ecx, 0xff
add edx, esi
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], edx
mov edx, esi
adc ecx, edi
shld edx, edi, 0xd
shrd esi, edi, 0x13
mov edi, ebx
mov dword [esp + 0xc], ecx
xor esi, ecx
xor edx, dword [esp + 0x10]
add dword [esp + 0x20], ebx
mov ecx, dword [esp + 0x14]
adc ecx, eax
shld edi, eax, 0x10
shrd ebx, eax, 0x10
mov eax, dword [esp + 0x10]
xor edi, dword [esp + 0x20]
xor ebx, ecx
mov dword [esp + 0x14], ecx
add dword [esp + 0xc], edi
mov ecx, edi
adc eax, ebx
shld ecx, ebx, 0x15
shrd edi, ebx, 0xb
mov ebx, edx
mov dword [esp + 0x10], eax
xor edi, eax
xor ecx, dword [esp + 0xc]
add dword [esp + 0x20], edx
mov eax, dword [esp + 0x14]
adc eax, esi
shld ebx, esi, 0x11
shrd edx, esi, 0xf
xor ebx, dword [esp + 0x20]
xor edx, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
add dword [esp + 0xc], ebx
mov esi, ebx
adc eax, edx
shrd ebx, edx, 0x13
shld esi, edx, 0xd
mov edx, ecx
mov dword [esp + 0x10], eax
xor ebx, eax
mov eax, dword [esp + 0xc]
xor esi, eax
add dword [esp + 0x14], ecx
adc dword [esp + 0x20], edi
shld edx, edi, 0x10
shrd ecx, edi, 0x10
xor edx, dword [esp + 0x14]
xor ecx, dword [esp + 0x20]
add dword [esp + 0x10], edx
mov edi, edx
adc eax, ecx
shld edi, ecx, 0x15
shrd edx, ecx, 0xb
mov ecx, dword [esp + 0x20]
xor edx, eax
xor edi, dword [esp + 0x10]
add dword [esp + 0x14], esi
mov dword [esp + 0xc], eax
mov eax, esi
adc ecx, ebx
shld eax, ebx, 0x11
shrd esi, ebx, 0xf
xor eax, dword [esp + 0x14]
xor esi, ecx
mov ebx, ecx
add dword [esp + 0x10], eax
mov ecx, eax
adc dword [esp + 0xc], esi
shld ecx, esi, 0xd
shrd eax, esi, 0x13
mov esi, dword [esp + 0x14]
xor ecx, dword [esp + 0x10]
xor eax, dword [esp + 0xc]
add ebx, edi
adc esi, edx
shrd edi, edx, 0x10
shr edx, 0x10
xor edi, esi
xor edx, ebx
shld edx, edi, 0x15
add ebx, ecx
adc esi, eax
shrd eax, ecx, 0xf
mov ecx, dword [ebp + 8]
xor eax, esi
xor eax, edx
mov edx, eax
mov eax, dword [esp + 0x1c]
xor edx, ebx
mov esi, dword [eax]
mov ebx, dword [eax + 4]
mov eax, edx
shr eax, 0x19
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
lea eax, [esi - 0x18]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x14], ebx
pshufd xmm0, xmm0, 0
mov dword [esp + 0xc], eax
xor eax, eax
movdqa xmmword [esp + 0x80], xmm0
mov esi, dword [esp + 0x1c]
and edx, ebx
mov dword [esp + 0x10], eax
movdqu xmm0, xmmword [esi + edx]
movdqa xmmword [esp + 0x20], xmm0
pcmpeqb xmm0, xmmword [esp + 0x80]
pmovmskb edi, xmm0
test edi, edi
jne 0x40cadc
movdqa xmm1, xmmword [esp + 0x20]
pcmpeqd xmm0, xmm0
pcmpeqb xmm1, xmm0
pmovmskb eax, xmm1
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x40cb3b
lea edx, [edx + eax + 0x10]
add eax, 0x10
jmp 0x40ca81
lea eax, [edi - 1]
and eax, edi
test ax, ax
mov edi, eax
je 0x40caa7
tzcnt eax, edi
add eax, edx
and eax, ebx
neg eax
lea esi, [eax + eax*2]
mov eax, dword [esp + 0xc]
cmp dword [eax + esi*8 + 8], ecx
jne 0x40cad0
mov eax, dword [esp + 0xc]
lea eax, [eax + esi*8]
push ecx
push dword [eax + 4]
push dword [esp + 0x44]
mov ebx, edx
call fcn.004585fa
mov edx, ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x40cad0
mov eax, dword [esp + 0x1c]
lea ecx, [eax + esi*8]
lea eax, [ecx - 0x18]
test ecx, ecx
cmove eax, ecx
add eax, 0xc
test ecx, ecx
cmove eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
ret
xor ecx, ecx
jmp 0x40cb20