Function at 0x4a09a0
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 edx, dword [ebp + 0x18]
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov ecx, edx
and ecx, 0x7fffffff
lea eax, [ecx - 0x3c010000]
lea esi, [ecx - 0x43ff0000]
cmp eax, esi
mov esi, dword [ebp + 0xc]
jae 0x4a09f9
mov eax, esi
shld ecx, edi, 4
shld edi, ebx, 4
and ebx, 0xfffffff
neg eax
mov eax, 0x8000000
sbb eax, ebx
jae 0x4a0a31
add edi, 1
adc ecx, 0x40000000
jmp 0x4a0a52
xor eax, eax
neg esi
mov esi, 0
sbb esi, ebx
mov esi, 0
sbb esi, edi
mov esi, 0x7fff0000
sbb esi, ecx
jae 0x4a0a5b
shld ecx, edi, 4
shrd ebx, edi, 0x1c
and ecx, 0x7ffff
mov esi, ebx
or ecx, 0x7ff80000
mov eax, ecx
jmp 0x4a0be9
xor ebx, 0x8000000
add ecx, 0x40000000
or esi, ebx
jne 0x4a0a52
mov esi, edi
and esi, 1
add esi, edi
adc ecx, 0
mov eax, ecx
jmp 0x4a0be9
mov esi, edi
mov eax, ecx
jmp 0x4a0be9
mov esi, 0xffffffff
add esi, 1
adc eax, 0x7fefffff
cmp ecx, 0x43feffff
ja 0x4a0be9
shr ecx, 0x10
mov eax, 0x3c01
xor esi, esi
sub eax, ecx
mov dword [esp + 4], eax
cmp eax, 0x70
mov eax, 0
ja 0x4a0be9
mov eax, dword [ebp + 0xc]
movzx esi, dx
dec cl
or esi, 0x10000
mov dword [esp + 0xc], esi
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], esi
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x68], eax
mov eax, ecx
mov byte [esp + 8], cl
and cl, 0x78
shr cl, 3
neg cl
movsx ecx, cl
mov esi, dword [esp + ecx + 0x68]
mov eax, dword [esp + ecx + 0x6c]
or esi, dword [esp + ecx + 0x70]
mov dword [esp], eax
or eax, dword [esp + ecx + 0x74]
mov ch, byte [esp + 8]
shr dword [esp], 1
and ch, 7
mov cl, ch
not cl
shr dword [esp], cl
mov cl, ch
shld eax, esi, cl
shl esi, cl
xor ecx, ecx
or esi, dword [esp]
or esi, eax
mov eax, dword [ebp + 0xc]
setne cl
mov dword [esp + 0x38], eax
mov dword [esp + 8], ecx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], edi
mov eax, dword [esp + 0xc]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], eax
mov eax, dword [esp + 4]
mov ecx, eax
shr al, 3
and al, 0xf
and cl, 7
movzx ebx, al
mov byte [esp + 0xc], cl
mov dword [esp + 4], ebx
mov edi, dword [esp + ebx + 0x40]
mov eax, dword [esp + ebx + 0x44]
mov esi, edi
add edi, edi
shrd esi, eax, cl
mov ecx, dword [esp + ebx + 0x3c]
mov dword [esp], ecx
mov ch, byte [esp + 0xc]
mov ebx, dword [esp]
mov cl, ch
shr ebx, cl
not cl
shl edi, cl
mov cl, ch
or edi, ebx
mov ebx, dword [esp + 4]
shr eax, cl
shld eax, esi, 4
shld esi, edi, 4
and edi, 0xfffffff
mov ebx, dword [esp + ebx + 0x38]
mov dword [esp + 4], ebx
mov ebx, dword [esp]
shrd dword [esp + 4], ebx, cl
mov ecx, edi
mov ebx, dword [esp + 4]
or ebx, dword [esp + 8]
cmp ebx, 1
sbb ecx, 0x8000000
jb 0x4a0bd5
add esi, 1
jmp 0x4a0be6
xor edi, 0x8000000
or ebx, edi
jne 0x4a0be9
mov ecx, esi
and ecx, 1
add esi, ecx
adc eax, 0
and edx, 0x80000000
or edx, eax
push edx
push esi
call fcn.004a0540
add esp, 8
fstp qword [esp + 0x80]
mov esi, 0x7fffffff
movsd xmm0, qword [esp + 0x80]
movsd qword [esp + 0x10], xmm0
and esi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
lea eax, [esi - 0x100000]
shr eax, 0x15
cmp eax, 0x3fe
ja 0x4a0c47
mov ebx, esi
shr esi, 4
xor edi, edi
shld ebx, edx, 0x1c
shl edx, 0x1c
add esi, 0x3c000000
jmp 0x4a0d2f
mov eax, esi
shr eax, 0x14
cmp eax, 0x7ff
jb 0x4a0c6c
mov ebx, esi
shr esi, 4
xor edi, edi
shld ebx, edx, 0x1c
shl edx, 0x1c
or esi, 0x7fff0000
jmp 0x4a0d2f
mov eax, edx
or eax, esi
je 0x4a0d27
bsr eax, edx
bsr ecx, esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
xor eax, 0x1f
xor ecx, 0x1f
add eax, 0x20
test esi, esi
cmovne eax, ecx
mov edi, eax
add al, 0x31
mov ch, al
shr al, 3
add edi, 0x75
and al, 0xf
and ch, 7
and edi, 0x7f
neg al
mov cl, ch
movsx eax, al
mov dword [esp], eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov esi, dword [esp + eax + 0x30]
mov dword [esp + 4], esi
shl esi, cl
not cl
mov edx, dword [esp + eax + 0x2c]
mov eax, dword [esp]
mov ebx, edx
mov eax, dword [esp + eax + 0x34]
shr ebx, 1
shr ebx, cl
mov cl, ch
or ebx, esi
mov esi, 0x3c01
sub esi, edi
mov edi, dword [esp + 4]
shl esi, 0x10
shld eax, edi, cl
xor eax, 0x10000
or esi, eax
mov eax, dword [esp]
mov edi, dword [esp + eax + 0x28]
shld edx, edi, cl
shl edi, cl
jmp 0x4a0d2f
xor edi, edi
xor edx, edx
xor ebx, ebx
xor esi, esi
movsd qword [esp + 0x78], xmm0
mov ecx, 0x80000000
mov eax, dword [ebp + 8]
and ecx, dword [esp + 0x7c]
mov dword [eax], edi
mov dword [eax + 4], edx
mov dword [eax + 8], ebx
or ecx, esi
mov dword [eax + 0xc], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret