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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x2a8
movsd xmm0, qword [0x5af270]
mov eax, ecx
xor ecx, ecx
mov dword [esp + 0x48], eax
push esi
xorps xmm2, xmm2
mov dword [esp + 0xcc], edx
mov esi, eax
mov dword [esp + 0x78], 0
movsx eax, byte [eax]
movaps xmm1, xmm2
mov dword [esp + 0xb8], 0
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x7c], xmm2
movsd qword [esp + 4], xmm1
mov dword [esp + 0x18], esi
movsd qword [esp + 0x5c], xmm0
push edi
cmp eax, 0x2d
ja case.0x50cb47.1
nop word [eax + eax]
movzx eax, byte [eax + 0x50ddcc]
jmp dword [eax*4 + 0x50ddb8]
movsx eax, byte [esi + 1]
inc esi
mov dword [esp + 0x1c], esi
cmp eax, 0x2d
jbe 0x50cb40
jmp case.0x50cb47.1
mov dword [esp + 0x3c], 1
inc esi
mov dword [esp + 0x1c], esi
cmp byte [esi], cl
je case.0x50ce73.74
mov dl, byte [esi]
cmp dl, 0x30
jne 0x50cb96
mov dword [esp + 0x58], 1
inc esi
cmp byte [esi], 0x30
je 0x50cb82
mov dl, byte [esi]
mov dword [esp + 0x1c], esi
test dl, dl
je 0x50dcab
xor ecx, ecx
movsx edx, dl
xor eax, eax
mov dword [esp + 0x4c], esi
xor edi, edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x14], eax
cmp edx, 0x30
jl 0x50cbf2
cmp edx, 0x39
jg 0x50cbee
cmp eax, 9
jge 0x50cbc9
lea eax, [edi - 6]
lea eax, [edi + eax*4]
lea edi, [edx + eax*2]
jmp 0x50cbd7
cmp eax, 0x10
jge 0x50cbdb
lea eax, [ecx - 6]
lea eax, [ecx + eax*4]
lea ecx, [edx + eax*2]
mov eax, dword [esp + 0x14]
movsx edx, byte [esi + 1]
inc esi
inc eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x14], eax
cmp edx, 0x30
jge 0x50cbb4
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x2c], eax
mov eax, esi
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x14]
cmp edx, 0x2e
jne 0x50cd2f
movsx edx, byte [esi + 1]
inc esi
mov eax, esi
mov dword [esp + 0x44], esi
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x98], eax
sub eax, dword [esp + 0x94]
mov dword [esp + 0x30], eax
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
test eax, eax
jne 0x50cc93
cmp edx, 0x30
jne 0x50cc77
xor eax, eax
nop
movsx edx, byte [esi + 1]
inc esi
inc eax
mov dword [esp + 0x1c], esi
cmp edx, 0x30
je 0x50cc60
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], esi
lea eax, [edx - 0x31]
cmp eax, 8
ja 0x50cd2b
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
xor eax, eax
mov dword [esp + 0x4c], esi
jmp 0x50cca3
lea eax, [edx - 0x30]
cmp eax, 9
ja 0x50cd27
mov eax, dword [esp + 0x18]
inc eax
sub edx, 0x30
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], edx
je 0x50cd15
add dword [esp + 0x38], eax
cmp eax, 1
jle 0x50cceb
mov edx, dword [esp + 0x14]
lea esi, [eax - 1]
mov eax, edx
inc edx
cmp eax, 9
jge 0x50ccd0
lea edi, [edi + edi*4]
add edi, edi
jmp 0x50ccda
cmp edx, 0x10
jg 0x50ccda
lea ecx, [ecx + ecx*4]
add ecx, ecx
sub esi, 1
jne 0x50ccc1
mov esi, dword [esp + 0x44]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x14]
inc dword [esp + 0x14]
cmp eax, 9
jge 0x50cd00
lea eax, [edi + edi*4]
lea edi, [edx + eax*2]
jmp 0x50cd0d
cmp dword [esp + 0x14], 0x10
jg 0x50cd0d
lea eax, [ecx + ecx*4]
lea ecx, [edx + eax*2]
mov dword [esp + 0x18], 0
movsx edx, byte [esi + 1]
inc esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x1c], esi
jmp 0x50cc93
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x34], 0
cmp edx, 0x65
je 0x50cd45
cmp edx, 0x45
jne 0x50ce34
test eax, eax
jne 0x50cd59
cmp dword [esp + 0x18], eax
jne 0x50cd59
cmp dword [esp + 0x58], eax
je case.0x50ce73.74
movsx edx, byte [esi + 1]
mov dword [esp + 0x50], esi
mov eax, edx
inc esi
mov dword [esp + 0x44], 0
mov dword [esp + 0x1c], esi
sub eax, 0x2b
je 0x50cd82
sub eax, 2
jne 0x50cd8b
mov dword [esp + 0x44], 1
movsx edx, byte [esi + 1]
inc esi
mov dword [esp + 0x1c], esi
lea eax, [edx - 0x30]
cmp eax, 9
ja 0x50ce2c
cmp edx, 0x30
jne 0x50cdae
nop dword [eax]
movsx edx, byte [esi + 1]
inc esi
cmp edx, 0x30
je 0x50cda0
mov dword [esp + 0x1c], esi
lea eax, [edx - 0x31]
cmp eax, 8
ja 0x50ce22
mov dword [esp + 0x5c], esi
lea eax, [edx - 0x30]
movsx edx, byte [esi + 1]
inc esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x1c], esi
cmp edx, 0x30
jl 0x50cdf4
mov ecx, eax
cmp edx, 0x39
jg 0x50cdec
inc esi
lea ecx, [ecx + ecx*4]
lea ecx, [ecx - 0x18]
mov dword [esp + 0x1c], esi
lea ecx, [edx + ecx*2]
movsx edx, byte [esi]
cmp edx, 0x30
jge 0x50cdd1
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x40]
mov eax, esi
sub eax, dword [esp + 0x5c]
cmp eax, 8
jg 0x50ce0a
mov eax, dword [esp + 0x34]
cmp eax, 0x4e1f
jle 0x50ce13
mov eax, 0x4e1f
mov dword [esp + 0x34], eax
cmp dword [esp + 0x44], 0
je 0x50ce34
neg eax
mov dword [esp + 0x34], eax
jmp 0x50ce34
mov dword [esp + 0x34], 0
jmp 0x50ce34
mov esi, dword [esp + 0x50]
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x50cf5d
cmp dword [esp + 0x18], eax
jne 0x50dcab
cmp dword [esp + 0x58], eax
jne 0x50dcab
mov eax, dword [esp + 0x30]
test eax, eax
jne case.0x50ce73.74
add edx, 0xffffffb7
cmp edx, 0x25
ja case.0x50ce73.74
movzx eax, byte [edx + 0x50de08]
jmp dword [eax*4 + 0x50ddfc]
mov edx, 0x6e
mov edi, 0x5adedd
movsx ecx, byte [esi + 1]
inc esi
lea eax, [ecx - 0x41]
cmp eax, 0x19
ja 0x50ce94
add ecx, 0x20
cmp ecx, edx
jne case.0x50ce73.74
movsx edx, byte [edi]
inc edi
test edx, edx
jne 0x50ce84
mov edx, esi
mov dword [esp + 0x48], 0x5adee1
mov edi, 0x69
movsx ecx, byte [edx + 1]
lea edx, [edx + 1]
lea eax, [ecx - 0x41]
cmp eax, 0x19
ja 0x50cec5
add ecx, 0x20
cmp ecx, edi
jne 0x50cede
mov eax, dword [esp + 0x48]
movsx edi, byte [eax]
inc eax
mov dword [esp + 0x48], eax
test edi, edi
jne 0x50ceb3
lea esi, [edx + 1]
jmp 0x50cedf
inc esi
mov dword [esp + 0xc], 0x7ff00000
mov dword [esp + 8], 0
movsd xmm1, qword [esp + 8]
jmp 0x50dcab
mov edx, 0x61
mov edi, 0x5adee9
movsx ecx, byte [esi + 1]
inc esi
lea eax, [ecx - 0x41]
cmp eax, 0x19
ja 0x50cf14
add ecx, 0x20
cmp ecx, edx
jne case.0x50ce73.74
movsx edx, byte [edi]
inc edi
test edx, edx
jne 0x50cf04
inc esi
mov dword [esp + 0xc], 0x7ff80000
mov dword [esp + 0x1c], esi
mov dword [esp + 8], edx
cmp byte [esi], 0x28
jne 0x50ceef
lea edx, [esp + 0x1c]
lea ecx, [esp + 8]
call fcn.0050c410
movsd xmm1, qword [esp + 8]
mov esi, dword [esp + 0x1c]
jmp 0x50dcab
mov esi, dword [esp + 0x50]
xor eax, eax
jmp 0x50dcaf
mov edx, dword [esp + 0x34]
sub edx, dword [esp + 0x38]
mov dword [esp + 0x34], edx
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0x2c]
test edx, edx
movd xmm0, edi
cmove edx, eax
mov dword [esp + 0x2c], edx
mov edx, 0x10
cmp eax, edx
cvtdq2pd xmm0, xmm0
cmovl edx, eax
mov eax, edi
shr eax, 0x1f
mov dword [esp + 0x50], edx
addsd xmm0, qword [eax*8 + 0x5af250]
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm0
cmp edx, 9
jle 0x50cfe6
movsd xmm1, qword [edx*8 + 0x5adf20]
mulsd xmm1, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x5af250]
addsd xmm1, xmm0
movaps xmm0, xmm1
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm0
mov eax, dword [esp + 0x14]
cmp eax, 0xf
jg 0x50d086
call fcn.00549e27
cmp eax, 1
jne 0x50d075
mov edx, dword [esp + 0x34]
test edx, edx
je 0x50dc9f
jle 0x50d053
cmp edx, 0x16
jg 0x50d024
movsd xmm1, qword [esp + 0x20]
mulsd xmm1, qword [edx*8 + 0x5adf68]
jmp 0x50dca5
mov ecx, 0xf
sub ecx, dword [esp + 0x14]
lea eax, [ecx + 0x16]
cmp edx, eax
jg 0x50d075
movsd xmm1, qword [esp + 0x20]
sub edx, ecx
mulsd xmm1, qword [ecx*8 + 0x5adf68]
mulsd xmm1, qword [edx*8 + 0x5adf68]
jmp 0x50dca5
cmp edx, 0xffffffea
jl 0x50d075
movsd xmm1, qword [esp + 0x20]
lea eax, [edx*8]
mov ecx, 0x5adf68
sub ecx, eax
divsd xmm1, qword [ecx]
jmp 0x50dca5
movsd xmm2, qword [esp + 0x80]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
sub ecx, edx
xor edx, edx
add ecx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0xb8], edx
test ecx, ecx
jle 0x50d15c
movsd xmm1, qword [esp + 0x20]
mov eax, ecx
and eax, 0xf
je 0x50d0bf
mulsd xmm1, qword [eax*8 + 0x5adf68]
movsd qword [esp + 8], xmm1
and ecx, 0xfffffff0
je 0x50d258
cmp ecx, 0x134
jg 0x50da73
sar ecx, 4
xor eax, eax
cmp ecx, 1
jle 0x50d0fc
nop
test cl, 1
je 0x50d0f4
mulsd xmm1, qword [eax*8 + 0x5adf10]
movsd qword [esp + 8], xmm1
sar ecx, 1
inc eax
cmp ecx, 1
jg 0x50d0e0
sub dword [esp + 0xc], 0x3500000
movsd xmm0, qword [eax*8 + 0x5adf10]
mulsd xmm0, qword [esp + 8]
movsd qword [esp + 8], xmm0
mov eax, dword [esp + 0xc]
mov ecx, eax
and ecx, 0x7ff00000
cmp ecx, 0x7ca00000
ja 0x50da73
cmp ecx, 0x7c900000
jbe 0x50d14e
mov dword [esp + 0xc], 0x7fefffff
mov dword [esp + 8], 0xffffffff
jmp 0x50d258
add eax, 0x3500000
mov dword [esp + 0xc], eax
jmp 0x50d258
jns 0x50d258
movsd xmm1, qword [esp + 0x20]
neg ecx
mov eax, ecx
and eax, 0xf
je 0x50d186
divsd xmm1, qword [eax*8 + 0x5adf68]
movsd qword [esp + 0x20], xmm1
movsd qword [esp + 8], xmm1
sar ecx, 4
test ecx, ecx
je 0x50d258
cmp ecx, 0x20
jge 0x50dc85
test cl, 0x10
mov eax, 0x6a
cmovne edx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0xb8], edx
test ecx, ecx
jle 0x50d1de
mov eax, 0x5adf40
nop dword [eax]
test cl, 1
je 0x50d1cf
mulsd xmm1, qword [eax]
movsd qword [esp + 8], xmm1
sar ecx, 1
add eax, 8
test ecx, ecx
jg 0x50d1c0
movsd qword [esp + 0x20], xmm1
test edx, edx
je 0x50d244
mov edx, dword [esp + 0xc]
mov ecx, 0x6b
mov eax, edx
shr eax, 0x14
and eax, 0x7ff
sub ecx, eax
test ecx, ecx
jle 0x50d244
cmp ecx, 0x20
jl 0x50d233
mov dword [esp + 8], 0
cmp ecx, 0x35
jl 0x50d21d
mov dword [esp + 0xc], 0x3700000
movsd xmm1, qword [esp + 8]
jmp 0x50d24a
add ecx, 0xffffffe0
or eax, 0xffffffff
shl eax, cl
and edx, eax
mov dword [esp + 0xc], edx
movsd xmm1, qword [esp + 8]
jmp 0x50d24a
or eax, 0xffffffff
shl eax, cl
and dword [esp + 8], eax
movsd xmm1, qword [esp + 8]
jmp 0x50d24a
movsd xmm1, qword [esp + 0x20]
ucomisd xmm1, xmm2
lahf
test ah, 0x44
jnp 0x50dc85
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0xac], esi
mov dword [esp + 0xb0], edx
cmp esi, 0x28
jle 0x50d330
mov eax, 0x12
mov ecx, eax
cmp edx, eax
jge 0x50d288
mov eax, dword [esp + 0x30]
add eax, ecx
mov esi, dword [esp + 0x94]
mov edx, dword [esp + 0x4c]
dec eax
cmp eax, dword [esp + 0x48]
jg 0x50d2a1
cmp eax, esi
jl 0x50d2a1
lea eax, [esi - 1]
cmp byte [eax + edx], 0x30
jne 0x50d2aa
dec ecx
jmp 0x50d293
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
sub esi, ecx
add dword [esp + 0x34], esi
cmp edx, ecx
mov esi, ecx
cmovg edx, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x2c], edx
cmp ecx, 9
jge 0x50d330
xor edx, edx
xor edi, edi
cmp dword [esp + 0x2c], edx
jle 0x50d2fa
mov esi, dword [esp + 0x2c]
nop word [eax + eax]
mov eax, dword [esp + 0x4c]
lea edi, [edi + edi*4]
lea edi, [edi - 0x18]
movsx ecx, byte [edx + eax]
inc edx
lea edi, [ecx + edi*2]
cmp edx, esi
jl 0x50d2e0
mov esi, dword [esp + 0x14]
cmp edx, esi
jge 0x50d32c
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x4c]
sub esi, edx
mov dword [esp + 0x48], esi
mov esi, eax
mov dword [esp + 0x5c], eax
sub dword [esp + 0x48], 1
lea edi, [edi + edi*4]
movsx eax, byte [esi]
lea edi, [edi - 0x18]
lea esi, [esi + 1]
lea edi, [eax + edi*2]
jne 0x50d312
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
push dword [esp + 0x30]
mov ecx, dword [esp + 0x50]
push edi
push esi
call fcn.0050b830
movsd xmm0, qword [0x5af1e8]
mov ecx, eax
movsd qword [esp + 0x12c], xmm0
add esp, 0xc
movsd xmm0, qword [0x5af1d8]
movsd qword [esp + 0xe8], xmm0
movsd xmm0, qword [0x5af1c8]
lea eax, [ecx + 0xc]
movsd qword [esp + 0xc0], xmm0
movsd xmm0, qword [0x5af238]
movsd qword [esp + 0x128], xmm0
movsd xmm0, qword [0x5af220]
movsd qword [esp + 0x130], xmm0
movsd xmm0, qword [0x5af1a8]
movsd qword [esp + 0x138], xmm0
movsd xmm0, qword [0x5af1c0]
movsd qword [esp + 0x140], xmm0
movsd xmm0, qword [0x5af1d0]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x5c], eax
movsd qword [esp + 0x148], xmm0
mov ecx, dword [ecx + 4]
mov edi, 1
call fcn.0050b650
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x40], eax
mov ecx, dword [ecx + 0x10]
lea ecx, [ecx*4 + 8]
push ecx
push dword [esp + 0x60]
lea ecx, [eax + 0xc]
push ecx
call fcn.0053b750
add esp, 0xc
lea eax, [esp + 0xd4]
lea edx, [esp + 0x58]
lea ecx, [esp + 8]
push eax
call fcn.0050c1d0
add esp, 4
mov dword [esp + 0x2c], eax
mov ecx, edi
call fcn.0050b980
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x34]
test eax, eax
js 0x50d440
xor edi, edi
mov dword [esp + 0x50], eax
xor ecx, ecx
jmp 0x50d44e
mov edi, eax
xor edx, edx
neg edi
mov dword [esp + 0x50], edx
mov ecx, edi
xor eax, eax
mov edx, dword [esp + 0x58]
mov dword [esp + 0x30], eax
mov dword [esp + 0x44], ecx
test edx, edx
js 0x50d466
add ecx, edx
mov dword [esp + 0x44], ecx
jmp 0x50d46c
sub eax, edx
mov dword [esp + 0x30], eax
sub edx, dword [esp + 0x18]
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x38], ecx
lea ecx, [eax - 1]
add ecx, edx
add edx, 0x433
mov dword [esp + 0x20], edx
mov edx, 0x36
sub edx, eax
mov eax, dword [esp + 0x18]
cmp ecx, 0xfffffc02
mov ecx, dword [esp + 0x44]
cmovl edx, dword [esp + 0x20]
add eax, edx
add ecx, edx
mov edx, dword [esp + 0x30]
add edx, eax
mov dword [esp + 0x44], ecx
cmp ecx, edx
mov dword [esp + 0x30], edx
mov eax, edx
cmovl eax, ecx
cmp eax, dword [esp + 0x38]
cmovg eax, dword [esp + 0x38]
test eax, eax
jle 0x50d4da
sub ecx, eax
sub edx, eax
sub dword [esp + 0x38], eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x30], edx
test edi, edi
jle 0x50d607
mov ecx, dword [esp + 0x14]
mov edx, edi
call fcn.0050bb60
mov edx, dword [esp + 0x2c]
mov ecx, eax
mov dword [esp + 0x14], eax
call fcn.0050ba20
mov edi, eax
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x50d5fd
cmp dword [eax + 4], 7
jle 0x50d526
push eax
call fcn.0053fced
mov ecx, dword [esp + 0x48]
add esp, 4
mov dword [esp + 0x2c], edi
jmp 0x50d60b
mov eax, dword [esp + 0x7c]
test al, 1
je 0x50d541
and eax, 0xfffffffe
lea ecx, [esp + 0x150]
mov dword [esp + 0x7c], eax
call fcn.004ebe90
mov eax, dword [0x5c2b14]
test eax, 0xfffffffe
jne 0x50d59e
mov ecx, 1
xor eax, eax
mov edx, 0x5c2b14
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x50d584
mov eax, dword [0x5c2b14]
cmp eax, 1
jne 0x50d59e
nop dword [eax + eax]
push 0
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [0x5c2b14]
cmp eax, 1
je 0x50d570
jmp 0x50d59e
push 0x7d0
push 0x5c2b18
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSectionAndSpinCount]
mov dword [0x5c2b14], 0x5c2b18
mov eax, dword [0x5c2b14]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edx, dword [esp + 0x2c]
mov ecx, dword [edx + 4]
mov eax, dword [ecx*4 + 0x5c2a00]
mov dword [edx], eax
mov eax, dword [esp + 0x7c]
mov dword [ecx*4 + 0x5c2a00], edx
test eax, 0x200
je 0x50d5e1
and eax, 0xfffffdff
lea ecx, [esp + 0x200]
mov dword [esp + 0x7c], eax
call fcn.004ebe90
mov ecx, 0x5c2b14
call fcn.004f28d0
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x2c], edi
jmp 0x50d60b
mov edi, dword [esp + 0x2c]
test ecx, ecx
jle 0x50d61e
mov edx, ecx
mov ecx, edi
call fcn.0050bd10
mov edi, eax
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x40]
test eax, eax
jle 0x50d637
mov edx, eax
call fcn.0050bb60
mov ecx, eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x50d64c
mov edx, eax
call fcn.0050bd10
mov ecx, eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x38]
test eax, eax
jle 0x50d667
mov ecx, dword [esp + 0x14]
mov edx, eax
call fcn.0050bd10
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x14], eax
mov edx, ecx
mov ecx, edi
call fcn.0050be80
mov edx, dword [esp + 0x14]
mov ecx, eax
mov dword [esp + 0x30], eax
mov edi, dword [eax + 0xc]
mov dword [esp + 0x38], edi
mov dword [esp + 0xa0], edi
mov dword [eax + 0xc], 0
call fcn.0050be30
mov ecx, dword [esp + 0xac]
cmp ecx, esi
jle 0x50d6a7
test eax, eax
jle 0x50da3e
test eax, eax
js 0x50dbce
je 0x50da99
mov edi, dword [esp + 0x30]
lea edx, [esp + 0xcc]
mov ecx, edi
call fcn.0050c070
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0xfc]
movaps xmm1, xmm0
movsd qword [esp + 0xd8], xmm1
call fcn.0050c070
mov ecx, dword [esp + 0x14]
mov eax, dword [edi + 0x10]
movsd qword [esp + 0xe0], xmm0
sub eax, dword [ecx + 0x10]
shl eax, 5
sub eax, dword [esp + 0xfc]
add eax, dword [esp + 0xcc]
test eax, eax
jle 0x50d720
shl eax, 0x14
add dword [esp + 0xdc], eax
movsd xmm1, qword [esp + 0xd8]
jmp 0x50d736
imul eax, eax, 0xfff00000
add dword [esp + 0xe4], eax
movsd xmm0, qword [esp + 0xe0]
divsd xmm1, xmm0
mov edi, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x120]
comisd xmm0, xmm1
jb 0x50d7d2
cmp dword [esp + 0x38], 0
je 0x50d769
movsd xmm2, qword [esp + 0xe8]
movaps xmm1, xmm2
jmp 0x50d81c
mov eax, dword [esp + 8]
test eax, eax
jne 0x50d7b1
test edi, 0xfffff
jne 0x50d7be
movsd xmm0, qword [esp + 0xe8]
comisd xmm0, xmm1
jbe 0x50d79e
movsd xmm1, qword [esp + 0xc0]
movaps xmm2, xmm1
xorps xmm2, xmmword [esp + 0x60]
jmp 0x50d81c
mulsd xmm1, qword [esp + 0xc0]
movaps xmm2, xmm1
xorps xmm2, xmmword [esp + 0x60]
jmp 0x50d81c
cmp eax, 1
jne 0x50d7be
test edi, edi
je 0x50da52
movsd xmm1, qword [esp + 0xe8]
movsd xmm2, qword [esp + 0x128]
jmp 0x50d81c
cmp dword [esp + 0x38], 0
mulsd xmm1, qword [esp + 0xc0]
movsd qword [esp + 0x50], xmm1
je 0x50d7f0
movsd qword [esp + 0x20], xmm1
jmp 0x50d7fe
movaps xmm0, xmm1
xorps xmm0, xmmword [esp + 0x60]
movsd qword [esp + 0x20], xmm0
call fcn.00549e27
movsd xmm2, qword [esp + 0x20]
movsd xmm1, qword [esp + 0x50]
test eax, eax
jne 0x50d822
addsd xmm2, qword [esp + 0xc0]
movsd qword [esp + 0x20], xmm2
mov edx, edi
and edx, 0x7ff00000
mov dword [esp + 0x50], edx
cmp edx, 0x7fe00000
jne 0x50d8e5
movsd xmm0, qword [esp + 8]
sub edi, 0x3500000
mov dword [esp + 0xc], edi
and edi, 0x7ff00000
sub edi, 0x3400000
movsd qword [esp + 0x88], xmm0
mov dword [esp + 0x11c], edi
mov dword [esp + 0x118], 0
movsd xmm0, qword [esp + 0x118]
mulsd xmm0, xmm2
addsd xmm0, qword [esp + 8]
movsd qword [esp + 8], xmm0
mov ecx, dword [esp + 0xc]
mov eax, ecx
and eax, 0x7ff00000
cmp eax, 0x7ca00000
jb 0x50d8cc
cmp dword [esp + 0x8c], 0x7fefffff
jne 0x50d8b7
cmp dword [esp + 0x88], 0xffffffff
je 0x50da6f
mov dword [esp + 0xc], 0x7fefffff
mov dword [esp + 8], 0xffffffff
jmp 0x50da11
mov edi, dword [esp + 0x18]
add ecx, 0x3500000
mov dword [esp + 0xc], ecx
movsd xmm0, qword [esp + 8]
jmp 0x50d99e
mov edi, dword [esp + 0x18]
test edi, edi
je 0x50d969
cmp edx, 0x6a00000
ja 0x50d969
movsd xmm0, qword [esp + 0x130]
comisd xmm0, xmm1
jb 0x50d943
movaps xmm0, xmm1
call fcn.00560401
test eax, eax
mov edx, 1
cmove eax, edx
mov edx, dword [esp + 0x50]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
cmp dword [esp + 0x38], 0
addsd xmm1, qword [eax*8 + 0x5af250]
movaps xmm0, xmm1
jne 0x50d949
xorps xmm0, xmmword [esp + 0x60]
jmp 0x50d949
movsd xmm0, qword [esp + 0x20]
mov eax, 0x6b00000
movsd qword [esp + 0xf0], xmm0
sub eax, edx
add dword [esp + 0xf4], eax
movsd xmm2, qword [esp + 0xf0]
lea eax, [edx - 0x3400000]
mov dword [esp + 0x100], 0
mov dword [esp + 0x104], eax
movsd xmm0, qword [esp + 0x100]
mulsd xmm0, xmm2
addsd xmm0, qword [esp + 8]
movsd qword [esp + 8], xmm0
mov ecx, dword [esp + 0xc]
movsd qword [esp + 0x20], xmm0
cmp dword [esp + 0xac], esi
jne 0x50da11
test edi, edi
jne 0x50da11
mov eax, ecx
and eax, 0x7ff00000
cmp edx, eax
jne 0x50da11
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
cmp dword [esp + 0x38], edi
jne 0x50d9ef
cmp dword [esp + 8], edi
jne 0x50d9ef
test ecx, 0xfffff
jne 0x50d9ef
movsd xmm0, qword [esp + 0x138]
comisd xmm0, xmm1
jmp 0x50da0b
movsd xmm0, qword [esp + 0x140]
comisd xmm0, xmm1
ja 0x50dcf6
comisd xmm1, xmmword [esp + 0x148]
ja 0x50dcf6
mov ecx, dword [esp + 0x2c]
call fcn.0050b710
mov ecx, dword [esp + 0x40]
call fcn.0050b710
mov ecx, dword [esp + 0x14]
call fcn.0050b710
mov ecx, dword [esp + 0x30]
call fcn.0050b710
mov ecx, dword [esp + 0x48]
jmp 0x50d3d7
test edi, edi
jne 0x50dce6
mov dword [esp + 0xac], esi
jmp 0x50dbd6
cmp dword [esp + 0xac], esi
jle 0x50dc76
mov dword [esp + 0xbc], 1
jmp 0x50dce6
mov esi, dword [esp + 0x1c]
call fcn.0053fcda
mov dword [esp + 0xc], 0x7ff00000
mov dword [esp + 8], 0
movsd xmm1, qword [esp + 8]
mov dword [eax], 0x22
jmp 0x50dca5
mov edx, dword [esp + 8]
test edi, edi
mov edi, dword [esp + 0xc]
je 0x50db04
mov eax, edi
and eax, 0xfffff
cmp eax, 0xfffff
jne 0x50db14
cmp dword [esp + 0x18], 0
je 0x50dad9
mov eax, edi
and eax, 0x7ff00000
cmp eax, 0x6a00000
ja 0x50dad9
shr eax, 0x14
mov ecx, 0x6b
sub ecx, eax
or eax, 0xffffffff
shl eax, cl
jmp 0x50dadc
or eax, 0xffffffff
cmp edx, eax
jne 0x50db14
and edi, 0x7ff00000
mov dword [esp + 8], 0
add edi, 0x100000
mov dword [esp + 0xa0], 0
jmp 0x50dce2
test edi, 0xfffff
jne 0x50db14
test edx, edx
je 0x50dc41
test dl, 1
je 0x50dce6
mov ecx, dword [esp + 0x38]
and edi, 0x7ff00000
sub edi, 0x3400000
test ecx, ecx
je 0x50db71
mov dword [esp + 0x10c], edi
mov dword [esp + 0x108], 0
movsd xmm0, qword [esp + 0x108]
addsd xmm0, qword [esp + 8]
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm0
mov eax, 1
sub eax, ecx
mov dword [esp + 0xa0], eax
jmp 0x50dcf2
movsd xmm0, qword [esp + 8]
movsd xmm1, qword [esp + 0x80]
mov dword [esp + 0x114], edi
mov dword [esp + 0x110], 0
subsd xmm0, qword [esp + 0x110]
ucomisd xmm0, xmm1
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 8], xmm0
lahf
test ah, 0x44
jp 0x50db5e
cmp dword [esp + 0xac], esi
jle 0x50dc7f
mov dword [esp + 0xbc], 1
jmp 0x50dcf2
test edi, edi
jne 0x50dce6
cmp dword [esp + 8], 0
jne 0x50dce6
mov edi, dword [esp + 0xc]
test edi, 0xfffff
jne 0x50dce6
mov eax, edi
and eax, 0x7ff00000
cmp eax, 0x6b00000
jbe 0x50dce6
mov eax, dword [esp + 0x30]
cmp dword [eax + 0x14], 0
jne 0x50dc17
cmp dword [eax + 0x10], 1
jle 0x50dce6
mov edx, 1
mov ecx, eax
call fcn.0050bd10
mov edx, dword [esp + 0x14]
mov ecx, eax
mov dword [esp + 0x30], eax
call fcn.0050be30
test eax, eax
jle 0x50dce6
mov ecx, dword [esp + 0xac]
cmp dword [esp + 0x18], 0
je 0x50dccd
mov eax, edi
and eax, 0x7ff00000
cmp eax, 0x6b00000
jg 0x50dccd
cmp eax, 0x3700000
jg 0x50dce6
cmp ecx, esi
jle 0x50dc76
mov dword [esp + 0xbc], 1
jmp 0x50dce6
movsd xmm1, qword [esp + 0x80]
mov esi, dword [esp + 0x1c]
jmp 0x50dc8e
movsd xmm1, qword [esp + 0x80]
movsd qword [esp + 0x20], xmm1
call fcn.0053fcda
mov dword [eax], 0x22
movsd xmm1, qword [esp + 0x20]
movsd xmm0, qword [esp + 0x60]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xd0]
test ecx, ecx
je 0x50dcbc
mov dword [ecx], esi
test eax, eax
je 0x50ddaf
xorps xmm0, xmm1
pop edi
pop esi
mov esp, ebp
pop ebp
ret
and edi, 0x7ff00000
mov dword [esp + 8], 0xffffffff
dec edi
or edi, 0xfffff
mov dword [esp + 0xc], edi
movsd xmm1, qword [esp + 8]
movsd qword [esp + 0x20], xmm1
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
call fcn.0050b710
mov ecx, dword [esp + 0x40]
call fcn.0050b710
mov ecx, dword [esp + 0x14]
call fcn.0050b710
mov ecx, dword [esp + 0x48]
call fcn.0050b710
mov ecx, dword [esp + 0x30]
call fcn.0050b710
cmp dword [esp + 0xac], esi
jle 0x50dd53
mov edx, dword [esp + 0x4c]
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0xc]
call fcn.0050c760
mov edi, dword [esp + 0xbc]
add esp, 4
movsd xmm1, qword [esp + 8]
jmp 0x50dd59
movsd xmm1, qword [esp + 0x20]
test edi, edi
je 0x50dda6
mov dword [esp + 0x8c], 0x39500000
mov dword [esp + 0x88], 0
mulsd xmm1, qword [esp + 0x88]
movsd qword [esp + 8], xmm1
test dword [esp + 0xc], 0x7ff00000
movsd qword [esp + 0x20], xmm1
jne 0x50dda6
call fcn.0053fcda
mov esi, dword [esp + 0x1c]
mov dword [eax], 0x22
jmp 0x50dc9f
mov esi, dword [esp + 0x1c]
jmp 0x50dca5
pop edi
movaps xmm0, xmm1
pop esi
mov esp, ebp
pop ebp
ret