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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49ed1c
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x1e0
mov eax, dword [0x4c60c4]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x148], esi
cmp dword [esi + 0x458], 0
jge 0x41d7b1
test byte [esi + 4], 2
lea eax, [ebp - 0x19c]
mov dword [ebp - 0x198], 0xffffffff
lea ecx, [esi + 0x40]
mov dword [ebp - 0x194], 0
mov dword [ebp - 0x190], 0
mov dword [ebp - 0x18c], 0
mov dword [ebp - 0x188], 0
mov dword [ebp - 0x184], 0
push eax
mov dword [ebp - 0x19c], 0x1b00d9
je 0x41d7a2
mov dword [ebp - 0x19c], 0x20002
call fcn.00421350
mov eax, dword [esi + 0x40]
dec eax
mov dword [esi + 0x458], eax
cmp dword [esi + 0x45c], 0
jge 0x41d81f
test byte [esi + 4], 4
jne 0x41d81f
lea eax, [ebp - 0x19c]
mov dword [ebp - 0x198], 0xffffffff
push eax
lea ecx, [esi + 0x40]
mov dword [ebp - 0x194], 0
mov dword [ebp - 0x190], 0
mov dword [ebp - 0x18c], 0
mov dword [ebp - 0x188], 0
mov dword [ebp - 0x184], 0
mov dword [ebp - 0x19c], 0x400041
call fcn.00421350
mov eax, dword [esi + 0x40]
dec eax
mov dword [esi + 0x45c], eax
mov ecx, esi
mov dword [esi + 8], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x30], 0
call fcn.0041d120
xor eax, eax
mov dword [ebp - 0x1e0], 0
mov dword [ebp - 0x1e4], 0
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x1dc], eax
mov dword [ebp - 4], eax
xor edi, edi
mov dword [ebp - 0x1c4], eax
mov dword [ebp - 0x1c8], eax
mov dword [ebp - 0x158], edi
mov dword [ebp - 0x1c0], edi
mov byte [ebp - 4], 1
lea edx, [eax + 8]
mov ecx, dword [esi + 0x4c]
mov dword [ebp - 0x14c], ecx
test ecx, ecx
jle 0x41d903
cmp ecx, edx
mov eax, ecx
cmovl eax, edx
mov dword [ebp - 0x120], eax
test eax, eax
jle 0x41d903
mov ecx, dword [0x4c8150]
test ecx, ecx
je 0x41d8cb
inc dword [ecx + 0x374]
push dword [0x4c8148]
imul eax, eax, 0xc4
push eax
call fcn.00402870
mov ecx, dword [ebp - 0x120]
add esp, 8
mov dword [ebp - 0x1e0], ecx
mov edx, 8
mov ecx, dword [ebp - 0x14c]
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x1dc], eax
mov dword [ebp - 0x1e4], ecx
mov ecx, dword [esi + 0x34]
mov dword [ebp - 0x15c], ecx
test ecx, ecx
jle 0x41d96d
cmp ecx, 8
mov eax, ecx
cmovl eax, edx
mov dword [ebp - 0x120], eax
test eax, eax
jle 0x41d96d
mov ecx, dword [0x4c8150]
test ecx, ecx
je 0x41d938
inc dword [ecx + 0x374]
push dword [0x4c8148]
lea eax, [eax + eax*2]
shl eax, 3
push eax
call fcn.00402870
mov ecx, dword [ebp - 0x15c]
mov edi, eax
mov eax, dword [ebp - 0x120]
add esp, 8
mov dword [ebp - 0x158], edi
mov dword [ebp - 0x1c0], edi
mov dword [ebp - 0x1c4], eax
mov dword [ebp - 0x1c8], ecx
imul ecx, dword [ebp - 0x14c], 0xc4
push ecx
push 0
push dword [ebp - 0x150]
call fcn.00479a60
mov eax, dword [ebp - 0x15c]
add esp, 0xc
lea eax, [eax + eax*2]
shl eax, 3
push eax
push 0
push edi
call fcn.00479a60
add esp, 0xc
mov dword [ebp - 0x134], 0
cmp dword [esi + 0x4c], 0
jle 0x41db07
mov edx, dword [ebp - 0x150]
xor eax, eax
add edx, 0xa4
mov dword [ebp - 0x12c], eax
mov dword [ebp - 0x11c], edx
mov ecx, dword [esi + 0x54]
mov dword [edx - 4], 0xffffffff
add ecx, eax
xor edx, edx
mov dword [ebp - 0x128], ecx
cmp dword [esi + 0x34], edx
jle 0x41db7a
or eax, 0xffffffff
cmp eax, 0xffffffff
jne 0x41da29
mov eax, dword [ebp - 0x128]
mov ecx, dword [esi + 0x3c]
mov eax, dword [eax + 0x74]
cmp eax, dword [ecx + edx*4]
mov eax, dword [ebp - 0x11c]
jne 0x41da17
mov dword [eax - 4], edx
mov eax, edx
jmp 0x41da1a
mov eax, dword [eax - 4]
inc edx
cmp edx, dword [esi + 0x34]
jl 0x41d9f4
cmp eax, 0xffffffff
je 0x41db7a
mov eax, dword [ebp - 0x128]
mov esi, dword [eax]
mov ecx, esi
mov edx, dword [eax + 0xc]
call fcn.00419e70
mov ecx, dword [ebp - 0x11c]
mov edx, esi
add ecx, 0xffffff5c
push eax
mov dword [ebp - 0x120], ecx
call fcn.00413dd0
add esp, 4
test eax, eax
je 0x41db7a
mov eax, dword [ebp - 0x120]
mov esi, 0x4bdbc0
mov edx, dword [ebp - 0x11c]
mov eax, dword [eax + 0xa0]
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x124], ecx
mov eax, dword [eax + 0x30]
test eax, eax
cmovne esi, eax
mov dword [edx - 8], esi
cmp word [esi], 0
je 0x41dab8
movzx eax, word [esi + 2]
test ax, ax
je 0x41dab2
mov ecx, eax
cmp dword [edx], ecx
cmovge ecx, dword [edx]
add esi, 4
mov dword [edx], ecx
cmp word [esi], 0
jne 0x41da97
mov ecx, dword [ebp - 0x124]
mov esi, dword [ebp - 0x124]
inc dword [edi + ecx*8]
mov ecx, dword [edx]
mov eax, dword [ebp - 0x12c]
cmp dword [edi + esi*8 + 4], ecx
cmovge ecx, dword [edi + esi*8 + 4]
add edx, 0xc4
mov dword [edi + esi*8 + 4], ecx
add eax, 0x78
mov ecx, dword [ebp - 0x134]
mov esi, dword [ebp - 0x148]
inc ecx
mov dword [ebp - 0x134], ecx
mov dword [ebp - 0x11c], edx
mov dword [ebp - 0x12c], eax
cmp ecx, dword [esi + 0x4c]
jl 0x41d9d4
mov eax, dword [ebp - 0x14c]
xor esi, esi
mov dword [ebp - 0x144], esi
test eax, eax
jle 0x41df1d
mov edx, dword [ebp - 0x150]
add edx, 0xa8
mov dword [ebp - 0x134], eax
mov dword [ebp - 0x11c], edx
mov eax, dword [edx - 8]
mov ecx, dword [edx - 4]
add ecx, 0x20
sar ecx, 5
lea esi, [eax + eax*2]
mov dword [ebp - 0x140], ecx
mov eax, dword [edx + 8]
mov dword [ebp - 0x12c], esi
mov dword [ebp - 0x120], eax
cmp ecx, eax
jle 0x41dbb4
test eax, eax
je 0x41db86
cdq
sub eax, edx
mov edx, dword [ebp - 0x11c]
sar eax, 1
add eax, dword [ebp - 0x120]
mov dword [ebp - 0x128], eax
jmp 0x41db90
mov byte [ebp - 0x139], 0
jmp 0x41ef90
mov dword [ebp - 0x128], 8
cmp dword [ebp - 0x128], ecx
mov eax, ecx
lea ecx, [edx + 4]
cmovg eax, dword [ebp - 0x128]
push eax
call fcn.004124e0
mov edx, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x140]
lea eax, [ecx*4]
mov dword [edx + 4], ecx
push eax
push 0
push dword [edx + 0xc]
call fcn.00479a60
lea ecx, [esi*8 + 0xc]
add esp, 0xc
add ecx, edi
mov dword [ebp - 0x124], ecx
cmp dword [ecx], 0
jne 0x41dc3f
mov esi, dword [edi + esi*8 + 4]
mov eax, dword [ecx + 4]
add esi, 0x20
sar esi, 5
mov dword [ebp - 0x120], eax
cmp esi, eax
jle 0x41dc28
test eax, eax
je 0x41dc0a
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
add ecx, dword [ebp - 0x120]
jmp 0x41dc0f
mov ecx, 8
cmp ecx, esi
mov eax, esi
cmovg eax, ecx
mov ecx, dword [ebp - 0x124]
push eax
call fcn.004124e0
mov ecx, dword [ebp - 0x124]
lea eax, [esi*4]
mov dword [ecx], esi
push eax
push 0
push dword [ecx + 8]
call fcn.00479a60
add esp, 0xc
mov edx, dword [ebp - 0x11c]
mov eax, dword [edx - 0xc]
mov dword [ebp - 0x128], eax
movzx ecx, word [eax]
test cx, cx
je 0x41dd3a
nop word [eax + eax]
movzx eax, word [eax + 2]
test ax, ax
je 0x41dd34
movzx edi, cx
cmp edi, eax
ja 0x41dd19
nop dword [eax + eax]
mov eax, dword [ebp - 0x12c]
mov ecx, edi
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov esi, edi
mov ecx, dword [ebp - 0x158]
sar esi, 5
mov dword [ebp - 0x120], edx
mov eax, dword [ecx + eax*8 + 0x14]
test dword [eax + esi*4], edx
jne 0x41dd00
mov ecx, dword [ebp - 0x11c]
mov edx, edi
add ecx, 0xffffff58
call fcn.004142a0
mov edx, dword [ebp - 0x11c]
test eax, eax
je 0x41dd06
inc dword [edx]
mov eax, dword [ebp - 0x12c]
mov ecx, dword [ebp - 0x158]
inc dword [ecx + eax*8 + 8]
mov eax, dword [edx + 0xc]
mov ecx, dword [ebp - 0x120]
mov edx, dword [ebp - 0x158]
or dword [eax + esi*4], ecx
mov eax, dword [ebp - 0x12c]
mov eax, dword [edx + eax*8 + 0x14]
or dword [eax + esi*4], ecx
inc dword [ebp - 0x144]
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x128]
inc edi
movzx eax, word [eax + 2]
cmp edi, eax
jbe 0x41dc80
mov eax, dword [ebp - 0x128]
add eax, 4
mov dword [ebp - 0x128], eax
movzx ecx, word [eax]
test cx, cx
jne 0x41dc60
mov edi, dword [ebp - 0x158]
add edx, 0xc4
sub dword [ebp - 0x134], 1
mov dword [ebp - 0x11c], edx
jne 0x41db35
mov esi, dword [ebp - 0x150]
mov eax, dword [ebp - 0x14c]
add esi, 0xb8
mov dword [ebp - 0x11c], eax
nop dword [eax + eax]
mov edi, dword [esi - 0x10]
cmp edi, dword [esi + 4]
jle 0x41ddeb
mov eax, dword [0x4c8150]
test eax, eax
je 0x41dd87
inc dword [eax + 0x374]
push dword [0x4c8148]
lea eax, [edi*4]
push eax
call fcn.00402870
mov edx, dword [esi + 8]
add esp, 8
mov dword [ebp - 0x120], eax
test edx, edx
je 0x41dde5
mov ecx, dword [esi]
shl ecx, 2
push ecx
push edx
push eax
call fcn.00478f60
mov ecx, dword [esi + 8]
add esp, 0xc
test ecx, ecx
je 0x41ddd0
mov eax, dword [0x4c8150]
test eax, eax
je 0x41ddd0
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
mov eax, dword [ebp - 0x120]
add esp, 8
mov dword [esi + 8], eax
mov dword [esi + 4], edi
mov ecx, dword [esi - 4]
mov eax, dword [esi - 0xc]
mov dword [ebp - 0x12c], ecx
lea eax, [ecx + eax*4]
mov dword [ebp - 0x140], eax
cmp ecx, eax
jae 0x41dec4
xor edi, edi
mov dword [ebp - 0x128], edi
mov edx, dword [ecx]
mov dword [ebp - 0x120], edx
test edx, edx
je 0x41deaa
xor eax, eax
mov ecx, 1
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x134], ecx
test edx, ecx
je 0x41de8a
mov edx, dword [esi]
and edi, 0xffffffe0
add edi, eax
mov eax, dword [esi + 4]
cmp edx, eax
jne 0x41de70
lea ecx, [edx + 1]
test eax, eax
je 0x41de56
cdq
sub eax, edx
sar eax, 1
add eax, dword [esi + 4]
jmp 0x41de5b
mov eax, 8
cmp eax, ecx
cmovg ecx, eax
push ecx
mov ecx, esi
call fcn.004124e0
mov edx, dword [esi]
mov ecx, dword [ebp - 0x134]
mov eax, dword [esi + 8]
mov dword [eax + edx*4], edi
inc dword [esi]
mov eax, dword [ebp - 0x124]
mov edx, dword [ebp - 0x120]
mov edi, dword [ebp - 0x128]
inc eax
rol ecx, 1
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x134], ecx
cmp eax, 0x20
jb 0x41de33
mov ecx, dword [ebp - 0x12c]
mov eax, dword [ebp - 0x140]
add ecx, 4
add edi, 0x20
mov dword [ebp - 0x12c], ecx
mov dword [ebp - 0x128], edi
cmp ecx, eax
jb 0x41de10
mov ecx, dword [esi - 4]
test ecx, ecx
je 0x41defe
mov eax, dword [0x4c8150]
mov dword [esi - 8], 0
mov dword [esi - 0xc], 0
test eax, eax
je 0x41dee8
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
add esp, 8
mov dword [esi - 4], 0
add esi, 0xc4
sub dword [ebp - 0x11c], 1
jne 0x41dd70
mov edi, dword [ebp - 0x158]
mov esi, dword [ebp - 0x144]
cmp dword [ebp - 0x15c], 0
jle 0x41df87
mov esi, dword [ebp - 0x15c]
lea eax, [edi + 0x14]
mov dword [ebp - 0x124], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x41df73
mov dword [eax - 4], 0
mov dword [eax - 8], 0
mov eax, dword [0x4c8150]
test eax, eax
je 0x41df58
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
mov eax, dword [ebp - 0x124]
add esp, 8
mov dword [eax], 0
add eax, 0x18
mov dword [ebp - 0x124], eax
sub esi, 1
jne 0x41df35
mov esi, dword [ebp - 0x144]
test edi, edi
je 0x41dfcb
mov eax, dword [0x4c8150]
mov dword [ebp - 0x1c4], 0
mov dword [ebp - 0x1c8], 0
test eax, eax
je 0x41dfae
dec dword [eax + 0x374]
push dword [0x4c8148]
push edi
call fcn.00402880
add esp, 8
xor eax, eax
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x1c0], eax
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1d4], 0
mov dword [ebp - 0x1cc], 0
xor eax, eax
mov dword [ebp - 0x1ec], 0
mov dword [ebp - 0x1f0], 0
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x1e8], eax
push esi
lea ecx, [ebp - 0x1d4]
mov byte [ebp - 4], 3
call fcn.004211d0
test esi, esi
jle 0x41e06c
cmp esi, 8
mov edi, esi
mov eax, 8
cmovl edi, eax
test edi, edi
jle 0x41e06c
mov eax, dword [0x4c8150]
test eax, eax
je 0x41e03f
inc dword [eax + 0x374]
push dword [0x4c8148]
lea eax, [edi*8]
sub eax, edi
shl eax, 2
push eax
call fcn.00402870
add esp, 8
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x1e8], eax
mov dword [ebp - 0x1ec], edi
mov ecx, dword [ebp - 0x1d4]
mov eax, dword [ebp - 0x1cc]
shl ecx, 4
push ecx
push 0
push eax
mov dword [ebp - 0x1f0], esi
mov dword [ebp - 0x128], eax
call fcn.00479a60
add esp, 0xc
lea eax, [esi*8]
sub eax, esi
shl eax, 2
push eax
push 0
push dword [ebp - 0x15c]
call fcn.00479a60
mov ecx, dword [ebp - 0x14c]
xor eax, eax
xor edx, edx
mov dword [ebp - 0x144], eax
add esp, 0xc
mov dword [ebp - 0x11c], edx
mov dword [ebp - 0x1b4], eax
test ecx, ecx
jle 0x41e4d0
mov edi, dword [ebp - 0x150]
add edi, 0x98
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x134], edi
mov dword [ebp - 0x120], ecx
mov esi, dword [edi + 0x10]
test esi, esi
je 0x41e4b0
mov edx, dword [ebp - 0x1b4]
mov ecx, dword [ebp - 0x15c]
shl eax, 4
add eax, dword [ebp - 0x128]
mov dword [edi - 4], eax
lea eax, [edx*8]
sub eax, edx
add dword [ebp - 0x144], esi
add edx, esi
mov dword [ebp - 0x1b4], edx
lea ecx, [ecx + eax*4]
mov eax, dword [ebp - 0x148]
mov dword [edi], ecx
mov edx, dword [eax + 0x54]
add edx, dword [ebp - 0x124]
mov dword [ebp - 0x12c], edx
mov eax, dword [edx + 0x10]
mov dword [edi - 0x1c], eax
mov eax, dword [edi + 0x28]
mov dword [edi - 0x14], eax
mov eax, dword [edi + 0x20]
mov dword [edi - 0x18], 0
mov dword [edi - 0x10], eax
mov dword [edi - 0xc], ecx
mov al, byte [edx + 0x14]
mov byte [edi - 8], al
mov al, byte [edx + 0x18]
mov byte [edi - 7], al
movss xmm1, dword [edx + 0x10]
comiss xmm1, dword [0x4bdf38]
jbe 0x41e1d4
mov edx, dword [edi - 0x7c]
mov eax, 0x100
mov edi, dword [edi - 0x94]
cwde
movzx ecx, byte [edx + edi + 6]
movsx ecx, cx
imul ecx, eax
movzx eax, byte [edx + edi + 7]
movzx edx, byte [edx + edi + 5]
add cx, ax
movsx esi, cx
mov ecx, dword [ebp - 0x134]
mov eax, dword [ecx - 0x7c]
movzx ecx, byte [eax + edi + 4]
mov eax, 0x100
mov edi, dword [ebp - 0x134]
cwde
movsx ecx, cx
imul ecx, eax
add dx, cx
movsx eax, dx
sub eax, esi
movd xmm0, eax
jmp 0x41e1fa
mov ecx, dword [edi - 0x84]
mov eax, dword [edi - 0x94]
xorps xmm1, xmmword [0x4be510]
movzx edx, byte [ecx + eax + 0x13]
movzx eax, byte [ecx + eax + 0x12]
shl eax, 8
add edx, eax
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mov eax, dword [ebp - 0x148]
mov eax, dword [eax + 0x10]
divss xmm1, xmm0
mov dword [ebp - 0x154], eax
xor eax, eax
mov dword [ebp - 0x1bc], eax
movss dword [ebp - 0x140], xmm1
cmp dword [edi + 0x20], eax
jle 0x41e4a4
mov dword [ebp - 0x174], eax
nop
mov edx, dword [edi + 0x28]
lea ecx, [edi - 0x98]
mov edx, dword [edx + eax*4]
call fcn.004142a0
mov ecx, dword [ebp - 0x12c]
mov edx, eax
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x1b8], 0
movd xmm0, dword [ecx + 0x14]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [ebp - 0x17c], xmm0
movd xmm0, dword [ecx + 0x18]
lea ecx, [ebp - 0x1d8]
push ecx
cvtdq2ps xmm0, xmm0
lea ecx, [ebp - 0x1b0]
push ecx
lea ecx, [ebp - 0x1b8]
push ecx
lea ecx, [ebp - 0x134]
mulss xmm0, xmm1
push ecx
lea ecx, [edi - 0x98]
movss dword [ebp - 0x168], xmm0
call fcn.004146c0
add esp, 0x10
test eax, eax
jne 0x41e2cc
xor esi, esi
mov dword [ebp - 0x134], esi
mov dword [ebp - 0x17c], esi
mov dword [ebp - 0x168], esi
jmp 0x41e40a
xorps xmm0, xmm0
sub esp, 8
cvtsi2ss xmm0, dword [ebp - 0x134]
mulss xmm0, dword [ebp - 0x17c]
addss xmm0, dword [0x4bdf38]
cvtps2pd xmm0, xmm0
movsd qword [ebp - 0x138], xmm0
fld qword [ebp - 0x138]
fstp qword [esp]
call fcn.0049d7f0
fstp qword [ebp - 0x138]
movsd xmm0, qword [ebp - 0x138]
xorps xmm1, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si esi, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [ebp - 0x1d8]
mulss xmm0, dword [ebp - 0x168]
subss xmm1, xmm0
cvtps2pd xmm0, xmm1
movsd qword [ebp - 0x138], xmm0
fld qword [ebp - 0x138]
fstp qword [esp]
call fcn.0049d7f0
fstp qword [ebp - 0x138]
movsd xmm0, qword [ebp - 0x138]
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [ebp - 0x1b0]
mov dword [ebp - 0x134], eax
mulss xmm0, dword [ebp - 0x17c]
addss xmm0, dword [0x4bdf38]
cvtps2pd xmm0, xmm0
movsd qword [ebp - 0x180], xmm0
fld qword [ebp - 0x180]
fstp qword [esp]
call fcn.0049b590
fstp qword [ebp - 0x180]
movsd xmm0, qword [ebp - 0x180]
xorps xmm1, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [ebp - 0x1b8]
mov dword [ebp - 0x17c], eax
mulss xmm0, dword [ebp - 0x168]
subss xmm1, xmm0
cvtps2pd xmm0, xmm1
movsd qword [ebp - 0x170], xmm0
fld qword [ebp - 0x170]
fstp qword [esp]
call fcn.0049b590
fstp qword [ebp - 0x170]
movsd xmm0, qword [ebp - 0x170]
add esp, 8
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
mov dword [ebp - 0x168], eax
mov eax, dword [ebp - 0x154]
movzx edx, ax
mov eax, dword [ebp - 0x12c]
mov ecx, edx
sub ecx, esi
movss xmm1, dword [ebp - 0x140]
mov esi, dword [ebp - 0x174]
dec cx
dec dx
add cx, word [eax + 0x14]
add cx, word [ebp - 0x17c]
mov eax, dword [edi - 4]
mov word [esi + eax + 4], cx
mov eax, dword [ebp - 0x12c]
mov cx, word [eax + 0x18]
sub cx, word [ebp - 0x134]
mov eax, dword [edi - 4]
add cx, dx
add cx, word [ebp - 0x168]
mov edx, dword [ebp - 0x11c]
mov word [esi + eax + 6], cx
mov eax, dword [edi - 4]
movzx ecx, word [esi + eax + 6]
movzx eax, word [esi + eax + 4]
add esi, 0x10
imul ecx, eax
mov eax, dword [ebp - 0x1bc]
inc eax
mov dword [ebp - 0x174], esi
mov dword [ebp - 0x1bc], eax
add edx, ecx
mov dword [ebp - 0x11c], edx
cmp eax, dword [edi + 0x20]
jl 0x41e230
jmp 0x41e4aa
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x144]
add dword [ebp - 0x124], 0x78
add edi, 0xc4
sub dword [ebp - 0x120], 1
mov dword [ebp - 0x134], edi
jne 0x41e0f2
movd xmm0, edx
xorps xmm1, xmm1
cvtdq2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x41e4e9
sqrtsd xmm0, xmm0
jmp 0x41e4ee
call fcn.0049d6f0
mov esi, dword [ebp - 0x148]
cvtsd2ss xmm0, xmm0
mov eax, dword [esi + 0xc]
mov dword [esi + 0x20], 0
cvttss2si ecx, xmm0
inc ecx
test eax, eax
jg 0x41e546
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [0x4be058]
jb 0x41e522
mov eax, 0x1000
jmp 0x41e546
comiss xmm0, dword [0x4be054]
jb 0x41e532
mov eax, 0x800
jmp 0x41e546
comiss xmm0, dword [0x4be048]
mov eax, 0x200
mov ecx, 0x400
cmovae eax, ecx
push 0x2c
mov dword [esi + 0x1c], eax
lea eax, [ebp - 0x1ac]
push 0
push eax
call fcn.00479a60
mov eax, dword [esi + 0x10]
add esp, 0xc
mov dword [ebp - 0x140], eax
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x120], eax
mov eax, dword [0x4c8150]
test eax, eax
je 0x41e57d
inc dword [eax + 0x374]
push dword [0x4c8148]
push 0x30
call fcn.00402870
mov ecx, dword [0x4c8150]
mov edi, eax
mov eax, dword [ebp - 0x120]
add esp, 8
sub eax, dword [ebp - 0x140]
mov dword [ebp - 0x11c], edi
mov dword [ebp - 0x154], eax
test ecx, ecx
je 0x41e5b7
inc dword [ecx + 0x374]
push dword [0x4c8148]
shl eax, 3
push eax
call fcn.00402870
add esp, 8
test edi, edi
je 0x41e651
test eax, eax
je 0x41e639
mov edx, dword [ebp - 0x120]
mov ecx, dword [ebp - 0x140]
mov dword [ebp - 0x1a4], edx
mov dword [ebp - 0x19c], edx
mov edx, dword [ebp - 0x154]
push edx
push eax
mov dword [ebp - 0x184], eax
mov eax, 0x8000
sub eax, ecx
mov dword [ebp - 0x198], ecx
push eax
mov ecx, edi
mov dword [ebp - 0x1a8], edi
mov dword [ebp - 0x190], 1
mov dword [ebp - 0x18c], 1
mov dword [ebp - 0x194], 0
call fcn.00412fa0
add esp, 0xc
jmp 0x41e680
mov eax, dword [0x4c8150]
test eax, eax
je 0x41e648
dec dword [eax + 0x374]
push dword [0x4c8148]
push edi
jmp 0x41e66c
test eax, eax
je 0x41e674
mov ecx, dword [0x4c8150]
test ecx, ecx
je 0x41e665
dec dword [ecx + 0x374]
push dword [0x4c8148]
push eax
call fcn.00402880
add esp, 8
mov edi, dword [ebp - 0x1a8]
mov dword [ebp - 0x11c], edi
mov dword [ebp - 0x16c], 0
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x168], 0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x170]
push dword [esi + 0x40]
call fcn.004211d0
mov eax, dword [ebp - 0x170]
mov edx, dword [ebp - 0x168]
mov dword [ebp - 0x120], eax
shl eax, 4
push eax
push 0
push edx
call fcn.00479a60
add esp, 0xc
cmp dword [esi + 0x40], 0
jle 0x41e70e
mov edx, dword [ebp - 0x168]
xor ecx, ecx
add edx, 6
xor edi, edi
mov eax, dword [esi + 0x48]
lea ecx, [ecx + 0x1c]
inc edi
lea edx, [edx + 0x10]
movzx eax, word [ecx + eax - 0x1c]
mov word [edx - 0x12], ax
mov eax, dword [esi + 0x48]
movzx eax, word [eax + ecx - 0x1a]
mov word [edx - 0x10], ax
cmp edi, dword [esi + 0x40]
jl 0x41e6e4
mov edi, dword [ebp - 0x11c]
push dword [ebp - 0x170]
mov edx, dword [ebp - 0x168]
mov ecx, edi
call fcn.00413450
mov eax, dword [ebp - 0x170]
add esp, 4
test eax, eax
jle 0x41e787
mov edx, dword [ebp - 0x168]
xor edi, edi
add edx, 0xa
nop dword [eax]
cmp dword [edx + 2], 0
je 0x41e776
mov eax, dword [esi + 0x48]
movzx ecx, word [edx - 2]
mov word [eax + edi + 4], cx
mov eax, dword [esi + 0x48]
movzx ecx, word [edx]
mov word [eax + edi + 6], cx
movzx eax, word [edx]
movzx ecx, word [edx - 4]
add ecx, eax
mov eax, dword [ebp - 0x120]
cmp dword [esi + 0x20], ecx
cmovge ecx, dword [esi + 0x20]
mov dword [esi + 0x20], ecx
add edi, 0x1c
add edx, 0x10
sub eax, 1
mov dword [ebp - 0x120], eax
jne 0x41e740
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x168]
test eax, eax
je 0x41e7b4
mov ecx, dword [0x4c8150]
test ecx, ecx
je 0x41e7a5
dec dword [ecx + 0x374]
push dword [0x4c8148]
push eax
call fcn.00402880
add esp, 8
mov byte [ebp - 4], 3
mov edi, dword [ebp - 0x14c]
test edi, edi
jle 0x41e84f
mov edi, dword [ebp - 0x150]
mov eax, dword [ebp - 0x14c]
add edi, 0xa8
mov dword [ebp - 0x140], eax
nop
mov eax, dword [edi]
test eax, eax
je 0x41e83a
mov edx, dword [edi - 0x14]
mov ecx, dword [ebp - 0x11c]
push eax
call fcn.00413450
xor ecx, ecx
add esp, 4
mov dword [ebp - 0x120], ecx
cmp dword [edi], ecx
jle 0x41e83a
xor edx, edx
mov eax, dword [edi - 0x14]
cmp dword [edx + eax + 0xc], 0
je 0x41e82c
movzx ecx, word [edx + eax + 0xa]
movzx eax, word [edx + eax + 6]
add ecx, eax
cmp dword [esi + 0x20], ecx
cmovge ecx, dword [esi + 0x20]
mov dword [esi + 0x20], ecx
mov ecx, dword [ebp - 0x120]
inc ecx
add edx, 0x10
mov dword [ebp - 0x120], ecx
cmp ecx, dword [edi]
jl 0x41e806
add edi, 0xc4
sub dword [ebp - 0x140], 1
jne 0x41e7e0
mov edi, dword [ebp - 0x14c]
test byte [esi + 4], 1
mov eax, dword [esi + 0x20]
jne 0x41e87d
lea ecx, [eax - 1]
mov eax, ecx
sar eax, 1
or ecx, eax
mov eax, ecx
sar eax, 2
or ecx, eax
mov eax, ecx
sar eax, 4
or ecx, eax
mov eax, ecx
sar eax, 8
or ecx, eax
mov eax, ecx
sar eax, 0x10
or eax, ecx
movss xmm1, dword [0x4bdfa8]
lea ecx, [eax + 1]
mov eax, dword [esi + 0x1c]
movaps xmm2, xmm1
mov dword [esi + 0x20], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm2, xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
imul ecx, eax
divss xmm1, xmm0
mov eax, dword [0x4c8150]
movss dword [esi + 0x24], xmm2
movss dword [esi + 0x28], xmm1
test eax, eax
je 0x41e8c3
inc dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402870
mov ecx, dword [esi + 0x1c]
imul ecx, dword [esi + 0x20]
mov dword [esi + 0x14], eax
push ecx
push 0
push eax
call fcn.00479a60
mov eax, dword [esi + 0x14]
add esp, 0x14
mov dword [ebp - 0x188], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x1a0], eax
test edi, edi
jle 0x41eae0
mov ecx, dword [ebp - 0x150]
xor eax, eax
mov dword [ebp - 0x140], eax
mov edx, edi
mov dword [ebp - 0x11c], ecx
mov dword [ebp - 0x174], edi
nop dword [eax + eax]
mov edi, dword [esi + 0x54]
add edi, eax
cmp dword [ecx + 0xa8], 0
je 0x41eab4
push dword [ecx + 0x94]
lea eax, [ecx + 0x7c]
mov edx, ecx
push ecx
push eax
lea ecx, [ebp - 0x1ac]
call fcn.004199b0
movss xmm1, dword [edi + 0x44]
add esp, 0xc
ucomiss xmm1, dword [0x4bdfa8]
movss dword [ebp - 0x154], xmm1
lahf
test ah, 0x44
jnp 0x41ea98
xor edi, edi
nop dword [eax]
movd xmm0, edi
mov eax, edi
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x4be4e0]
cvtpd2ps xmm0, xmm0
mulss xmm0, xmm1
call fcn.00476920
movss xmm1, dword [ebp - 0x154]
mov edx, 0xff
cmp eax, edx
movzx ecx, al
cmovbe edx, ecx
mov byte [ebp + edi - 0x118], dl
inc edi
cmp edi, 0x100
jb 0x41e970
mov eax, dword [ebp - 0x11c]
xor ecx, ecx
mov dword [ebp - 0x124], ecx
mov edx, dword [eax + 0x94]
cmp dword [eax + 0xa8], ecx
jle 0x41ea98
lea eax, [edx + 6]
mov edx, dword [ebp - 0x11c]
mov dword [ebp - 0x134], eax
nop word [eax + eax]
cmp dword [eax + 6], 0
je 0x41ea7c
mov ecx, dword [esi + 0x1c]
movzx edx, word [eax + 4]
movzx edi, word [eax]
movzx esi, word [eax - 2]
movzx eax, word [eax + 2]
imul edx, ecx
mov dword [ebp - 0x120], ecx
mov ecx, dword [ebp - 0x148]
add edx, dword [ecx + 0x14]
add edx, eax
test edi, edi
je 0x41ea68
mov eax, dword [ebp - 0x120]
nop word [eax + eax]
xor ecx, ecx
test esi, esi
je 0x41ea59
nop word [eax + eax]
movzx eax, byte [ecx + edx]
mov al, byte [ebp + eax - 0x118]
mov byte [ecx + edx], al
inc ecx
cmp ecx, esi
jl 0x41ea40
mov eax, dword [ebp - 0x120]
dec edi
add edx, eax
test edi, edi
jg 0x41ea30
mov esi, dword [ebp - 0x148]
jmp 0x41ea6a
mov esi, ecx
mov edx, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x134]
inc ecx
add eax, 0x10
mov dword [ebp - 0x124], ecx
mov dword [ebp - 0x134], eax
cmp ecx, dword [edx + 0xa8]
jl 0x41e9f0
mov ecx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x140]
mov edx, dword [ebp - 0x174]
mov dword [ecx + 0x94], 0
add eax, 0x78
add ecx, 0xc4
sub edx, 1
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x11c], ecx
mov dword [ebp - 0x174], edx
jne 0x41e920
mov edi, dword [ebp - 0x1a8]
jmp 0x41eae6
mov edi, dword [ebp - 0x11c]
cmp dword [ebp - 0x184], 0
je 0x41eafe
mov eax, dword [0x4c8150]
test eax, eax
je 0x41eafe
dec dword [eax + 0x374]
push dword [0x4c8148]
push dword [ebp - 0x184]
call fcn.00402880
add esp, 8
test edi, edi
je 0x41eb25
mov eax, dword [0x4c8150]
test eax, eax
je 0x41eb25
dec dword [eax + 0x374]
push dword [0x4c8148]
push edi
call fcn.00402880
mov ecx, dword [ebp - 0x128]
add esp, 8
test ecx, ecx
je 0x41eb7e
mov eax, dword [0x4c8150]
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1d4], 0
test eax, eax
je 0x41eb61
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
add esp, 8
xor ecx, ecx
mov dword [ebp - 0x128], ecx
mov dword [ebp - 0x1cc], ecx
mov eax, dword [ebp - 0x14c]
test eax, eax
jle 0x41ef24
mov ecx, dword [ebp - 0x150]
xor edx, edx
add ecx, 4
mov dword [ebp - 0x12c], edx
mov dword [ebp - 0x134], ecx
mov dword [ebp - 0x11c], eax
nop dword [eax]
cmp dword [ecx + 0xa4], 0
je 0x41ee89
mov edi, dword [ecx + 0x18]
xorps xmm3, xmm3
mov eax, dword [esi + 0x54]
mov esi, dword [ecx]
add eax, edx
mov dword [ebp - 0x144], eax
mov eax, dword [eax + 0x74]
movzx ecx, byte [edi + esi + 6]
movzx edx, byte [edi + esi + 7]
mov dword [ebp - 0x124], eax
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
add dx, cx
movzx ecx, byte [edi + esi + 4]
movsx eax, dx
movzx edx, byte [edi + esi + 5]
mov dword [ebp - 0x154], eax
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
mov edi, dword [ebp - 0x124]
add dx, cx
movsx ecx, dx
mov edx, dword [ebp - 0x154]
mov eax, ecx
sub eax, edx
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
mov ecx, dword [ebp - 0x144]
movd xmm0, eax
mov eax, dword [ebp - 0x144]
cvtdq2ps xmm0, xmm0
movss xmm2, dword [eax + 0x10]
xor eax, eax
divss xmm2, xmm0
comiss xmm1, xmm3
mulss xmm1, xmm2
seta al
lea eax, [eax*2 - 1]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, xmm1
movd xmm1, edx
cvtdq2ps xmm1, xmm1
cvttss2si eax, xmm0
movd xmm0, eax
xor eax, eax
comiss xmm1, xmm3
cvtdq2ps xmm0, xmm0
seta al
cmp byte [ecx + 0x3c], 0
mulss xmm1, xmm2
lea eax, [eax*2 - 1]
movss dword [ebp - 0x154], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, xmm1
cvttss2si esi, xmm0
jne 0x41ece6
mov ecx, edi
call fcn.0041f6d0
mov ecx, dword [ebp - 0x144]
movss xmm0, dword [ebp - 0x154]
movd xmm1, esi
cvtdq2ps xmm1, xmm1
mov eax, dword [ecx + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [ebp - 0x148]
mov dword [edi + 0x38], eax
xor eax, eax
mov dword [edi + 0x3c], ecx
movss dword [edi + 0x4c], xmm0
movss dword [edi + 0x50], xmm1
jmp 0x41ecef
movzx eax, word [edi + 0x40]
movss xmm0, dword [edi + 0x4c]
addss xmm0, dword [0x4bdf74]
inc eax
mov esi, dword [ebp - 0x148]
mov word [edi + 0x40], ax
xor edx, edx
movss xmm7, dword [ecx + 0x28]
movss dword [ebp - 0x1b0], xmm7
cvttss2si eax, xmm0
mov dword [ebp - 0x120], edx
movd xmm6, eax
cvtdq2ps xmm6, xmm6
addss xmm6, dword [ecx + 0x2c]
mov ecx, dword [ebp - 0x134]
movss dword [ebp - 0x154], xmm6
cmp dword [ecx + 0xa4], edx
jle 0x41ee7d
xor edi, edi
nop dword [eax]
nop word [eax + eax]
movd xmm0, dword [esi + 0x1c]
sub esp, 0x20
movss xmm1, dword [0x4bdfa8]
mov eax, dword [ecx + 0xbc]
mov ecx, dword [ecx + 0x94]
movss xmm3, dword [0x4bdfa8]
cvtdq2ps xmm0, xmm0
mov edx, dword [eax + edx*4]
movzx eax, word [edi + ecx]
divss xmm1, xmm0
movd xmm0, dword [esi + 0x20]
cvtdq2ps xmm0, xmm0
movd xmm5, eax
movzx eax, word [edi + ecx + 2]
divss xmm3, xmm0
movss xmm0, dword [edi + ecx + 0x10]
movd xmm4, eax
movzx eax, word [edi + ecx + 4]
cvtdq2ps xmm5, xmm5
movd xmm2, eax
movzx eax, word [edi + ecx + 6]
cvtdq2ps xmm2, xmm2
mulss xmm5, xmm1
mulss xmm2, xmm1
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [edi + ecx + 0x18]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm4, xmm4
mulss xmm1, xmm3
mulss xmm4, xmm3
movss dword [esp + 0x18], xmm1
xorps xmm1, xmm1
addss xmm0, xmm1
movss xmm3, dword [edi + ecx + 8]
movss dword [esp + 0x14], xmm2
addss xmm3, xmm1
movss dword [esp + 0x10], xmm4
movss dword [esp + 0xc], xmm5
addss xmm0, xmm6
addss xmm3, xmm7
movss dword [esp + 8], xmm0
movss xmm0, dword [edi + ecx + 0x14]
addss xmm0, xmm1
addss xmm0, xmm7
movss dword [esp + 4], xmm0
movss xmm0, dword [edi + ecx + 0xc]
mov ecx, dword [ebp - 0x124]
addss xmm0, xmm1
addss xmm0, xmm6
movss dword [esp], xmm0
push edx
push dword [ebp - 0x144]
call fcn.0041fbb0
mov edx, dword [ebp - 0x120]
add edi, 0x1c
mov ecx, dword [ebp - 0x134]
inc edx
movss xmm6, dword [ebp - 0x154]
movss xmm7, dword [ebp - 0x1b0]
mov dword [ebp - 0x120], edx
cmp edx, dword [ecx + 0xa4]
jl 0x41ed50
mov eax, dword [ebp - 0x11c]
mov edx, dword [ebp - 0x12c]
add ecx, 0xc4
add edx, 0x78
sub eax, 1
mov dword [ebp - 0x134], ecx
mov dword [ebp - 0x12c], edx
mov dword [ebp - 0x11c], eax
jne 0x41ebb0
mov edi, dword [ebp - 0x150]
add edi, 0xb4
nop dword [eax]
mov byte [ebp - 4], 6
mov ecx, dword [edi + 0xc]
test ecx, ecx
je 0x41eee9
mov eax, dword [0x4c8150]
test eax, eax
je 0x41eeda
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
add esp, 8
mov byte [ebp - 4], 7
mov ecx, dword [edi]
test ecx, ecx
je 0x41ef11
mov eax, dword [0x4c8150]
test eax, eax
je 0x41ef02
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
add esp, 8
mov byte [ebp - 4], 3
add edi, 0xc4
sub dword [ebp - 0x14c], 1
jne 0x41eec0
mov ecx, esi
call fcn.0041f070
mov byte [ebp - 0x139], 1
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x15c]
test ecx, ecx
je 0x41ef5e
mov eax, dword [0x4c8150]
test eax, eax
je 0x41ef4f
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
add esp, 8
mov byte [ebp - 4], 9
mov ecx, dword [ebp - 0x128]
test ecx, ecx
je 0x41ef8a
mov eax, dword [0x4c8150]
test eax, eax
je 0x41ef7b
dec dword [eax + 0x374]
push dword [0x4c8148]
push ecx
call fcn.00402880
add esp, 8
mov edi, dword [ebp - 0x158]
mov byte [ebp - 4], 0xa
test edi, edi
je 0x41efb6
mov eax, dword [0x4c8150]
test eax, eax
je 0x41efa7
dec dword [eax + 0x374]
push dword [0x4c8148]
push edi
call fcn.00402880
add esp, 8
mov dword [ebp - 4], 0xb
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x41efe6
mov ecx, dword [0x4c8150]
test ecx, ecx
je 0x41efd7
dec dword [ecx + 0x374]
push dword [0x4c8148]
push eax
call fcn.00402880
add esp, 8
mov al, byte [ebp - 0x139]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00475e9f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret