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

Disassembly:
sub esp, 0x54
push ebx
push esi
push edi
xor esi, esi
push ebp
call fcn.004a7f30
mov eax, dword [eax + 4]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x46d054
mov eax, dword [ecx]
call dword [eax + 0xc8]
test eax, eax
je 0x46d054
mov ecx, eax
call fcn.004a7ff0
mov edi, eax
test edi, edi
je 0x46d054
push 0x4b2c10
mov ecx, edi
call fcn.004a7e7c
test eax, eax
je 0x46d054
mov esi, dword [edi + 0x40]
mov eax, dword [esp + 0x80]
mov byte [esp + 0x14], al
mov byte [esp + 0x13], ah
shr eax, 0x10
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x7c]
mov byte [esp + 0x17], al
mov byte [esp + 0x16], ah
shr eax, 0x10
test esi, esi
mov byte [esp + 0x15], al
je 0x46d0cb
cmp word [esi + 0xfc], 0x18
je 0x46d0cb
lea eax, [esp + 0x12]
push 1
lea ecx, [esp + 0x17]
push eax
lea edx, [esp + 0x1c]
push ecx
push edx
mov eax, dword [esi + 0xf0]
push eax
call fcn.004638c0
lea ecx, [esp + 0x29]
lea edx, [esp + 0x2a]
lea eax, [esp + 0x2b]
add esp, 0x14
push 1
push ecx
push edx
mov ecx, dword [esi + 0xf0]
push eax
push ecx
call fcn.004638c0
add esp, 0x14
xor ecx, ecx
xor eax, eax
mov cl, byte [esp + 0x12]
mov al, byte [esp + 0x15]
sub ecx, eax
xor eax, eax
mov al, byte [esp + 0x13]
mov dword [esp + 0x58], ecx
xor ecx, ecx
mov cl, byte [esp + 0x16]
sub eax, ecx
xor ecx, ecx
mov cl, byte [esp + 0x17]
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x5c], eax
xor eax, eax
mov al, byte [esp + 0x14]
sub eax, ecx
lea ecx, [ebx + ebx*2]
mov dword [esp + 0x60], eax
lea eax, [ecx*8 + 0x1f]
cdq
and edx, 0x1f
mov ebp, dword [esp + 0x6c]
add eax, edx
mov edi, ebp
sar eax, 5
imul edi, eax
mov dword [esp + 0x24], eax
lea eax, [edi*4 + 0x28]
push eax
push 0x42
call dword [0x4c2588]
mov dword [esp + 0x3c], eax
push eax
call dword [0x4c258c]
mov dword [eax], 0x28
mov esi, eax
shl edi, 2
xor ecx, ecx
mov dword [esi + 4], ebx
mov dword [esi + 8], ebp
mov word [esi + 0xc], 1
mov word [esi + 0xe], 0x18
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], edi
mov edi, dword [esp + 0x24]
shl di, 2
sub ebx, dword [esp + 0x70]
dec ebx
sub ebp, dword [esp + 0x74]
dec ebp
mov dword [esi + 0x18], ecx
mov eax, ebx
mov dword [esi + 0x1c], ecx
mov dword [esi + 0x20], ecx
mov dword [esp + 0x40], ebx
mov dword [esi + 0x24], ecx
mov dword [esp + 0x38], ebp
mov ecx, dword [esp + 0x70]
cmp eax, ecx
jg 0x46d197
mov eax, ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
cmp eax, ecx
jg 0x46d1a9
mov eax, ecx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
imul eax, eax
imul ecx, ecx
add eax, ecx
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fsqrt
call 0x4a8cd0
movzx ecx, di
mov edx, ecx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x70]
imul edx, dword [esp + 0x74]
lea ebx, [eax + eax*2]
add edx, ebx
add edx, dword [esi]
add edx, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x4c], edx
mov ebx, edx
mov edi, edx
mov esi, edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], 0
cmp dword [esp + 0x34], 0
jl 0x46d34b
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], 0
cmp dword [esp + 0x2c], 0
jl 0x46d311
mov eax, dword [esp + 0x1c]
imul eax, eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x28]
imul eax, eax
add eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
fsqrt
call 0x4a8cd0
shl eax, 8
mov ecx, dword [esp + 0x5c]
cdq
idiv dword [esp + 0x54]
imul ecx, eax
sar ecx, 8
mov edx, eax
add cl, byte [esp + 0x16]
mov ebp, dword [esp + 0x28]
imul edx, dword [esp + 0x58]
imul eax, dword [esp + 0x60]
sar edx, 8
sar eax, 8
add dl, byte [esp + 0x15]
add al, byte [esp + 0x17]
cmp dword [esp + 0x40], ebp
jl 0x46d2c9
mov ebp, dword [esp + 0x1c]
cmp ebp, dword [esp + 0x38]
jg 0x46d2b5
mov ebp, dword [esp + 0x20]
inc dword [esp + 0x20]
mov byte [ebp], dl
mov ebp, dword [esp + 0x20]
inc dword [esp + 0x20]
mov byte [ebp], cl
mov ebp, dword [esp + 0x20]
inc dword [esp + 0x20]
mov byte [ebp], al
mov ebp, dword [esp + 0x1c]
cmp ebp, dword [esp + 0x74]
jg 0x46d2c9
mov byte [ebx], dl
inc ebx
inc ebx
mov byte [ebx - 1], cl
mov byte [ebx], al
inc ebx
mov ebp, dword [esp + 0x28]
cmp ebp, dword [esp + 0x70]
jg 0x46d2ff
mov ebp, dword [esp + 0x1c]
cmp ebp, dword [esp + 0x38]
jg 0x46d2e9
mov byte [esi], dl
inc esi
inc esi
mov byte [esi - 1], cl
mov byte [esi], al
sub esi, 5
mov ebp, dword [esp + 0x1c]
cmp ebp, dword [esp + 0x74]
jg 0x46d2ff
mov byte [edi], dl
inc edi
inc edi
mov byte [edi - 1], cl
mov byte [edi], al
sub edi, 5
inc dword [esp + 0x28]
mov ebp, dword [esp + 0x28]
cmp ebp, dword [esp + 0x2c]
jle 0x46d236
mov eax, dword [esp + 0x30]
add dword [esp + 0x44], eax
sub dword [esp + 0x48], eax
mov ebp, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
mov dword [esp + 0x20], ebp
sub dword [esp + 0x4c], eax
mov edi, dword [esp + 0x4c]
add dword [esp + 0x18], eax
mov esi, dword [esp + 0x18]
inc dword [esp + 0x1c]
mov ebp, dword [esp + 0x1c]
cmp ebp, dword [esp + 0x34]
jle 0x46d218
mov edx, dword [esp + 0x3c]
push edx
call dword [0x4c2590]
xor ax, ax
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x3c]
pop ebp
pop edi
mov dword [ecx], edx
pop esi
pop ebx
add esp, 0x54
ret