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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov esi, esp
mov dword [esi + 0x78], ebp
mov dword [esi + 0x7c], esp
mov dword [esi + 0x88], 0xffffffff
mov dword [esi + 0x84], 0x40b290
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
lea ecx, [esi + 0x80]
mov edx, dword fs:[0]
mov dword [esi + 0x80], edx
mov dword fs:[0], ecx
lea ecx, [esi + 0x58]
push eax
push ecx
call fcn.0040ad40
add esp, 8
mov ebx, dword [esi + 0x58]
test ebx, ebx
je 0x40abb5
mov ecx, dword [esi + 0x64]
movq xmm0, qword [esi + 0x5c]
movq xmm1, qword [esi + 0x68]
movq xmm2, qword [esi + 0x70]
cmp byte [ebp + 0x10], 4
movq qword [esi + 0x38], xmm1
movq qword [esi + 0x40], xmm2
movq qword [esi + 0x2c], xmm0
mov dword [esi + 0x34], ecx
mov dword [esi + 0x28], ebx
mov dword [esi + 0x50], ecx
movq qword [esi + 0x48], xmm0
mov edx, dword [esi + 0x2c]
je 0x40abd1
test ecx, ecx
je 0x40abd1
mov eax, dword [esi + 0x3c]
mov dword [esi + 0x14], ebx
mov ebx, dword [esi + 0x38]
mov dword [esi + 4], edx
mov edx, dword [esi + 0x40]
mov dword [esi + 0x24], ecx
mov edi, eax
xor eax, 0x6c796765
mov dword [esi], ebx
mov ecx, edx
xor ebx, 0x70736575
xor dword [esi], 0x6e657261
xor edi, 0x736f6d65
mov dword [esi + 8], eax
movzx eax, byte [ebp + 0x10]
xor ecx, 0x6e646f6d
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], edi
mov edi, dword [esi + 0x44]
mov dword [esi + 0x18], ecx
xor edx, eax
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x10]
mov ebx, edi
xor edx, 0x79746573
xor edi, 0x70656462
movd xmm2, dword [esi + 0x20]
xor ebx, 0x646f7261
add dword [esi + 0xc], ecx
adc eax, ebx
shrd ecx, ebx, 0x13
shld dword [esi + 0x18], ebx, 0xd
mov ebx, edx
mov dword [esi + 0x10], eax
xor ecx, eax
mov eax, dword [esi + 0xc]
xor dword [esi + 0x18], eax
add dword [esi], edx
adc dword [esi + 8], edi
shld ebx, edi, 0x10
shld edi, edx, 0x10
mov edx, dword [esi + 8]
xor ebx, dword [esi]
xor edi, edx
add dword [esi + 0x10], ebx
movd xmm6, dword [esi + 0x10]
adc eax, edi
mov dword [esi + 0xc], eax
mov eax, ebx
shrd ebx, edi, 0xb
shld eax, edi, 0x15
movd xmm5, dword [esi + 0xc]
movd xmm1, ebx
mov ebx, dword [esi + 0x14]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x18]
movd xmm0, dword [esi + 0x1c]
punpckldq xmm6, xmm5
add dword [esi], eax
mov edi, eax
movd xmm7, dword [esi]
punpckldq xmm0, xmm1
mov dword [esi], 0
adc edx, ecx
shrd eax, ecx, 0xf
shld edi, ecx, 0x11
mov ecx, eax
mov eax, 0x4000000
mov dword [esi + 8], edi
movd xmm3, edx
mov edx, dword [esi + 4]
movd xmm4, eax
movd xmm1, dword [esi + 8]
punpckldq xmm2, xmm4
movd xmm4, ecx
punpcklqdq xmm2, xmm0
pshufd xmm0, xmm6, 0x44
pxor xmm0, xmm2
movdqa xmm2, xmm7
punpckldq xmm2, xmm3
punpckldq xmm1, xmm4
punpckldq xmm3, xmm7
movdqa xmm4, xmm0
punpcklqdq xmm2, xmmword [0x4382f0]
punpcklqdq xmm1, xmm3
psrlq xmm4, 0x30
pxor xmm1, xmm2
movdqa xmm2, xmm1
movdqa xmm3, xmm1
psllq xmm1, 0xd
paddq xmm2, xmm0
psllq xmm0, 0x10
psrlq xmm3, 0x33
movsd xmm0, xmm1
movsd xmm4, xmm3
pshufd xmm1, xmm2, 0x1e
orpd xmm0, xmm4
xorpd xmm0, xmm2
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x33
psrlq xmm3, 0x30
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x10
psllq xmm2, 0xd
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x33
psrlq xmm3, 0x30
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x10
psllq xmm2, 0xd
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
movapd xmm2, xmm0
movapd xmm3, xmm0
pshufd xmm4, xmm0, 0x44
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
paddq xmm4, xmm1
pcmpeqd xmm1, xmm1
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
orpd xmm0, xmm3
pshufd xmm2, xmm0, 0xee
pxor xmm2, xmm0
pshufd xmm0, xmm4, 0xee
movd eax, xmm0
pshufd xmm0, xmm4, 0xff
movd ecx, xmm0
xor ecx, eax
movd eax, xmm2
xor eax, ecx
mov ecx, eax
shr ecx, 0x19
movd xmm0, ecx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
and eax, edx
movdqu xmm2, xmmword [ebx + eax]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb edx, xmm3
nop word [eax + eax]
test dx, dx
je 0x40ab90
tzcnt edi, edx
mov ecx, dword [esi + 0x14]
add edi, eax
and edi, dword [esi + 4]
lea ebx, [edi*8]
sub ecx, ebx
lea ebx, [edx - 1]
and ebx, edx
movzx edx, byte [ebp + 0x10]
cmp byte [ecx - 8], dl
mov edx, ebx
jne 0x40ab60
jmp 0x40ac29
pcmpeqb xmm2, xmm1
mov edi, dword [ebp + 8]
mov ebx, dword [esi + 0x14]
mov ecx, dword [esi + 0x24]
pmovmskb edx, xmm2
test edx, edx
mov edx, dword [esi + 4]
jne 0x40abd1
mov ecx, dword [esi]
lea eax, [eax + ecx + 0x10]
add ecx, 0x10
mov dword [esi], ecx
jmp 0x40ab47
mov eax, dword [esi + 0x64]
movq xmm0, qword [esi + 0x5c]
mov dword [esi + 0x50], eax
movq qword [esi + 0x48], xmm0
mov dword [edi + 8], eax
movq qword [edi], xmm0
jmp 0x40ac66
test ecx, ecx
je 0x40ac7c
movdqa xmm0, xmmword [ebx]
mov eax, ebx
pmovmskb ecx, xmm0
cmp ecx, 0xffff
jne 0x40ac19
mov dword [esi + 4], edx
lea edx, [ebx + 0x10]
mov eax, ebx
nop word cs:[eax + eax]
nop dword [eax]
movdqa xmm0, xmmword [edx]
add eax, 0xffffff80
add edx, 0x10
pmovmskb ecx, xmm0
cmp ecx, 0xffff
je 0x40ac00
mov edx, dword [esi + 4]
not ecx
tzcnt ecx, ecx
shl ecx, 3
sub eax, ecx
add eax, 0xfffffffc
jmp 0x40ac38
mov ebx, dword [esi + 0x14]
neg edi
mov edx, dword [esi + 4]
lea eax, [ebx + edi*8 - 4]
mov edi, dword [ebp + 8]
mov eax, dword [eax]
test edx, edx
mov dword [edi + 4], eax
mov dword [edi], 0x80000000
je 0x40ac66
lea eax, [edx*8 + 0x17]
and eax, 0xfffffff0
add edx, eax
add edx, 0x11
je 0x40ac66
sub ebx, eax
push 0x10
push edx
push ebx
call fcn.00406960
add esp, 0xc
mov eax, dword [esi + 0x80]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi + 4], edx
movzx eax, byte [0x441161]
push 1
push 0x1b
call fcn.00406950
add esp, 8
test eax, eax
je 0x40acfc
mov ecx, dword [esi + 4]
mov dword [eax + 0x17], 0x73656d69
mov dword [edi], 0x1b
mov dword [edi + 4], eax
mov dword [eax + 0x14], 0x69746e75
mov dword [eax + 0x10], 0x7220796e
mov dword [eax + 0xc], 0x6120646e
mov dword [eax + 8], 0x69662074
mov dword [eax + 4], 0x6f6e2064
mov dword [eax], 0x6c756f43
mov dword [edi + 8], 0x1b
test ecx, ecx
je 0x40ac66
lea eax, [ecx*8 + 0x17]
and eax, 0xfffffff0
add ecx, eax
add ecx, 0x11
je 0x40ac66
sub ebx, eax
push 0x10
push ecx
jmp 0x40ac5d
mov dword [esi + 0x88], 0
push 0x1b
push 1
call fcn.00427d50
add esp, 8
ud2