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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xf0
mov ecx, 0x80000000
movq xmm0, qword [esp + 0x108]
mov eax, dword [esp + 0x10c]
mov esi, 0x7fffffff
mov edi, dword [esp + 0x11c]
mov ebp, 0x80010000
xor ecx, dword [esp + 0x124]
movd edx, xmm0
movq xmm0, qword [esp + 0x118]
mov dword [esp + 0xc], ecx
and ecx, esi
and esi, dword [esp + 0x114]
xor ebx, ebx
mov dword [esp], edx
inc ebx
cmp edx, 1
mov edx, dword [esp + 0x120]
sbb eax, 0
mov eax, dword [esp + 0x110]
sbb eax, 0
lea eax, [esi + ebp]
sbb eax, 0x80010000
movd eax, xmm0
jb 0x40266b
cmp eax, ebx
mov ebx, eax
mov eax, edi
sbb eax, 0
mov eax, edx
sbb eax, 0
lea eax, [ecx + ebp]
sbb eax, ebp
mov eax, ebx
jb 0x40266b
mov ebp, dword [esp + 0x10c]
cmp dword [esp], eax
mov ebx, dword [esp + 0x110]
mov eax, ebp
sbb eax, edi
mov eax, ebx
sbb eax, edx
mov eax, edx
sbb esi, ecx
mov ecx, dword [esp + 0x118]
mov esi, dword [esp + 0x114]
cmovb eax, ebx
cmovb ebx, edx
mov dword [esp], eax
mov eax, edi
cmovb eax, ebp
cmovb ebp, edi
mov edi, dword [esp + 0x108]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x108]
cmovb edi, dword [esp + 0x118]
cmovb ecx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x20], ecx
mov ecx, eax
cmovb ecx, esi
cmovb esi, eax
mov eax, ecx
mov dword [esp + 0x10], ecx
mov ecx, 0x7fff
mov edx, esi
mov dword [esp + 0x1c], esi
shr eax, 0x10
shr edx, 0x10
and eax, ecx
mov dword [esp + 8], eax
mov eax, 0xffff
and esi, eax
and edx, ecx
mov dword [esp + 4], edx
je 0x4026f6
mov dword [esp + 0x24], ebp
mov ebp, edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x14], ebx
jmp 0x4027e9
mov ebp, dword [esp]
mov edi, dword [esp + 0x10c]
mov ebx, dword [esp + 0x110]
mov dword [esp + 4], eax
cmp ebp, 1
mov eax, edi
sbb eax, 0
mov eax, ebx
sbb eax, 0
mov eax, esi
sbb eax, 0x7fff0000
jb 0x4026b1
mov ebp, dword [esp + 0x114]
mov esi, dword [esp + 0x108]
mov edx, edi
or ebp, 0x8000
jmp 0x402d66
cmp dword [esp + 4], 1
mov eax, dword [esp + 0x11c]
mov ebx, dword [esp + 0x120]
sbb eax, 0
mov eax, ebx
sbb eax, 0
mov eax, ecx
sbb eax, 0x7fff0000
jb 0x402b64
mov ebp, dword [esp + 0xc]
or ebp, 0x8000
mov edx, dword [esp + 0x11c]
mov esi, dword [esp + 0x118]
jmp 0x402d66
bsr edx, ebx
bsr ecx, esi
mov eax, edi
mov dword [esp + 0x18], edi
xor edx, 0x1f
xor ecx, 0x1f
add dl, 0x20
test esi, esi
movzx edx, dl
cmovne edx, ecx
bsr ecx, edi
push 0x3f
pop eax
cmove ecx, eax
mov dword [esp + 0xe8], ebx
xor ecx, 0x1f
add cl, 0x20
movzx eax, cl
bsr ecx, ebp
xor ecx, 0x1f
test ebp, ebp
cmove ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0xe4], ebp
mov dword [esp + 0xec], esi
add cl, 0x40
or ebx, esi
movzx ecx, cl
cmovne ecx, edx
add cl, 0xf1
mov dword [esp + 0xe0], eax
mov dh, cl
movzx eax, cl
mov dl, cl
shr dh, 3
mov dword [esp + 4], eax
and dword [esp + 0xdc], 0
and dword [esp + 0xd8], 0
and dword [esp + 0xd4], 0
and dword [esp + 0xd0], 0
and dl, 7
and dh, 0xf
mov ecx, edx
neg dh
movsx ebp, dh
mov esi, dword [esp + ebp + 0xe8]
mov eax, dword [esp + ebp + 0xec]
shld eax, esi, cl
shl esi, cl
not cl
mov dword [esp + 0x28], eax
mov eax, 0xffff
mov edi, dword [esp + ebp + 0xe4]
mov ebx, edi
shr ebx, 1
shr ebx, cl
or ebx, esi
xor ecx, ecx
inc ecx
mov dword [esp + 0x14], ebx
sub ecx, dword [esp + 4]
mov dword [esp + 4], ecx
mov ecx, edx
mov ebx, dword [esp + ebp + 0xe0]
mov ebp, ebx
shld edi, ebx, cl
mov dword [esp + 0x24], edi
shl ebp, cl
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x20]
and edi, eax
test ecx, ecx
je 0x40280f
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x2c]
mov eax, dword [esp]
mov ebx, dword [esp + 0xc]
jmp 0x402913
mov esi, dword [esp]
bsr eax, edi
mov dword [esp + 0x18], ebp
mov ebp, edx
xor eax, 0x1f
bsr ecx, esi
xor ecx, 0x1f
add cl, 0x20
test edi, edi
movzx ecx, cl
cmovne ecx, eax
bsr eax, edx
push 0x3f
pop edx
mov ebx, dword [esp + 0x2c]
cmove eax, edx
mov dword [esp + 0xc8], esi
mov dword [esp + 0xc0], ebp
mov dword [esp + 0xcc], edi
xor eax, 0x1f
add al, 0x20
movzx edx, al
bsr eax, ebx
mov dword [esp + 0xc4], ebx
xor eax, 0x1f
test ebx, ebx
cmove eax, edx
mov edx, esi
add al, 0x40
or edx, edi
movzx eax, al
cmovne eax, ecx
add al, 0xf1
mov ecx, eax
movzx edx, al
shr cl, 3
mov dword [esp], edx
and dword [esp + 0xbc], 0
and dword [esp + 0xb8], 0
and dword [esp + 0xb4], 0
and dword [esp + 0xb0], 0
mov edx, eax
and cl, 0xf
and dl, 7
mov ebp, dword [esp + 0x18]
neg cl
movsx esi, cl
mov ecx, edx
mov eax, dword [esp + esi + 0xc8]
mov edi, dword [esp + esi + 0xcc]
shld edi, eax, cl
shl eax, cl
not cl
mov dword [esp + 0x10], edi
mov ebx, dword [esp + esi + 0xc4]
mov edi, ebx
shr edi, 1
shr edi, cl
or edi, eax
xor ecx, ecx
inc ecx
mov eax, edi
mov edi, dword [esp + 0x10]
sub ecx, dword [esp]
mov dword [esp + 8], ecx
mov ecx, dword [esp + esi + 0xc0]
mov esi, ebx
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x20], ecx
mov ecx, edx
mov edx, dword [esp + 0x20]
shld esi, edx, cl
mov edx, dword [esp + 0x20]
shl edx, cl
mov ecx, dword [esp + 0x14]
xor ebx, dword [esp + 0x114]
shld edi, eax, 3
shld eax, esi, 3
shld esi, edx, 3
shld dword [esp + 0x28], ecx, 3
shl edx, 3
mov dword [esp + 0x14], ecx
mov dword [esp], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], ebx
mov ebx, 0x80000
or edi, ebx
mov ebx, dword [esp + 4]
sub ebx, dword [esp + 8]
jne 0x402958
mov dword [esp + 8], edx
jmp 0x402a9f
cmp ebx, 0x7f
ja 0x402a8d
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], esi
mov eax, dword [esp]
mov dword [esp + 0x8c], edi
and dword [esp + 0x7c], 0
and dword [esp + 0x78], 0
and dword [esp + 0x74], 0
and dword [esp + 0x70], 0
mov dword [esp + 0x88], eax
mov eax, ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], ebp
mov edi, edx
neg al
mov byte [esp + 8], al
and al, 0x78
shr al, 3
neg al
movsx ecx, al
mov ebp, dword [esp + ecx + 0x80]
mov eax, dword [esp + ecx + 0x84]
mov edx, eax
or ebp, dword [esp + ecx + 0x88]
or eax, dword [esp + ecx + 0x8c]
mov ch, byte [esp + 8]
shr edx, 1
and ch, 7
mov cl, ch
not cl
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 + 8], ecx
mov dword [esp + 0x90], edi
mov dword [esp + 0x94], esi
and bl, 0xf
mov ecx, edx
mov eax, dword [esp]
movzx ebx, bl
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x10]
and dword [esp + 0xac], 0
and dword [esp + 0xa8], 0
and dword [esp + 0xa4], 0
and dword [esp + 0xa0], 0
mov dword [esp + 0x9c], eax
mov esi, dword [esp + ebx + 0x98]
mov edi, dword [esp + ebx + 0x9c]
mov eax, esi
add esi, esi
shrd eax, edi, cl
mov dword [esp], eax
mov ebp, dword [esp + ebx + 0x94]
mov ebx, dword [esp + ebx + 0x90]
mov eax, ebp
shr eax, cl
not cl
shl esi, cl
mov ecx, edx
shrd ebx, ebp, cl
or esi, eax
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
shr edi, cl
or ebx, dword [esp + 8]
mov dword [esp + 8], ebx
jmp 0x402a9f
xor esi, esi
xor edi, edi
xor ecx, ecx
mov dword [esp], 0
inc ecx
mov dword [esp + 8], ecx
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
mov ecx, 0x80000
and dword [esp + 0x1c], 0x80000000
shld ebx, eax, 3
shld eax, ebp, 3
shl ebp, 3
or edx, ecx
cmp dword [esp + 0xc], 0
js 0x402ae1
mov ecx, dword [esp + 8]
add ebp, ecx
adc esi, eax
mov eax, dword [esp]
adc eax, ebx
adc edi, edx
bt edi, 0x14
jb 0x402b24
mov edx, eax
jmp 0x402b3f
mov ecx, ebp
sub ecx, dword [esp + 8]
mov dword [esp + 0x14], ecx
mov ecx, eax
sbb ecx, esi
mov dword [esp + 0x10], ecx
mov ecx, ebx
sbb ecx, dword [esp]
mov dword [esp + 0xc], ecx
mov ecx, edx
sbb ecx, edi
xor ebp, dword [esp + 8]
xor ebx, dword [esp]
xor eax, esi
xor edx, edi
or edx, eax
or ebx, ebp
or edx, ebx
jne 0x402bda
xor esi, esi
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x402d66
mov edx, edi
inc dword [esp + 4]
and ecx, 1
shrd ebp, esi, 1
shr edi, 1
shld edx, eax, 0x1f
shld eax, esi, 0x1f
or ebp, ecx
mov esi, eax
mov ecx, edi
cmp dword [esp + 4], 0x7ffe
jle 0x402c94
mov ebp, dword [esp + 0x1c]
xor esi, esi
xor edx, edx
xor ebx, ebx
or ebp, 0x7fff0000
jmp 0x402d66
mov ebx, dword [esp + 0x110]
mov eax, esi
mov edx, ebp
xor eax, 0x7fff0000
or eax, edi
or edx, ebx
or eax, edx
jne 0x402d83
mov ebp, dword [esp + 0x120]
mov esi, dword [esp + 0x108]
mov ecx, dword [esp + 0x118]
mov eax, dword [esp + 0x114]
mov edx, dword [esp + 0x11c]
xor ecx, esi
xor ebp, ebx
xor edx, edi
or ebp, ecx
mov ecx, dword [esp + 0xc]
xor ecx, eax
xor eax, eax
add ecx, 0x80000000
or ecx, edx
or ecx, ebp
mov ebp, 0x7fff8000
cmovne ebp, dword [esp + 0x114]
cmove edi, eax
cmove ebx, eax
cmove esi, eax
mov edx, edi
jmp 0x402d66
cmp ecx, 0x7ffff
ja 0x402dab
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
bsr eax, ecx
xor eax, 0x1f
bsr esi, edx
xor esi, 0x1f
add esi, 0x20
test ecx, ecx
cmovne esi, eax
bsr eax, ebx
push 0x3f
pop edi
cmove eax, edi
mov edi, dword [esp + 0x10]
mov ebp, ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x60], ebx
xor eax, 0x1f
mov dword [esp + 0x6c], ebp
add eax, 0x20
bsr ecx, edi
mov dword [esp + 0x64], edi
xor ecx, 0x1f
test edi, edi
cmove ecx, eax
mov eax, edx
add ecx, 0x40
or eax, ebp
cmovne ecx, esi
add ecx, 0xfffffff4
mov eax, ecx
sub dword [esp + 4], ecx
and dword [esp + 0x5c], 0
and dword [esp + 0x58], 0
and dword [esp + 0x54], 0
and dword [esp + 0x50], 0
mov ch, cl
shr al, 3
and ch, 7
and al, 0xf
mov cl, ch
neg al
movsx esi, al
mov edi, dword [esp + esi + 0x64]
mov eax, dword [esp + esi + 0x68]
mov ebx, dword [esp + esi + 0x6c]
mov ebp, dword [esp + esi + 0x60]
mov edx, edi
shld ebx, eax, cl
shl eax, cl
not cl
mov esi, edi
shr edx, 1
shr edx, cl
mov cl, ch
shld esi, ebp, cl
shl ebp, cl
or edx, eax
mov ecx, ebx
cmp dword [esp + 4], 0
jle 0x402cff
mov ebx, ecx
shld ebx, edx, 0x1d
shld edx, esi, 0x1d
shld esi, ebp, 0x1d
xor eax, eax
and ebp, 7
shr ecx, 3
dec eax
and ebx, eax
and edx, eax
and esi, eax
mov eax, 0xffff
and ecx, eax
mov eax, esi
mov esi, ebp
mov ebp, dword [esp + 4]
mov edi, ecx
xor ecx, ecx
shl ebp, 0x10
cmp esi, 5
setae cl
or ebp, edi
or ebp, dword [esp + 0x1c]
add ecx, eax
adc edx, 0
adc ebx, 0
adc ebp, 0
xor eax, eax
cmp esi, 4
sete al
and eax, ecx
movzx esi, al
add esi, ecx
adc edx, 0
adc ebx, 0
adc ebp, 0
jmp 0x402d66
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], ecx
mov al, 4
sub al, byte [esp + 4]
and dword [esp + 0x4c], 0
and dword [esp + 0x48], 0
and dword [esp + 0x44], 0
and dword [esp + 0x40], 0
mov ch, al
and al, 0x78
shr al, 3
and ch, 7
movzx edi, al
mov cl, ch
mov edx, dword [esp + edi + 0x38]
mov esi, dword [esp + edi + 0x34]
mov ebp, dword [esp + edi + 0x3c]
mov edi, dword [esp + edi + 0x30]
mov ebx, edx
mov eax, esi
add edx, edx
shrd ebx, ebp, cl
shr eax, cl
not cl
shl edx, cl
mov cl, ch
shr ebp, cl
shrd edi, esi, cl
or edx, eax
or ebp, dword [esp + 0x1c]
mov esi, edi
mov eax, dword [esp + 0x104]
mov dword [eax], esi
mov dword [eax + 4], edx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebp
add esp, 0xf0
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ecx
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x120]
xor eax, 0x7fff0000
or eax, dword [esp + 0x11c]
or ebp, ebx
or eax, ebp
jne 0x402dbc
mov ebp, dword [esp + 0xc]
jmp 0x4026e3
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
jmp 0x402b41
mov eax, edi
or eax, esi
or edx, eax
jne 0x402dfa
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x108]
mov esi, dword [esp + 0x118]
or ecx, edx
or ebp, ecx
mov ebp, dword [esp + 0xc]
jne 0x402d66
and ebx, dword [esp + 0x110]
and ebp, dword [esp + 0x114]
and esi, eax
and edx, edi
jmp 0x402d66
mov edi, dword [esp + 0x11c]
mov edx, ebx
mov eax, edi
or eax, ecx
or ebp, eax
mov eax, dword [esp + 4]
jne 0x4025bf
mov esi, dword [esp + 0x108]
mov edx, dword [esp + 0x10c]
mov ebx, dword [esp + 0x110]
mov ebp, dword [esp + 0x114]
jmp 0x402d66