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

Disassembly:
mov eax, dword [esp + 0x14]
sub esp, 0xd4
push ebx
mov ebx, dword [esp + 0xe4]
push ebp
push esi
push edi
xor edi, edi
dec eax
cmp eax, 4
mov edx, 1
jl 0x46f021
mov eax, 4
sub eax, ebx
mov dword [esp + 0x18], eax
mov eax, 0xc
sub eax, ebx
mov dword [esp + 0x1c], eax
mov ebp, 0xfffffffc
mov eax, 0xfffffff4
xor esi, esi
sub ebp, ebx
sub eax, ebx
lea ecx, [ebx + 0x14]
mov dword [esp + 0x50], eax
fld dword [ecx - 8]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x46efca
mov eax, dword [esp + 0x50]
mov edi, edx
lea esi, [eax + ecx]
fld dword [ecx]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x46efdd
lea edi, [edx + 1]
lea esi, [ecx + ebp]
fld dword [ecx + 8]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x46eff5
mov eax, dword [esp + 0x18]
lea edi, [edx + 2]
lea esi, [eax + ecx]
fld dword [ecx + 0x10]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x46f00d
mov eax, dword [esp + 0x1c]
lea edi, [edx + 3]
lea esi, [eax + ecx]
mov eax, dword [esp + 0xf8]
add edx, 4
add eax, 0xfffffffd
add ecx, 0x20
cmp edx, eax
jl 0x46efb3
mov eax, dword [esp + 0xf8]
cmp edx, eax
jge 0x46f05e
lea esi, [edi*8]
lea ecx, [ebx + edx*8 + 4]
mov ebp, eax
lea esp, [esp]
fld dword [ecx]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x46f056
mov edi, edx
lea esi, [edx*8]
inc edx
add ecx, 8
cmp edx, ebp
jl 0x46f040
mov ecx, dword [esp + 0xf8]
lea eax, [edi - 1]
test eax, eax
jge 0x46f070
add eax, ecx
jmp 0x46f076
cmp eax, ecx
jl 0x46f076
sub eax, ecx
mov edx, eax
fld dword [ebx + edx*8]
mov dword [esp + 0x10], eax
call fcn.0045c1b0
fld dword [ebx + edi*8]
mov esi, eax
call fcn.0045c1b0
mov ecx, dword [esp + 0x10]
fld dword [ebx + ecx*8 + 4]
mov ebp, eax
fsub dword [ebx + edi*8 + 4]
lea eax, [ebx + edi*8 + 4]
mov dword [esp + 0x18], eax
call fcn.0045c1b0
cmp ebp, esi
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], ebp
jle 0x46f0cb
mov ecx, ebp
sub ecx, esi
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x68], 0xffffffff
jmp 0x46f0d9
sub esi, ebp
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], 1
mov edx, dword [esp + 0xf4]
mov ecx, dword [esp + 0x10]
mov ebx, dword [edx + edi*8]
mov ecx, dword [edx + ecx*8]
cmp ebx, ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], ebx
jle 0x46f120
mov esi, ebx
sub esi, ecx
mov dword [esp + 0x8c], esi
mov dword [esp + 0x98], 0xffffffff
jmp 0x46f134
sub ecx, ebx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x98], 1
mov ecx, dword [esp + 0x10]
mov esi, dword [edx + edi*8 + 4]
mov ecx, dword [edx + ecx*8 + 4]
cmp esi, ecx
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], esi
jle 0x46f173
mov edx, esi
sub edx, ecx
mov dword [esp + 0x74], edx
mov dword [esp + 0x80], 0xffffffff
jmp 0x46f184
sub ecx, esi
mov dword [esp + 0x74], ecx
mov dword [esp + 0x80], 1
inc edi
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
jns 0x46f19a
mov edx, dword [esp + 0xf8]
add edi, edx
jmp 0x46f1a7
mov eax, dword [esp + 0xf8]
cmp edi, eax
jl 0x46f1a7
sub edi, eax
mov eax, dword [esp + 0xf0]
mov ecx, edi
fld dword [eax + ecx*8]
mov dword [esp + 0x14], edi
call fcn.0045c1b0
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0x18]
mov edi, eax
mov eax, dword [esp + 0x14]
fld dword [edx + eax*8 + 4]
fsub dword [ecx]
call fcn.0045c1b0
cmp ebp, edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], ebp
jle 0x46f1f8
sub ebp, edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], 0xffffffff
jmp 0x46f206
sub edi, ebp
mov dword [esp + 0x28], edi
mov dword [esp + 0x34], 1
mov edx, dword [esp + 0xf4]
mov edi, dword [esp + 0x14]
mov ecx, dword [edx + edi*8]
xor ebp, ebp
cmp ebx, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebx
jle 0x46f23a
sub ebx, ecx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x4c], 0xffffffff
jmp 0x46f248
sub ecx, ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], 1
mov ecx, dword [edx + edi*8 + 4]
cmp esi, ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], esi
jle 0x46f27c
sub esi, ecx
mov dword [esp + 0xa4], esi
mov dword [esp + 0xb0], 0xffffffff
jmp 0x46f290
sub ecx, esi
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xb0], 1
mov edx, dword [esp + 0x18]
fld dword [edx]
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
call fcn.0045c1b0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
cmp ecx, eax
jl 0x46f3e6
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0xf8]
lea eax, [ebx - 1]
test eax, eax
jge 0x46f2d3
add eax, ecx
jmp 0x46f2d9
cmp eax, ecx
jl 0x46f2d9
sub eax, ecx
mov ebp, dword [esp + 0xf0]
mov edx, eax
fld dword [ebp + edx*8]
mov dword [esp + 0x10], eax
call fcn.0045c1b0
fld dword [ebp + ebx*8]
mov edi, eax
call fcn.0045c1b0
mov esi, eax
mov eax, dword [esp + 0x10]
fld dword [ebp + eax*8 + 4]
fsub dword [ebp + ebx*8 + 4]
call fcn.0045c1b0
xor ebp, ebp
cmp esi, edi
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], esi
jle 0x46f32b
sub esi, edi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], 0xffffffff
jmp 0x46f339
sub edi, esi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x68], 1
mov esi, dword [esp + 0xf4]
mov edi, dword [esp + 0x10]
mov ecx, dword [esi + ebx*8]
mov edx, dword [esi + edi*8]
cmp ecx, edx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x84], ebp
mov dword [esp + 0x88], ecx
jle 0x46f37a
sub ecx, edx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x98], 0xffffffff
jmp 0x46f38e
sub edx, ecx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x98], 1
mov ecx, dword [esi + ebx*8 + 4]
mov edx, dword [esi + edi*8 + 4]
cmp ecx, edx
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ecx
jle 0x46f3c3
sub ecx, edx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x80], 0xffffffff
jmp 0x46f3d4
sub edx, ecx
mov dword [esp + 0x74], edx
mov dword [esp + 0x80], 1
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
cmp ebx, dword [esp + 0x14]
je 0x46f522
mov ecx, dword [esp + 0x20]
cmp ecx, dword [esp + 0x2c]
jl 0x46f52d
mov eax, dword [esp + 0x14]
mov ebx, eax
inc eax
jns 0x46f408
mov edx, dword [esp + 0xf8]
add eax, edx
jmp 0x46f415
mov ecx, dword [esp + 0xf8]
cmp eax, ecx
jl 0x46f415
sub eax, ecx
mov ebp, dword [esp + 0xf0]
fld dword [ebp + eax*8]
mov dword [esp + 0x14], eax
call fcn.0045c1b0
fld dword [ebp + ebx*8]
mov edi, eax
call fcn.0045c1b0
mov ecx, dword [esp + 0x14]
fld dword [ebp + ecx*8 + 4]
mov esi, eax
fsub dword [ebp + ebx*8 + 4]
call fcn.0045c1b0
cmp esi, edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], esi
jle 0x46f467
sub esi, edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], 0xffffffff
jmp 0x46f475
sub edi, esi
mov dword [esp + 0x28], edi
mov dword [esp + 0x34], 1
mov esi, dword [esp + 0xf4]
mov edi, dword [esp + 0x14]
mov ecx, dword [esi + ebx*8]
mov edx, dword [esi + edi*8]
cmp ecx, edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], ecx
jle 0x46f4ae
sub ecx, edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], 0xffffffff
jmp 0x46f4bc
sub edx, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x4c], 1
mov ecx, dword [esi + ebx*8 + 4]
mov edx, dword [esi + edi*8 + 4]
cmp ecx, edx
mov ebp, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ebp
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], ecx
jle 0x46f4fa
sub ecx, edx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xb0], 0xffffffff
jmp 0x46f50e
sub edx, ecx
mov dword [esp + 0xa4], edx
mov dword [esp + 0xb0], 1
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
cmp ebx, dword [esp + 0x10]
jne 0x46f531
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd4
ret
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x18]
test eax, eax
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
jl 0x46f7f4
mov edi, dword [esp + 0xe8]
cmp eax, dword [edi + 4]
jge 0x46f7f4
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x58]
mov edx, dword [esp + 0x88]
mov eax, edi
sub eax, ebp
cmp edx, ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0xd0], edx
jle 0x46f590
mov ecx, edx
sub ecx, ebx
mov dword [esp + 0xe0], 0xffffffff
jmp 0x46f59f
mov ecx, ebx
sub ecx, edx
mov dword [esp + 0xe0], 1
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0xa0]
cmp edx, esi
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xdc], eax
mov dword [esp + 0xb8], edx
jle 0x46f5d4
mov ecx, edx
sub ecx, esi
mov dword [esp + 0xc8], 0xffffffff
jmp 0x46f5e3
mov ecx, esi
sub ecx, edx
mov dword [esp + 0xc8], 1
cmp ebp, edi
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xc4], eax
mov dword [esp + 0x1c], ebp
jge 0x46f7de
mov ebp, dword [esp + 0xfc]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0xb8]
mov edx, dword [esp + 0xdc]
mov ecx, eax
mov eax, dword [esp + 0x50]
lea esp, [esp]
test edi, edi
jl 0x46f75a
mov ebx, dword [esp + 0xe8]
cmp edi, dword [ebx]
jge 0x46f75a
mov esi, dword [esp + 0x1c]
mov eax, ebx
mov edx, dword [eax + 8]
imul edx, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
add edx, esi
lea esi, [eax + edx*4]
mov eax, dword [esp + 0xec]
mov ecx, dword [eax + 8]
imul ecx, dword [esp + 0xb8]
add ecx, dword [esp + 0xd0]
mov edx, dword [eax + 0xc]
movzx eax, byte [edx + ecx*4 + 3]
lea edi, [edx + ecx*4]
movzx ecx, byte [ebp + 0xc]
movzx ebx, byte [esi]
imul eax, ecx
mov ecx, dword [ebp]
add eax, 0x80
mov edx, eax
sar edx, 8
add edx, eax
movzx eax, byte [edi]
sub eax, ebx
add eax, ecx
sar edx, 8
imul eax, edx
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, ebx
cmp ecx, 0xff
jle 0x46f6b9
mov ecx, 0xff
mov eax, ecx
jmp 0x46f6c3
test ecx, ecx
jle 0x46f6c1
mov eax, ecx
jmp 0x46f6c3
xor eax, eax
movzx ebx, byte [esi + 1]
mov byte [esi], al
movzx eax, byte [edi + 1]
add eax, dword [ebp + 4]
sub eax, ebx
imul eax, edx
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, ebx
cmp ecx, 0xff
jle 0x46f6f7
mov ecx, 0xff
mov eax, ecx
jmp 0x46f701
test ecx, ecx
jle 0x46f6ff
mov eax, ecx
jmp 0x46f701
xor eax, eax
movzx ebx, byte [esi + 2]
mov byte [esi + 1], al
movzx eax, byte [edi + 2]
add eax, dword [ebp + 8]
sub eax, ebx
imul eax, edx
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, ebx
cmp ecx, 0xff
jle 0x46f734
mov ecx, 0xff
jmp 0x46f73a
test ecx, ecx
jg 0x46f73a
xor ecx, ecx
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0xdc]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0xc4]
mov esi, dword [esp + 0xb8]
add edx, dword [esp + 0xd4]
cmp edx, eax
mov dword [esp + 0xdc], edx
jle 0x46f794
mov edi, dword [esp + 0xd0]
mov ebx, dword [esp + 0xe0]
sub edx, eax
add edi, ebx
cmp edx, eax
jg 0x46f773
mov dword [esp + 0xd0], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0xdc], edx
add ecx, dword [esp + 0xbc]
cmp ecx, eax
mov dword [esp + 0xc4], ecx
jle 0x46f7cd
jmp 0x46f7b0
mov ebx, dword [esp + 0xc8]
sub ecx, eax
add esi, ebx
cmp ecx, eax
jg 0x46f7b0
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xb8], esi
mov ebx, dword [esp + 0x24]
inc edi
cmp edi, ebx
mov dword [esp + 0x1c], edi
jl 0x46f620
emms
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x64]
add eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x60]
mov dword [esp + 0x64], eax
jle 0x46f826
jmp 0x46f810
mov edi, dword [esp + 0x68]
add dword [esp + 0x58], edi
mov edi, dword [esp + 0x60]
sub eax, edi
cmp eax, edi
jg 0x46f810
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x8c]
inc eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x94]
add eax, edi
cmp eax, dword [esp + 0x90]
mov dword [esp + 0x94], eax
jle 0x46f872
nop
mov edi, dword [esp + 0x98]
add dword [esp + 0x88], edi
mov edi, dword [esp + 0x90]
sub eax, edi
cmp eax, edi
jg 0x46f850
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x84]
mov edi, dword [esp + 0x74]
inc eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x7c]
add eax, edi
cmp eax, dword [esp + 0x78]
mov dword [esp + 0x7c], eax
jle 0x46f8b9
jmp 0x46f8a0
mov edi, dword [esp + 0x80]
add dword [esp + 0x70], edi
mov edi, dword [esp + 0x78]
sub eax, edi
cmp eax, edi
jg 0x46f8a0
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x6c]
add ecx, dword [esp + 0x28]
inc eax
cmp ecx, edx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x30], ecx
jle 0x46f8e6
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x34]
sub ecx, edx
add eax, edi
cmp ecx, edx
jg 0x46f8d2
mov dword [esp + 0x30], ecx
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x20]
add ebp, dword [esp + 0x40]
inc edx
cmp ebp, esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x48], ebp
jle 0x46f914
jmp 0x46f900
mov edx, dword [esp + 0x4c]
sub ebp, esi
add ebx, edx
cmp ebp, esi
jg 0x46f900
mov dword [esp + 0x48], ebp
mov dword [esp + 0x3c], ebx
mov eax, dword [esp + 0xac]
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa8]
add eax, esi
inc edi
cmp eax, ecx
mov dword [esp + 0x38], edi
mov dword [esp + 0xac], eax
jle 0x46f966
mov edx, dword [esp + 0xa0]
mov esi, dword [esp + 0xb0]
lea ecx, [ecx]
sub eax, ecx
add edx, esi
cmp eax, ecx
jg 0x46f950
mov dword [esp + 0xac], eax
mov dword [esp + 0xa0], edx
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x9c], ecx
inc eax
jmp 0x46f2a9