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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xf4
movq xmm0, qword [esp + 0x10c]
mov eax, dword [esp + 0x128]
mov edx, dword [esp + 0x110]
mov ecx, 0x7fffffff
mov ebp, 0x80010000
and eax, ecx
and ecx, dword [esp + 0x118]
xor ebx, ebx
movd esi, xmm0
movq xmm0, qword [esp + 0x11c]
inc ebx
cmp esi, 1
sbb edx, 0
mov edx, dword [esp + 0x114]
lea edi, [ecx + ebp]
sbb edx, 0
mov edx, dword [esp + 0x124]
sbb edi, 0x80010000
mov dword [esp], edx
movd edx, xmm0
jb 0x402012
mov edi, dword [esp + 0x120]
cmp edx, ebx
sbb edi, 0
mov edi, dword [esp + 0x124]
sbb edi, 0
lea edi, [eax + ebp]
sbb edi, ebp
mov edi, dword [esp + 0x120]
jb 0x402012
cmp esi, edx
mov esi, dword [esp + 0x110]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x114]
mov ebp, dword [esp + 0x124]
mov edx, esi
sbb edx, edi
mov edx, ebx
sbb edx, ebp
mov edx, dword [esp + 0x10c]
sbb ecx, eax
mov eax, ebp
mov ecx, dword [esp + 0x11c]
cmovb eax, ebx
cmovb ebx, ebp
mov ebp, dword [esp + 0x118]
mov dword [esp + 4], eax
mov eax, edi
cmovb eax, esi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x128]
cmovb ecx, edx
cmovb edx, dword [esp + 0x11c]
mov dword [esp + 0x20], ecx
mov ecx, edi
cmovb esi, ecx
mov ecx, 0x7fff
mov edi, eax
mov dword [esp + 0x1c], edx
mov edx, 0xffff
cmovb edi, ebp
cmovb ebp, eax
mov eax, ebp
mov dword [esp], edi
shr edi, 0x10
mov dword [esp + 0x14], ebp
and ebp, edx
shr eax, 0x10
and edi, ecx
and eax, ecx
mov dword [esp + 0xc], edi
mov ecx, eax
push 0x3f
pop eax
je 0x4020a6
mov edi, ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], esi
jmp 0x402190
mov edi, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov dword [esp + 4], edx
cmp esi, 1
mov edx, edi
sbb edx, 0
mov edx, ebx
sbb edx, 0
mov edx, ecx
sbb edx, 0x7fff0000
jb 0x402058
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0x10c]
mov dword [esp], ebx
or eax, 0x8000
mov ecx, eax
jmp 0x40271f
cmp dword [esp + 4], 1
mov edx, dword [esp + 0x120]
sbb edx, 0
mov edx, dword [esp + 0x124]
sbb edx, 0
mov edx, eax
sbb edx, 0x7fff0000
jb 0x4024ec
mov ecx, dword [esp + 0x128]
mov eax, dword [esp + 0x108]
or ecx, 0x8000
mov edi, dword [esp + 0x120]
mov edx, dword [esp + 0x11c]
jmp 0x402726
bsr ecx, ebx
mov edi, dword [esp + 0x1c]
bsr edx, ebp
mov dword [esp + 0xec], ebx
xor ecx, 0x1f
xor edx, 0x1f
add cl, 0x20
test ebp, ebp
movzx ecx, cl
cmovne ecx, edx
bsr edx, edi
cmove edx, eax
xor edx, 0x1f
add dl, 0x20
movzx eax, dl
bsr edx, esi
xor edx, 0x1f
test esi, esi
cmove edx, eax
add dl, 0x40
or ebx, ebp
movzx ebx, dl
cmovne ebx, ecx
add bl, 0xf1
mov ecx, ebx
movzx eax, bl
mov edx, ebx
and cl, 0x78
mov dword [esp + 8], eax
mov dword [esp + 0xe4], edi
mov dword [esp + 0xe8], esi
mov dword [esp + 0xf0], ebp
and dword [esp + 0xe0], 0
and dword [esp + 0xdc], 0
and dword [esp + 0xd8], 0
and dword [esp + 0xd4], 0
and dl, 7
shr cl, 3
neg cl
movsx ebx, cl
mov ecx, edx
mov esi, dword [esp + ebx + 0xec]
mov eax, dword [esp + ebx + 0xf0]
shld eax, esi, cl
shl esi, cl
not cl
mov dword [esp + 0x18], eax
mov ebp, dword [esp + ebx + 0xe8]
mov eax, ebp
shr eax, 1
shr eax, cl
mov ecx, edx
mov edx, 0xffff
or eax, esi
mov dword [esp + 0x24], eax
xor eax, eax
inc eax
mov esi, dword [esp + ebx + 0xe4]
sub eax, dword [esp + 8]
shld ebp, esi, cl
shl esi, cl
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x1c], esi
mov edi, eax
mov ecx, dword [esp]
mov eax, dword [esp + 0xc]
mov dword [esp + 8], edi
mov ebx, ecx
and ebx, edx
test eax, eax
je 0x4021b8
mov ebp, edi
mov edi, ebx
mov esi, dword [esp + 4]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
jmp 0x4022a3
mov edi, dword [esp + 4]
bsr edx, ebx
xor edx, 0x1f
bsr ecx, edi
xor ecx, 0x1f
add cl, 0x20
test ebx, ebx
movzx ecx, cl
cmovne ecx, edx
bsr edx, dword [esp + 0x20]
push 0x3f
pop eax
mov ebp, dword [esp + 0x10]
cmove edx, eax
mov eax, edi
mov dword [esp + 0xcc], edi
xor edx, 0x1f
add dl, 0x20
movzx esi, dl
bsr edx, ebp
xor edx, 0x1f
test ebp, ebp
cmove edx, esi
add dl, 0x40
or eax, ebx
movzx eax, dl
cmovne eax, ecx
add al, 0xf1
movzx edx, al
mov ch, al
and al, 0x78
mov dword [esp + 4], edx
mov edx, dword [esp + 0x20]
shr al, 3
mov dword [esp + 0xc8], ebp
mov dword [esp + 0xd0], ebx
and dword [esp + 0xc0], 0
and dword [esp + 0xbc], 0
and dword [esp + 0xb8], 0
and dword [esp + 0xb4], 0
and ch, 7
neg al
mov cl, ch
mov dword [esp + 0xc4], edx
movsx edx, al
mov eax, dword [esp + edx + 0xc8]
mov ebx, dword [esp + edx + 0xcc]
mov edi, dword [esp + edx + 0xd0]
mov ebp, dword [esp + 8]
mov esi, eax
shld edi, ebx, cl
shl ebx, cl
not cl
shr esi, 1
shr esi, cl
mov cl, ch
or esi, ebx
xor ebx, ebx
inc ebx
sub ebx, dword [esp + 4]
mov dword [esp + 0xc], ebx
mov ebx, eax
mov edx, dword [esp + edx + 0xc4]
shld ebx, edx, cl
shl edx, cl
mov ecx, dword [esp]
mov eax, dword [esp + 0x24]
shld edi, esi, 3
shld esi, ebx, 3
shld ebx, edx, 3
shl edx, 3
xor ecx, dword [esp + 0x14]
mov dword [esp + 4], esi
shld dword [esp + 0x18], eax, 3
mov eax, 0x80000
mov dword [esp], ecx
or edi, eax
mov eax, edx
mov edx, ebp
sub edx, dword [esp + 0xc]
mov dword [esp + 0x30], edi
jne 0x4022f7
mov dword [esp + 0x28], eax
mov ebp, ebx
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x30]
jmp 0x40243f
cmp edx, 0x7f
ja 0x402427
mov dword [esp + 0x20], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x88], ebx
mov ecx, dword [esp + 4]
mov dword [esp + 0x8c], ecx
mov ecx, edx
mov ebx, dword [esp + 0x30]
neg cl
and dword [esp + 0x80], 0
and dword [esp + 0x7c], 0
and dword [esp + 0x78], 0
and dword [esp + 0x74], 0
mov ch, cl
and cl, 0x78
shr cl, 3
and ch, 7
neg cl
movsx esi, cl
mov dword [esp + 0x90], ebx
mov cl, ch
mov edi, dword [esp + esi + 0x84]
mov ebp, dword [esp + esi + 0x88]
not cl
mov eax, ebp
or edi, dword [esp + esi + 0x8c]
or ebp, dword [esp + esi + 0x90]
shr eax, 1
shr eax, cl
mov cl, ch
mov ch, dl
shld ebp, edi, cl
shl edi, cl
or edi, eax
xor eax, eax
or edi, ebp
setne al
shr dl, 3
and ch, 7
mov esi, eax
mov eax, dword [esp + 0x20]
and dl, 0xf
mov cl, ch
movzx edx, dl
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 4]
mov dword [esp + 0xa0], ebx
and dword [esp + 0xb0], 0
and dword [esp + 0xac], 0
and dword [esp + 0xa8], 0
and dword [esp + 0xa4], 0
mov dword [esp + 0x9c], eax
mov ebp, dword [esp + edx + 0x9c]
mov ebx, dword [esp + edx + 0xa0]
mov eax, ebp
add ebp, ebp
shrd eax, ebx, cl
mov dword [esp + 4], eax
mov edi, dword [esp + edx + 0x98]
mov edx, dword [esp + edx + 0x94]
mov eax, edi
shr eax, cl
not cl
shl ebp, cl
mov cl, ch
shrd edx, edi, cl
or ebp, eax
shr ebx, cl
or edx, esi
mov dword [esp + 0x28], edx
jmp 0x402433
xor ebp, ebp
xor ebx, ebx
mov dword [esp + 4], 0
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov edx, 0x80000
shld edi, eax, 3
shld eax, esi, 3
shl esi, 3
or ecx, edx
cmp dword [esp], 0
js 0x40247a
mov edx, dword [esp + 0x28]
add esi, edx
adc ebp, eax
mov eax, dword [esp + 4]
adc eax, edi
adc ebx, ecx
bt ebx, 0x14
jb 0x4024cb
mov ecx, ebp
mov edi, eax
jmp 0x40261e
mov edx, esi
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 4]
sub edx, dword [esp + 0x28]
mov dword [esp], edx
mov edx, eax
sbb edx, dword [esp + 0x10]
mov dword [esp + 0xc], edx
mov edx, edi
sbb edx, ebp
mov dword [esp + 0x18], edx
mov edx, ecx
sbb edx, ebx
xor esi, dword [esp + 0x28]
xor eax, dword [esp + 0x10]
xor edi, ebp
xor ecx, ebx
or edi, esi
or ecx, eax
or ecx, edi
jne 0x402567
xor edx, edx
xor edi, edi
mov dword [esp], 0
xor ecx, ecx
jmp 0x40271f
and edx, 1
shrd esi, ebp, 1
mov edi, ebx
shr ebx, 1
or esi, edx
mov edx, dword [esp + 8]
shld edi, eax, 0x1f
shld eax, ebp, 0x1f
mov ecx, eax
inc edx
jmp 0x402622
mov edx, ecx
mov ebp, esi
xor edx, 0x7fff0000
or ebp, ebx
or edx, edi
or edx, ebp
jne 0x40273f
mov esi, dword [esp + 0x10c]
mov eax, dword [esp + 0x11c]
mov edx, dword [esp + 0x128]
mov ecx, dword [esp + 0x124]
mov ebp, dword [esp + 0x120]
xor eax, esi
mov esi, dword [esp + 0x118]
xor ecx, ebx
xor ebp, edi
or ecx, eax
xor edx, esi
add edx, 0x80000000
or edx, ebp
xor ebp, ebp
xor eax, eax
inc ebp
or edx, ecx
mov edx, 0x7fff8000
cmovne edx, esi
cmove ebx, eax
cmove edi, eax
mov ecx, edx
mov edx, ebp
mov dword [esp], ebx
cmovne edx, dword [esp + 0x10c]
jmp 0x40271f
cmp edx, 0x7ffff
mov ebx, edx
ja 0x402776
mov edx, dword [esp + 0x18]
mov edi, dword [esp]
bsr eax, ebx
xor eax, 0x1f
bsr ecx, edx
xor ecx, 0x1f
add ecx, 0x20
test ebx, ebx
cmovne ecx, eax
bsr esi, edi
push 0x3f
pop eax
mov ebp, dword [esp + 0xc]
cmove esi, eax
mov dword [esp + 0x6c], edx
mov dword [esp + 0x64], edi
mov dword [esp + 0x70], ebx
xor esi, 0x1f
add esi, 0x20
bsr eax, ebp
mov dword [esp + 0x68], ebp
xor eax, 0x1f
test ebp, ebp
cmove eax, esi
mov esi, edx
add eax, 0x40
or esi, ebx
cmovne eax, ecx
add eax, 0xfffffff4
mov ecx, eax
sub dword [esp + 8], eax
and dword [esp + 0x60], 0
and dword [esp + 0x5c], 0
and dword [esp + 0x58], 0
and dword [esp + 0x54], 0
and al, 7
and cl, 0x78
shr cl, 3
neg cl
movsx esi, cl
mov ecx, eax
mov ebp, dword [esp + esi + 0x68]
mov edi, dword [esp + esi + 0x6c]
mov ebx, dword [esp + esi + 0x70]
mov esi, dword [esp + esi + 0x64]
mov edx, ebp
shld ebx, edi, cl
shl edi, cl
not cl
shr edx, 1
shr edx, cl
mov ecx, eax
or edx, edi
shld ebp, esi, cl
shl esi, cl
mov edi, edx
mov ecx, ebp
mov edx, dword [esp + 8]
and dword [esp + 0x14], 0x80000000
cmp edx, 0x7ffe
jle 0x40264c
mov ecx, dword [esp + 0x14]
xor edx, edx
xor edi, edi
mov dword [esp], 0
or ecx, 0x7fff0000
jmp 0x40271f
test edx, edx
jle 0x4026b3
xor eax, eax
mov ebp, ebx
shr ebx, 3
shl edx, 0x10
shld ebp, edi, 0x1d
dec eax
shld edi, ecx, 0x1d
shld ecx, esi, 0x1d
and esi, 7
and ebp, eax
and edi, eax
and ecx, eax
mov eax, 0xffff
and ebx, eax
xor eax, eax
cmp esi, 5
setae al
or edx, ebx
mov ebx, esi
or edx, dword [esp + 0x14]
add eax, ecx
adc edi, 0
mov ecx, eax
adc ebp, 0
adc edx, 0
and ecx, 1
xor esi, esi
cmp ebx, 4
cmove esi, ecx
mov ecx, edx
mov edx, esi
add edx, eax
adc edi, 0
adc ebp, 0
adc ecx, 0
mov dword [esp], ebp
jmp 0x40271f
mov dword [esp + 0x38], ecx
mov eax, edx
mov cl, 4
mov dword [esp + 0x34], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], ebx
and dword [esp + 0x50], 0
and dword [esp + 0x4c], 0
and dword [esp + 0x48], 0
and dword [esp + 0x44], 0
sub cl, al
mov eax, ecx
and cl, 0x78
shr cl, 3
and al, 7
movzx edx, cl
mov ecx, eax
mov ebx, dword [esp + edx + 0x3c]
mov esi, dword [esp + edx + 0x40]
mov edi, ebx
add ebx, ebx
shrd edi, esi, cl
mov dword [esp], edi
mov ebp, dword [esp + edx + 0x38]
mov edx, dword [esp + edx + 0x34]
mov edi, ebp
shr edi, cl
not cl
shl ebx, cl
mov ecx, eax
shr esi, cl
shrd edx, ebp, cl
or ebx, edi
mov ecx, esi
mov edi, ebx
or ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x108]
mov dword [eax], edx
mov dword [eax + 4], edi
mov edx, dword [esp]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
add esp, 0xf4
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, dword [esp + 4]
mov edx, eax
mov dword [esp + 0x14], ebp
xor edx, 0x7fff0000
or edx, dword [esp + 0x120]
mov ebp, ebx
or ebp, dword [esp + 0x124]
or edx, ebp
jne 0x40278a
mov eax, dword [esp + 0x108]
mov ecx, dword [esp + 0x128]
jmp 0x402093
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 8]
mov esi, dword [esp]
mov ecx, dword [esp + 0xc]
jmp 0x402622
mov edx, edi
or edx, ecx
or dword [esp + 0x14], edx
jne 0x4027dc
mov edx, dword [esp + 0x120]
mov ecx, dword [esp + 0x128]
or eax, edx
or ebp, eax
mov eax, dword [esp + 0x108]
jne 0x40281a
mov esi, dword [esp + 0x11c]
and edx, edi
mov edi, dword [esp]
and ecx, dword [esp + 0x118]
and edi, dword [esp + 0x114]
and esi, dword [esp + 0x10c]
mov dword [esp], edi
mov edi, edx
mov edx, esi
jmp 0x402726
mov edi, dword [esp + 0x120]
mov edx, edi
or edx, eax
or ebp, edx
mov edx, ebx
mov ebx, 1
jne 0x401f5b
mov eax, dword [esp + 0x114]
mov edx, dword [esp + 0x10c]
mov edi, dword [esp + 0x110]
mov ecx, dword [esp + 0x118]
mov dword [esp], eax
jmp 0x40271f
mov edi, edx
jmp 0x40209a