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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xec
movq xmm0, qword [esp + 0x104]
mov edx, dword [esp + 0x120]
mov eax, dword [esp + 0x108]
mov esi, 0x7fffffff
mov ebp, dword [esp + 0x11c]
mov edi, 0x80010000
movd ecx, xmm0
and edx, esi
and esi, dword [esp + 0x110]
xor ebx, ebx
movq xmm0, qword [esp + 0x114]
inc ebx
cmp ecx, 1
mov dword [esp + 4], ecx
sbb eax, 0
mov eax, dword [esp + 0x10c]
movd ecx, xmm0
sbb eax, 0
lea eax, [esi + edi]
sbb eax, 0x80010000
jb 0x401d2b
mov eax, dword [esp + 0x118]
cmp ecx, ebx
sbb eax, 0
mov eax, ebp
sbb eax, 0
lea eax, [edx + edi]
sbb eax, edi
jb 0x401d2b
cmp dword [esp + 4], ecx
mov ecx, dword [esp + 0x108]
mov edi, dword [esp + 0x118]
mov ebx, dword [esp + 0x10c]
mov eax, ecx
sbb eax, edi
mov eax, ebx
sbb eax, ebp
mov eax, edi
sbb esi, edx
mov edx, dword [esp + 0x114]
mov esi, dword [esp + 0x110]
cmovb eax, ecx
cmovb ebp, ebx
cmovb ecx, dword [esp + 0x118]
cmovb ebx, dword [esp + 0x11c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x104]
mov dword [esp], ebp
mov ebp, dword [esp + 0x120]
mov dword [esp + 0x18], ecx
mov ecx, 0x7fff
cmovb edx, eax
cmovb eax, dword [esp + 0x114]
mov edi, ebp
cmovb edi, esi
cmovb esi, ebp
mov dword [esp + 0x14], edx
mov edx, esi
mov dword [esp + 0x24], edi
shr edi, 0x10
mov ebp, esi
mov dword [esp + 0x20], esi
shr edx, 0x10
and edi, ecx
mov dword [esp + 0x28], eax
mov eax, 0xffff
mov dword [esp + 0xc], edi
and ebp, eax
and edx, ecx
mov dword [esp + 8], edx
push 0x3f
pop esi
je 0x401db6
mov dword [esp + 0x10], ebx
jmp 0x401eaa
mov ebp, edx
mov edi, dword [esp + 4]
mov edx, dword [esp + 0x108]
mov ebx, dword [esp + 0x10c]
cmp edi, 1
mov eax, edx
sbb eax, 0
mov eax, ebx
sbb eax, 0
mov eax, esi
sbb eax, 0x7fff0000
jb 0x401d70
mov ebp, dword [esp + 0x110]
mov edi, dword [esp + 0x104]
mov esi, edx
or ebp, 0x8000
jmp 0x402449
mov eax, dword [esp + 0x118]
mov ebx, dword [esp + 0x11c]
cmp ecx, 1
sbb eax, 0
mov eax, ebx
sbb eax, 0
mov eax, ebp
sbb eax, 0x7fff0000
jb 0x40224a
mov ebp, dword [esp + 0x120]
or ebp, 0x8000
mov esi, dword [esp + 0x118]
mov edi, dword [esp + 0x114]
jmp 0x402449
bsr edx, ebx
mov edi, dword [esp + 0x28]
bsr ecx, ebp
xor edx, 0x1f
xor ecx, 0x1f
add dl, 0x20
test ebp, ebp
movzx edx, dl
cmovne edx, ecx
bsr ecx, edi
cmove ecx, esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0xe4], ebx
mov dword [esp + 0xdc], edi
mov dword [esp + 0xe8], ebp
xor ecx, 0x1f
add cl, 0x20
movzx eax, cl
bsr ecx, esi
mov dword [esp + 0xe0], esi
xor ecx, 0x1f
test esi, esi
cmove ecx, eax
add cl, 0x40
or ebx, ebp
movzx ecx, cl
cmovne ecx, edx
add cl, 0xf1
mov dh, cl
movzx eax, cl
mov dl, cl
shr dh, 3
mov dword [esp + 8], eax
and dword [esp + 0xd8], 0
and dword [esp + 0xd4], 0
and dword [esp + 0xd0], 0
and dword [esp + 0xcc], 0
and dl, 7
and dh, 0xf
mov ecx, edx
neg dh
movsx ebp, dh
mov esi, dword [esp + ebp + 0xe4]
mov eax, dword [esp + ebp + 0xe8]
shld eax, esi, cl
shl esi, cl
not cl
mov dword [esp + 0x1c], eax
mov eax, 0xffff
mov edi, dword [esp + ebp + 0xe0]
mov ebx, edi
shr ebx, 1
shr ebx, cl
or ebx, esi
xor ecx, ecx
inc ecx
mov dword [esp + 0x10], ebx
sub ecx, dword [esp + 8]
mov dword [esp + 8], ecx
mov ecx, edx
mov ebx, dword [esp + ebp + 0xdc]
mov ebp, dword [esp + 0x1c]
shld edi, ebx, cl
shl ebx, cl
mov dword [esp + 0x18], edi
mov dword [esp + 0x28], ebx
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
and edx, eax
test ecx, ecx
mov eax, edx
mov edx, dword [esp + 4]
je 0x401ed7
mov ebx, ebp
mov ecx, dword [esp + 0x10]
mov edi, dword [esp]
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x120]
jmp 0x401fd4
mov ebx, dword [esp]
mov esi, eax
bsr eax, eax
xor eax, 0x1f
bsr ecx, ebx
xor ecx, 0x1f
add cl, 0x20
test esi, esi
movzx edi, cl
mov ecx, edx
cmovne edi, eax
bsr eax, dword [esp + 0x14]
push 0x3f
pop edx
cmove eax, edx
mov dword [esp + 0xc4], ebx
xor eax, 0x1f
add al, 0x20
movzx edx, al
bsr eax, ecx
xor eax, 0x1f
test ecx, ecx
cmove eax, edx
mov edx, ebx
add al, 0x40
or edx, esi
mov edx, dword [esp + 0x14]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xc8], esi
movzx eax, al
cmovne eax, edi
add al, 0xf1
mov ecx, eax
mov dword [esp + 0xbc], edx
movzx edx, al
mov dword [esp + 0x1c], ebp
shr cl, 3
mov dword [esp], edx
and dword [esp + 0xb8], 0
and dword [esp + 0xb4], 0
and dword [esp + 0xb0], 0
and dword [esp + 0xac], 0
mov edx, eax
and cl, 0xf
and dl, 7
neg cl
movsx ebp, cl
mov ecx, edx
mov eax, dword [esp + ebp + 0xc4]
mov ebx, dword [esp + ebp + 0xc8]
mov edi, dword [esp + ebp + 0xc0]
shld ebx, eax, cl
shl eax, cl
mov dword [esp + 4], edi
not cl
shr edi, 1
shr edi, cl
or edi, eax
xor ecx, ecx
mov eax, ebx
mov ebx, dword [esp + 0x1c]
inc ecx
sub ecx, dword [esp]
mov dword [esp + 0xc], ecx
mov ecx, edx
mov esi, dword [esp + ebp + 0xbc]
mov ebp, dword [esp + 0x120]
shld dword [esp + 4], esi, cl
shl esi, cl
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 4]
xor ebp, dword [esp + 0x110]
shld eax, edi, 3
shld edi, edx, 3
shld edx, esi, 3
mov dword [esp + 0x10], ecx
shld ebx, ecx, 3
shl esi, 3
mov dword [esp], edi
mov edi, dword [esp + 8]
mov ecx, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], ebp
mov ebp, 0x80000
or eax, ebp
sub edi, dword [esp + 0xc]
mov ebp, ebx
jne 0x40201f
mov dword [esp + 4], ecx
mov dword [esp + 0xc], esi
jmp 0x40217a
mov ebx, ecx
cmp edi, 0x7f
mov ecx, edi
ja 0x402162
mov dword [esp + 0x7c], esi
mov dword [esp + 4], ebx
mov dword [esp + 0x80], ebx
mov ebx, edi
mov edi, esi
mov ecx, dword [esp]
mov dword [esp + 0x88], eax
and dword [esp + 0x78], 0
and dword [esp + 0x74], 0
and dword [esp + 0x70], 0
and dword [esp + 0x6c], 0
mov dword [esp + 0x84], ecx
mov dword [esp + 0x24], eax
mov eax, ebx
mov dword [esp + 0x1c], ebp
neg al
mov ch, al
and al, 0x78
shr al, 3
and ch, 7
neg al
mov cl, ch
movsx esi, al
not cl
mov ebp, dword [esp + esi + 0x7c]
mov eax, dword [esp + esi + 0x80]
mov edx, eax
or ebp, dword [esp + esi + 0x84]
or eax, dword [esp + esi + 0x88]
shr edx, 1
shr edx, cl
mov cl, ch
shld eax, ebp, cl
shl ebp, cl
xor ecx, ecx
or ebp, edx
mov edx, ebx
or ebp, eax
setne cl
shr bl, 3
and dl, 7
mov dword [esp + 0xc], ecx
mov dword [esp + 0x8c], edi
and bl, 0xf
mov ecx, edx
mov eax, dword [esp + 4]
movzx ebx, bl
mov dword [esp + 0x90], eax
mov eax, dword [esp]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x24]
and dword [esp + 0xa8], 0
and dword [esp + 0xa4], 0
and dword [esp + 0xa0], 0
and dword [esp + 0x9c], 0
mov dword [esp + 0x98], eax
mov ebp, dword [esp + ebx + 0x94]
mov eax, dword [esp + ebx + 0x98]
mov esi, ebp
add ebp, ebp
shrd esi, eax, cl
mov dword [esp], esi
mov edi, dword [esp + ebx + 0x90]
mov esi, edi
shr esi, cl
not cl
shl ebp, cl
mov ecx, edx
mov edx, dword [esp + 0x18]
or ebp, esi
mov esi, dword [esp + 0x10]
shr eax, cl
mov dword [esp + 4], ebp
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + ebx + 0x8c]
shrd ebx, edi, cl
mov ecx, dword [esp + 0x14]
or ebx, dword [esp + 0xc]
mov dword [esp + 0xc], ebx
jmp 0x402182
xor eax, eax
xor ecx, ecx
mov dword [esp + 4], 0
mov dword [esp], 0
inc ecx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
shld esi, edx, 3
and dword [esp + 0x20], 0x80000000
mov ebx, esi
mov esi, 0x80000
or ebp, esi
shld edx, edi, 3
shl edi, 3
test ecx, ecx
js 0x4021c5
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 4]
add edi, esi
adc ecx, edx
mov edx, dword [esp]
adc edx, ebx
adc eax, ebp
bt eax, 0x14
jb 0x402208
mov ebp, ecx
mov esi, edx
jmp 0x402225
mov ecx, edi
mov esi, ebx
sub ecx, dword [esp + 0xc]
mov dword [esp + 0x10], ecx
mov ecx, edx
sbb ecx, dword [esp + 4]
sbb esi, dword [esp]
mov dword [esp + 0x18], ecx
mov ecx, ebp
sbb ecx, eax
xor edi, dword [esp + 0xc]
xor ebx, dword [esp]
xor edx, dword [esp + 4]
xor ebp, eax
or ebx, edi
or ebp, edx
or ebp, ebx
jne 0x4022c1
xor edi, edi
xor esi, esi
xor ebx, ebx
xor ebp, ebp
jmp 0x402449
and esi, 1
inc dword [esp + 8]
shrd edi, ecx, 1
mov ebx, esi
mov esi, eax
shr eax, 1
shld esi, edx, 0x1f
shld edx, ecx, 0x1f
or edi, ebx
mov ebp, edx
mov edx, eax
cmp dword [esp + 8], 0x7ffe
jle 0x402379
mov ebp, dword [esp + 0x20]
xor edi, edi
xor esi, esi
xor ebx, ebx
or ebp, 0x7fff0000
jmp 0x402449
mov ebx, dword [esp + 0x10c]
mov eax, esi
xor eax, 0x7fff0000
or eax, edx
or edi, ebx
or eax, edi
jne 0x402466
mov esi, dword [esp + 0x11c]
mov edi, dword [esp + 0x104]
mov eax, dword [esp + 0x114]
mov ecx, dword [esp + 0x120]
mov ebp, dword [esp + 0x118]
xor eax, edi
xor esi, ebx
xor ebp, edx
or esi, eax
mov eax, dword [esp + 0x110]
xor ecx, eax
xor eax, eax
add ecx, 0x80000000
or ecx, ebp
mov ebp, 0x7fff8000
or ecx, esi
cmovne ebp, dword [esp + 0x110]
cmove edx, eax
cmove ebx, eax
cmove edi, eax
mov esi, edx
jmp 0x402449
cmp ecx, 0x7ffff
mov edx, ecx
ja 0x402496
mov ebx, esi
bsr esi, esi
mov ebp, dword [esp + 0x10]
bsr eax, edx
xor esi, 0x1f
xor eax, 0x1f
add esi, 0x20
test edx, edx
cmovne esi, eax
bsr eax, ebp
push 0x3f
pop edi
cmove eax, edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x64], ebx
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x68], edx
xor eax, 0x1f
add eax, 0x20
bsr ecx, edi
mov dword [esp + 0x60], edi
xor ecx, 0x1f
test edi, edi
cmove ecx, eax
mov eax, ebx
add ecx, 0x40
or eax, edx
cmovne ecx, esi
add ecx, 0xfffffff4
mov eax, ecx
sub dword [esp + 8], ecx
and dword [esp + 0x58], 0
and dword [esp + 0x54], 0
and dword [esp + 0x50], 0
and dword [esp + 0x4c], 0
mov ch, cl
shr al, 3
and ch, 7
and al, 0xf
mov cl, ch
neg al
movsx esi, al
mov ebp, dword [esp + esi + 0x60]
mov eax, dword [esp + esi + 0x64]
mov edx, dword [esp + esi + 0x68]
mov ebx, dword [esp + esi + 0x5c]
mov edi, ebp
shld edx, eax, cl
shl eax, cl
not cl
shr edi, 1
shr edi, cl
mov cl, ch
or edi, eax
shld ebp, ebx, cl
mov esi, edi
mov edi, ebx
shl edi, cl
cmp dword [esp + 8], 0
jle 0x4023e0
mov ebx, edx
shld ebx, esi, 0x1d
shld esi, ebp, 0x1d
shld ebp, edi, 0x1d
xor eax, eax
shr edx, 3
and edi, 7
xor ecx, ecx
dec eax
and ebx, eax
and esi, eax
and ebp, eax
mov eax, 0xffff
and edx, eax
mov eax, ebp
mov ebp, dword [esp + 8]
shl ebp, 0x10
cmp edi, 5
setae cl
or ebp, edx
or ebp, dword [esp + 0x20]
add ecx, eax
adc esi, 0
adc ebx, 0
adc ebp, 0
xor eax, eax
cmp edi, 4
sete al
and eax, ecx
movzx edi, al
add edi, ecx
adc esi, 0
adc ebx, 0
adc ebp, 0
jmp 0x402449
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], edx
mov al, 4
sub al, byte [esp + 8]
and dword [esp + 0x48], 0
and dword [esp + 0x44], 0
and dword [esp + 0x40], 0
and dword [esp + 0x3c], 0
mov ch, al
and al, 0x78
shr al, 3
and ch, 7
movzx edx, al
mov cl, ch
mov edi, dword [esp + edx + 0x34]
mov esi, dword [esp + edx + 0x30]
mov ebp, dword [esp + edx + 0x38]
mov edx, dword [esp + edx + 0x2c]
mov ebx, edi
mov eax, esi
add edi, edi
shrd ebx, ebp, cl
shr eax, cl
not cl
shl edi, cl
mov cl, ch
shr ebp, cl
or edi, eax
shrd edx, esi, cl
or ebp, dword [esp + 0x20]
mov esi, edi
mov edi, edx
mov eax, dword [esp + 0x100]
mov dword [eax], edi
mov dword [eax + 4], esi
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebp
add esp, 0xec
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ebp
mov ebx, dword [esp + 0x11c]
mov ebp, ecx
mov dword [esp + 8], eax
xor eax, 0x7fff0000
or eax, dword [esp + 0x118]
or ebp, ebx
mov dword [esp], ebp
or eax, ebp
jne 0x4024a3
mov ebp, dword [esp + 0x120]
jmp 0x401da3
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
jmp 0x402227
mov eax, edx
or eax, esi
or edi, eax
jne 0x4024eb
mov esi, dword [esp + 0x118]
mov eax, dword [esp + 8]
mov ebp, dword [esp + 0x120]
mov edi, dword [esp + 0x114]
or eax, esi
or dword [esp], eax
jne 0x402449
and edi, dword [esp + 0x104]
and ebx, dword [esp + 0x10c]
and ebp, dword [esp + 0x110]
and esi, edx
jmp 0x402449
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 8]
mov ebp, ebx
or eax, edx
or dword [esp], eax
jne 0x401c72
mov edi, dword [esp + 0x104]
mov esi, dword [esp + 0x108]
mov ebx, dword [esp + 0x10c]
mov ebp, dword [esp + 0x110]
jmp 0x402449