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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x180
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov esi, dword [eax + 0x28]
cmp esi, 5
jb 0x54f0c0
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x54f0e1
mov edx, eax
mov eax, dword [eax + 8]
cmp ecx, 1
je 0x54f0d0
jmp 0x54f0e9
test esi, esi
je 0x54f113
mov edx, eax
add eax, 8
mov ecx, esi
cmp ecx, 1
jne 0x54f0e9
mov ecx, dword [eax]
xor ecx, 1
or ecx, dword [eax + 4]
jne 0x54f0e9
cmp esi, 4
mov eax, edx
jbe 0x54f113
mov esi, dword [eax + 4]
mov edx, dword [eax + 8]
jmp 0x54f118
cmp esi, 5
jb 0x54f17e
mov eax, dword [edx + 4]
test eax, eax
je 0x54f192
cmp eax, 1
jne 0x54f1bb
mov ecx, dword [edx + 8]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
jmp 0x54f196
add eax, 8
mov edx, eax
lea eax, [edx + esi*8]
mov dword [esp + 0x40], 0
mov dword [esp + 0x18], 0
lea ecx, [esp + 0x18]
push eax
call fcn.0053b3c0
add esp, 4
movsd xmm1, qword [esp + 0x38]
movsd xmm2, qword [esp + 0x30]
movsd xmm0, qword [esp + 0x40]
movsd qword [edi + 0x20], xmm1
movsd xmm1, qword [esp + 0x28]
movsd qword [edi + 0x18], xmm2
movsd xmm2, qword [esp + 0x18]
movsd qword [edi + 0x28], xmm0
movsd qword [edi + 0x10], xmm1
movsd xmm1, qword [esp + 0x20]
movsd qword [edi], xmm2
movsd qword [edi + 8], xmm1
jmp 0x54fc09
cmp esi, 1
jne 0x54f18b
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0xc]
jmp 0x54f196
lea eax, [edx + 8]
mov ebx, esi
jmp 0x54f1c9
xor eax, eax
xor ecx, ecx
push ecx
push eax
call fcn.0063aeb0
add esp, 8
mov dword [edi], 0
xor ecx, ecx
mov dword [edi + 8], eax
or eax, edx
mov dword [edi + 0xc], edx
setne cl
mov dword [edi + 0x28], ecx
jmp 0x54fc09
mov ebx, dword [edx + 4]
test ebx, ebx
je 0x54f439
mov eax, dword [edx + 8]
mov ecx, dword [eax + ebx*8 - 4]
bsr eax, dword [eax + ebx*8 - 8]
mov edi, edx
mov edx, 0x3f
cmovne edx, eax
bsr eax, ecx
xor edx, 0x1f
xor eax, 0x1f
add edx, 0x20
test ecx, ecx
mov ecx, 0xaaaaaaab
cmove eax, edx
shl ebx, 6
sub ebx, eax
mov eax, ebx
mul ecx
shr edx, 1
inc edx
mov dword [esp + 0x48], edx
push edi
call fcn.00550460
add esp, 4
cmp esi, 5
jb 0x54f229
mov esi, dword [edi + 4]
test esi, esi
je 0x54f432
mov ecx, dword [edi + 8]
mov dword [esp + 0xb0], eax
mov eax, ebx
jmp 0x54f235
mov dword [esp + 0xb0], eax
mov eax, ebx
lea ecx, [edi + 8]
mov edi, dword [ecx + esi*8 - 4]
bsr ecx, dword [ecx + esi*8 - 8]
mov ebx, 0x3f
cmovne ebx, ecx
bsr ecx, edi
xor ebx, 0x1f
xor ecx, 0x1f
add ebx, 0x20
test edi, edi
cmove ecx, ebx
mov ebx, eax
mov eax, dword [esp + 0xb0]
shl esi, 6
sub esi, ecx
bsr ecx, eax
mov edi, 0x3f
cmovne edi, ecx
bsr ecx, edx
xor edi, 0x1f
xor ecx, 0x1f
add edi, 0x20
test edx, edx
cmove ecx, edi
lea ecx, [ecx + esi - 0x40]
cmp ecx, 0x400
ja 0x54f34e
movd xmm0, eax
movd xmm1, edx
punpckldq xmm0, xmm1
punpckldq xmm0, xmmword [0x6dcde0]
subpd xmm0, xmmword [0x6dcdf0]
movapd xmm1, xmm0
unpckhpd xmm1, xmm0
addsd xmm1, xmm0
movapd xmmword [esp + 0xb0], xmm1
sub esp, 0x10
movsd xmm1, qword [0x6dce00]
xorps xmm0, xmm0
cvtsi2sd xmm0, ecx
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm1
call fcn.0063bea0
movapd xmm0, xmmword [esp + 0xc0]
add esp, 0x10
fstp qword [esp + 0x140]
mov eax, 0x7fffffff
mulsd xmm0, qword [esp + 0x140]
movsd qword [esp + 0xf8], xmm0
and eax, dword [esp + 0xfc]
xor eax, 0x7ff00000
or eax, dword [esp + 0xf8]
je 0x54f34e
movsd qword [esp + 0x138], xmm0
mov ecx, dword [esp + 0x13c]
mov eax, ecx
and eax, 0x7fffffff
cmp eax, 0x7fefffff
jbe 0x54f453
addsd xmm0, xmm0
jmp 0x54f554
add ebx, 0xfffffc03
mov ecx, 0xaaaaaaab
mov eax, ebx
mul ecx
mov ecx, dword [ebp + 0xc]
mov ebx, edx
shr ebx, 1
lea eax, [ebx + ebx*2]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], 2
lea esi, [esp + 0x148]
lea edx, [esp + 0x18]
mov ecx, esi
push eax
call fcn.0056d210
add esp, 4
lea eax, [esp + 0xc0]
push esi
push eax
call fcn.0054f090
add esp, 8
movsd xmm1, qword [esp + 0xe0]
movsd xmm2, qword [esp + 0xd8]
movsd xmm0, qword [esp + 0xe8]
movsd qword [esp + 0x38], xmm1
movsd xmm1, qword [esp + 0xd0]
movsd qword [esp + 0x30], xmm2
movsd xmm2, qword [esp + 0xc0]
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x28], xmm1
movsd xmm1, qword [esp + 0xc8]
movsd qword [esp + 0x18], xmm2
movsd qword [esp + 0x20], xmm1
lea edx, [esp + 0x18]
lea ecx, [esp + 0x100]
push ebx
call fcn.0056cbc0
add esp, 4
mov eax, dword [esp + 0x170]
cmp eax, 5
jb 0x54f5c2
shl eax, 3
push 8
push eax
push dword [esp + 0x158]
call fcn.004ed020
add esp, 0xc
jmp 0x54f5c2
xor esi, esi
jmp 0x54f265
xor ebx, ebx
mov dword [esp + 0x48], 1
push edx
call fcn.00550460
add esp, 4
xor esi, esi
jmp 0x54f265
mov esi, 0x2a9f7893
cmp eax, 0x100000
jae 0x54f48d
movsd xmm1, qword [0x6dce08]
mov esi, 0x297f7893
mulsd xmm1, xmm0
movsd qword [esp + 0x130], xmm1
mov ecx, dword [esp + 0x134]
mov eax, ecx
and eax, 0x7fffffff
je 0x54f554
mov edx, 0x55555556
and ecx, 0x80000000
mul edx
add edx, esi
or ecx, edx
movd xmm3, ecx
mov ecx, 0xc0000000
psllq xmm3, 0x20
movdqa xmm1, xmm3
movdqa xmm2, xmm3
divsd xmm1, xmm0
mulsd xmm2, xmm3
mulsd xmm1, xmm2
movapd xmm2, xmm1
mulsd xmm2, xmm1
mulsd xmm2, xmm1
unpcklpd xmm2, xmm1
unpcklpd xmm1, xmm1
mulpd xmm1, xmmword [0x6dce10]
addpd xmm1, xmmword [0x6dce20]
mulpd xmm1, xmm2
movapd xmm2, xmm1
unpckhpd xmm2, xmm1
addsd xmm2, qword [0x6dce30]
addsd xmm2, xmm1
mulsd xmm2, xmm3
movsd qword [esp + 0xf0], xmm2
and ecx, dword [esp + 0xf0]
mov eax, dword [esp + 0xf4]
add ecx, 0x80000000
adc eax, 0
movd xmm2, ecx
movd xmm1, eax
punpckldq xmm2, xmm1
movdqa xmm1, xmm2
mulsd xmm1, xmm2
divsd xmm0, xmm1
movapd xmm1, xmm2
addsd xmm1, xmm2
addsd xmm1, xmm0
subsd xmm0, xmm2
divsd xmm0, xmm1
mulsd xmm0, xmm2
addsd xmm0, xmm2
lea ecx, [esp + 0x18]
call fcn.005506f0
cmp dword [esp + 0x18], 2
je 0x54fc13
movsd xmm1, qword [esp + 0x38]
movsd xmm2, qword [esp + 0x30]
movsd xmm0, qword [esp + 0x40]
movsd qword [esp + 0x120], xmm1
movsd xmm1, qword [esp + 0x28]
movsd qword [esp + 0x118], xmm2
movsd xmm2, qword [esp + 0x18]
movsd qword [esp + 0x128], xmm0
movsd qword [esp + 0x110], xmm1
movsd xmm1, qword [esp + 0x20]
movsd qword [esp + 0x100], xmm2
movsd qword [esp + 0x108], xmm1
movsd xmm1, qword [esp + 0x120]
movsd xmm2, qword [esp + 0x118]
movsd xmm0, qword [esp + 0x128]
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0x110]
movsd qword [esp + 0x68], xmm2
movsd xmm2, qword [esp + 0x100]
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x60], xmm1
movsd xmm1, qword [esp + 0x108]
movsd qword [esp + 0x50], xmm2
movsd qword [esp + 0x58], xmm1
mov edx, dword [ebp + 0xc]
lea eax, [esp + 0x50]
lea ecx, [esp + 0x80]
push eax
call 0x54fcc0
add esp, 4
lea esi, [esp + 0x58]
jmp 0x54f69a
movsd xmm1, qword [esp + 0x38]
movsd xmm2, qword [esp + 0x30]
movsd xmm0, qword [esp + 0x40]
movsd qword [esp + 0xa0], xmm1
movsd xmm1, qword [esp + 0x28]
movsd qword [esp + 0x98], xmm2
movsd xmm2, qword [esp + 0x18]
movsd qword [esp + 0xa8], xmm0
movsd qword [esp + 0x90], xmm1
movsd xmm1, qword [esp + 0x20]
movsd qword [esp + 0x80], xmm2
movsd qword [esp + 0x88], xmm1
mov eax, dword [esp + 0x78]
mov dword [esp + 0x14], esi
cmp eax, 5
mov ebx, eax
mov dword [esp + 0xc], eax
jb 0x54f6b9
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
mov edi, dword [esp + 0xa8]
lea eax, [esp + 0x88]
mov dword [esp + 0x10], eax
cmp edi, 5
mov dword [esp + 0x4c], edi
jb 0x54f6e6
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
cmp ebx, edi
jae 0x54f720
mov ecx, dword [esp + 0x4c]
cmp ecx, 5
jb 0x54f783
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0xc]
lea esi, [esp + 0x58]
test ecx, ecx
je 0x54f870
mov eax, dword [esp + 0x88]
jmp 0x54f79a
ja 0x54f99e
shl ebx, 3
shl edi, 3
nop dword [eax]
test ebx, ebx
je 0x54f99e
test edi, edi
je 0x54f99e
mov eax, dword [esp + 0x14]
mov dword [esp + 0xb0], ebx
mov ecx, dword [eax + ebx - 8]
mov edx, dword [eax + ebx - 4]
mov eax, dword [esp + 0x10]
mov esi, dword [eax + edi - 8]
mov eax, dword [eax + edi - 4]
mov ebx, edx
cmp ecx, esi
sbb ebx, eax
mov ebx, dword [esp + 0xb0]
jb 0x54f6ea
add ebx, 0xfffffff8
add edi, 0xfffffff8
cmp esi, ecx
sbb eax, edx
jae 0x54f730
jmp 0x54f99e
mov edi, dword [esp + 0xc]
test ecx, ecx
lea eax, [esp + 0x88]
lea esi, [esp + 0x58]
je 0x54f870
mov ebx, ecx
mov ecx, dword [eax + ecx*8 - 4]
mov edx, 0x3f
bsr eax, dword [eax + ebx*8 - 8]
cmove eax, edx
bsr edx, ecx
xor eax, 0x1f
xor edx, 0x1f
add eax, 0x20
test ecx, ecx
cmove edx, eax
shl ebx, 6
sub ebx, edx
cmp ebx, dword [esp + 0x48]
jbe 0x54f870
lea ecx, [esp + 0x148]
call fcn.0054bd50
movsd xmm1, qword [esp + 0x168]
movsd xmm2, qword [esp + 0x160]
movsd xmm0, qword [esp + 0x170]
movsd qword [esp + 0x38], xmm1
movsd xmm1, qword [esp + 0x158]
movsd qword [esp + 0x30], xmm2
movsd xmm2, qword [esp + 0x148]
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x28], xmm1
movsd xmm1, qword [esp + 0x150]
movsd qword [esp + 0x18], xmm2
movsd qword [esp + 0x20], xmm1
lea edx, [esp + 0x18]
lea ecx, [esp + 0xc0]
push dword [esp + 0x48]
call fcn.0056cbc0
add esp, 4
mov edi, dword [esp + 0x78]
mov bl, 1
mov dword [esp + 0xb0], 0
cmp edi, 5
jae 0x54f8ec
jmp 0x54f8fe
movsd xmm1, qword [esp + 0xa0]
movsd xmm2, qword [esp + 0x98]
movsd xmm0, qword [esp + 0xa8]
mov al, 1
xor ebx, ebx
mov dword [esp + 0xb0], eax
movsd qword [esp + 0xe0], xmm1
movsd xmm1, qword [esp + 0x90]
movsd qword [esp + 0xd8], xmm2
movsd xmm2, qword [esp + 0x80]
movsd qword [esp + 0xe8], xmm0
movsd qword [esp + 0xd0], xmm1
movsd xmm1, qword [esp + 0x88]
movsd qword [esp + 0xc0], xmm2
movsd qword [esp + 0xc8], xmm1
cmp edi, 5
jb 0x54f8fe
shl edi, 3
push 8
push edi
push dword [esp + 0x60]
call fcn.004ed020
add esp, 0xc
movsd xmm1, qword [esp + 0xe0]
movsd xmm2, qword [esp + 0xd8]
movsd xmm0, qword [esp + 0xe8]
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0xd0]
movsd qword [esp + 0x68], xmm2
movsd xmm2, qword [esp + 0xc0]
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x60], xmm1
movsd xmm1, qword [esp + 0xc8]
movsd qword [esp + 0x50], xmm2
movsd qword [esp + 0x58], xmm1
mov edx, dword [ebp + 0xc]
lea eax, [esp + 0x50]
lea ecx, [esp + 0x18]
push eax
call 0x54fcc0
add esp, 4
test bl, bl
je 0x54f640
mov eax, dword [esp + 0xa8]
cmp eax, 5
jb 0x54f640
shl eax, 3
push 8
push eax
push dword [esp + 0x90]
call fcn.004ed020
add esp, 0xc
jmp 0x54f640
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0x58]
cmp ecx, 5
mov ebx, ecx
mov dword [esp + 0x14], eax
jb 0x54f9bd
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xa8]
lea eax, [esp + 0x88]
mov dword [esp + 0x10], eax
cmp ecx, 5
mov dword [esp + 0x4c], ecx
jb 0x54f9ee
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
cmp ebx, ecx
jb 0x54fba7
jbe 0x54fb50
movsd xmm1, qword [esp + 0xa0]
movsd xmm2, qword [esp + 0x98]
mov eax, dword [esp + 0xc]
movsd xmm0, qword [esp + 0xa8]
movsd qword [esp + 0x38], xmm1
movsd xmm1, qword [esp + 0x90]
movsd qword [esp + 0x30], xmm2
movsd xmm2, qword [esp + 0x80]
cmp eax, 5
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x28], xmm1
movsd xmm1, qword [esp + 0x88]
movsd qword [esp + 0x18], xmm2
movsd qword [esp + 0x20], xmm1
jb 0x54fa71
shl eax, 3
push 8
push eax
push dword [esp + 0x60]
call fcn.004ed020
add esp, 0xc
movsd xmm1, qword [esp + 0x38]
movsd xmm2, qword [esp + 0x30]
movsd xmm0, qword [esp + 0x40]
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0x28]
movsd qword [esp + 0x68], xmm2
movsd xmm2, qword [esp + 0x18]
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x60], xmm1
movsd xmm1, qword [esp + 0x20]
movsd qword [esp + 0x50], xmm2
movsd qword [esp + 0x58], xmm1
mov edx, dword [ebp + 0xc]
lea eax, [esp + 0x50]
lea ecx, [esp + 0x18]
push eax
call 0x54fcc0
add esp, 4
lea eax, [esp + 0x58]
movsd xmm1, qword [esp + 0x38]
movsd xmm2, qword [esp + 0x30]
movsd xmm0, qword [esp + 0x40]
mov ecx, dword [esp + 0x78]
movsd qword [esp + 0xa0], xmm1
movsd xmm1, qword [esp + 0x28]
movsd qword [esp + 0x98], xmm2
movsd xmm2, qword [esp + 0x18]
movsd qword [esp + 0xa8], xmm0
movsd qword [esp + 0x90], xmm1
movsd xmm1, qword [esp + 0x20]
movsd qword [esp + 0x80], xmm2
movsd qword [esp + 0x88], xmm1
cmp ecx, 5
mov ebx, ecx
mov dword [esp + 0x14], eax
jae 0x54f9b1
jmp 0x54f9bd
shl ebx, 3
shl ecx, 3
nop word cs:[eax + eax]
test ebx, ebx
je 0x54fba7
test ecx, ecx
je 0x54fba7
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov dword [esp + 0xb0], ebx
mov edi, dword [eax + ebx - 8]
mov eax, dword [eax + ebx - 4]
mov esi, dword [edx + ecx - 8]
mov edx, dword [edx + ecx - 4]
cmp edi, esi
mov ebx, eax
sbb ebx, edx
mov ebx, dword [esp + 0xb0]
jb 0x54fba7
add ebx, 0xfffffff8
add ecx, 0xfffffff8
cmp esi, edi
sbb edx, eax
jae 0x54fb60
jmp 0x54f9fc
mov edi, dword [ebp + 8]
movsd xmm1, qword [esp + 0x70]
movsd xmm2, qword [esp + 0x68]
mov eax, dword [esp + 0x4c]
movsd xmm0, qword [esp + 0x78]
movsd qword [edi + 0x20], xmm1
movsd xmm1, qword [esp + 0x60]
movsd qword [edi + 0x18], xmm2
movsd xmm2, qword [esp + 0x50]
cmp eax, 5
movsd qword [edi + 0x28], xmm0
movsd qword [edi + 0x10], xmm1
movsd xmm1, qword [esp + 0x58]
movsd qword [edi], xmm2
movsd qword [edi + 8], xmm1
jb 0x54fc09
shl eax, 3
push 8
push eax
push dword [esp + 0x90]
call fcn.004ed020
add esp, 0xc
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x6dea28
push 0x2b
push 0x6dcf4e
call fcn.004faaf0
mov esi, eax
jmp 0x54fc7a
mov eax, dword [esp + 0x78]
cmp eax, 5
jb 0x54fcac
shl eax, 3
push 8
push eax
push dword [esp + 0x60]
jmp 0x54fca4
call fcn.004ed020
add esp, 0xc
push esi
call fcn.0050ffb0
nop word cs:[eax + eax]
nop dword [eax]
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x1c0
mov esi, dword [ebp + 8]
mov edi, edx
mov dword [esp + 0x64], ecx
mov eax, dword [esi + 0x28]
cmp eax, 5
jb 0x54fce8
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
jmp 0x54fceb
lea ecx, [esi + 8]
lea ebx, [esp + 0x188]
push eax
push ecx
push eax
push ecx
push ebx
call fcn.0056c8b0
add esp, 0x14
lea eax, [esp + 0x78]
push ebx
push edi
push eax
call fcn.0055e1b0
add esp, 0xc
mov eax, dword [esp + 0x9c]
movsd xmm2, qword [esp + 0x84]
movsd xmm1, qword [esp + 0x8c]
movsd xmm0, qword [esp + 0x78]
mov ebx, dword [esp + 0x80]
mov dword [esp + 0x150], eax
mov eax, dword [esp + 0xd0]
movsd qword [esp + 0x138], xmm2
movsd qword [esp + 0x140], xmm1
movsd xmm2, qword [esp + 0x94]
movsd xmm1, qword [esp + 0xa0]
movaps xmmword [esp + 0x50], xmm0
cmp eax, 5
movsd qword [esp + 0x148], xmm2
movaps xmmword [esp + 0x40], xmm1
jb 0x54fd93
shl eax, 3
push 8
push eax
push dword [esp + 0xb8]
call fcn.004ed020
add esp, 0xc
mov eax, dword [esp + 0x150]
movsd xmm1, qword [esp + 0x140]
movsd xmm0, qword [esp + 0x138]
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0x1b0]
movsd qword [esp + 0x120], xmm1
movsd xmm1, qword [esp + 0x148]
movsd qword [esp + 0x118], xmm0
cmp eax, 5
movsd qword [esp + 0x128], xmm1
jb 0x54fdf8
shl eax, 3
push 8
push eax
push dword [esp + 0x198]
call fcn.004ed020
add esp, 0xc
mov dword [esp + 0x7c], esi
mov dword [esp + 0x78], 2
lea edi, [esp + 0x78]
lea ecx, [esp + 0x188]
mov edx, edi
push 1
call fcn.0056cbc0
add esp, 4
movaps xmm0, xmmword [esp + 0x50]
movsd xmm1, qword [esp + 0x120]
movsd xmm3, qword [esp + 0x118]
movsd xmm2, qword [esp + 0x128]
mov eax, dword [esp + 0x130]
movlps qword [esp + 0x78], xmm0
mov dword [esp + 0x80], ebx
movsd qword [esp + 0x8c], xmm1
movaps xmm1, xmmword [esp + 0x40]
movsd qword [esp + 0x84], xmm3
movsd qword [esp + 0x94], xmm2
mov dword [esp + 0x9c], eax
movlps qword [esp + 0xa0], xmm1
lea ecx, [esp + 0x158]
lea edx, [esp + 0x188]
push edi
call fcn.0056e3a0
add esp, 4
cmp dword [esp + 0x180], 4
jbe 0x54febb
mov eax, dword [esp + 0x160]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x15c]
mov eax, dword [eax]
test eax, eax
jne 0x54fed7
jmp 0x5502fd
lea ecx, [esp + 0x160]
lea eax, [esp + 0x180]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax]
test eax, eax
je 0x5502fd
mov ecx, dword [esp + 0x1c]
xor edi, edi
xor edx, edx
lea esi, [ecx + eax*8]
jmp 0x54ff50
mov dword [esp + 8], 0
xor edi, edi
mov eax, dword [esp + 0xc]
shld eax, ecx, 1
add ecx, ecx
or eax, dword [esp + 8]
or ecx, edi
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
mov esi, dword [esp + 0x20]
mov ecx, 3
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x24]
add esi, 0xfffffff8
mul ecx
lea ecx, [edi + edi*2]
mov dword [esi + 4], edi
add ecx, edx
mov edx, dword [esp + 0x10]
sub edx, eax
sbb ebx, ecx
mov ecx, dword [esp + 4]
cmp dword [esp + 0x1c], esi
mov edi, edx
mov edx, ebx
mov dword [esi], ecx
je 0x5502fd
mov ebx, dword [esi - 4]
mov ecx, dword [esi - 8]
mov dword [esp + 0x20], esi
mov dword [esp + 8], edx
mov eax, ebx
mov dword [esp + 0x10], ecx
or ecx, edi
mov dword [esp + 0x24], ebx
or eax, edx
or ecx, eax
mov eax, edi
sete byte [esp + 0x40]
bsr ecx, edi
bsr esi, edx
mov dword [esp + 0x50], eax
xor ecx, 0x1f
xor esi, 0x1f
add ecx, 0x20
test edx, edx
cmovne ecx, esi
bsr esi, dword [esp + 0x10]
bsr edi, ebx
xor edi, 0x1f
xor esi, 0x1f
add esi, 0x20
test ebx, ebx
cmovne esi, edi
mov edi, 0
add esi, 0x40
or eax, edx
mov eax, 0x7e
mov edx, 0
cmovne esi, ecx
mov ecx, 0x7f
sub eax, esi
mov esi, 0
sbb esi, esi
mov dword [esp + 0x14], eax
sbb edi, edi
sbb edx, edx
cmp ecx, eax
mov ecx, 0
mov eax, 0
mov dword [esp + 0x18], edi
sbb ecx, esi
mov ecx, 0
sbb ecx, edi
mov ecx, 0
sbb ecx, edx
setb cl
or cl, byte [esp + 0x40]
mov ecx, dword [esp + 0x10]
cmovne ebx, eax
cmovne ecx, eax
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ecx
jne 0x54ff12
mov edi, edx
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, esi
or ecx, edi
mov eax, edx
xor eax, 0x7f
or eax, ebx
or ecx, eax
mov eax, esi
mov esi, dword [esp + 0x20]
mov ecx, 3
je 0x54ff1b
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x108], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x10c], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x110], ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x104], 0
mov dword [esp + 0x100], 0
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf8], 0
mov dword [esp + 0x114], ecx
mov dword [esp + 0x30], eax
mov eax, edx
xor al, 0x7f
mov ch, al
shr al, 3
and al, 0xf
and ch, 7
neg al
mov cl, ch
movsx eax, al
mov edx, dword [esp + eax + 0x110]
mov esi, dword [esp + eax + 0x114]
shld esi, edx, cl
shl edx, cl
not cl
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], edx
mov esi, dword [esp + eax + 0x10c]
mov edx, dword [esp + eax + 0x108]
mov eax, esi
shr eax, 1
shr eax, cl
mov cl, ch
shld esi, edx, cl
shl edx, cl
mov ecx, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0xc], esi
add edx, 1
adc dword [esp + 0x30], 0
adc ebx, 0
adc edi, 0
jb 0x54fef0
or dword [esp + 0x2c], eax
mov eax, dword [esp + 0x10]
mov esi, ebx
mov ebx, edi
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf0], 0
mov dword [esp + 0xec], 0
mov dword [esp + 0xe8], 0
mov dword [esp + 0xe4], eax
mov eax, edx
mov dword [esp + 4], ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x14], edx
mov ch, dl
shr al, 3
and ch, 7
and al, 0xf
mov cl, ch
movzx eax, al
mov edi, dword [esp + eax + 0xe0]
mov edx, dword [esp + eax + 0xe4]
mov esi, edi
add edi, edi
shrd esi, edx, cl
mov dword [esp + 0x40], esi
mov esi, dword [esp + eax + 0xdc]
mov ebx, esi
shr ebx, cl
not cl
shl edi, cl
mov cl, ch
or edi, ebx
shr edx, cl
mov dword [esp + 0x38], edi
mov eax, dword [esp + eax + 0xd8]
mov dword [esp + 0x50], edx
mov dword [esp + 8], 0
shrd eax, esi, cl
mov ecx, dword [esp + 4]
mov dword [esp + 0x34], eax
mov eax, 3
add eax, 0xffffffff
mov dword [esp + 0x74], eax
mov eax, 0
adc eax, 0xffffffff
mov dword [esp + 0x70], eax
mov eax, 0
adc eax, 0xffffffff
mov dword [esp + 0x6c], eax
mov eax, 0
adc eax, 0xffffffff
xor edi, edi
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x28]
nop word cs:[eax + eax]
nop
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov dword [esp + 4], edi
mov edi, dword [esp + 8]
mov dword [esp + 8], 0
shld dword [esp + 0x50], ebx, 1
shld ebx, esi, 1
shld esi, edx, 1
shld edx, eax, 1
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x2c]
shld eax, ebx, 1
or eax, edi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xc]
shld ebx, eax, 1
shld eax, ecx, 1
add ecx, ecx
or ecx, dword [esp + 4]
or ebx, edi
or eax, edi
cmp dword [esp + 0x74], edx
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0xc], eax
mov eax, 3
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x70]
sbb ecx, esi
mov ecx, dword [esp + 0x6c]
sbb ecx, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
sbb ecx, ebx
sar ecx, 0x1f
mov edi, ecx
and ecx, eax
mov eax, ebx
mov ebx, dword [esp + 0x14]
and edi, 1
sub edx, ecx
mov ecx, dword [esp + 0x30]
sbb esi, 0
mov dword [esp + 0x34], edx
sbb dword [esp + 0x40], 0
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x18]
sbb eax, 0
add ebx, 0xffffffff
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x3c]
adc ecx, 0xffffffff
mov dword [esp + 0x14], ebx
adc esi, 0xffffffff
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], esi
adc eax, 0xffffffff
or ebx, esi
or ecx, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
or ebx, ecx
mov ecx, dword [esp + 4]
jne 0x550210
jmp 0x54fefa
movsd xmm3, qword [esp + 0x180]
movsd xmm2, qword [esp + 0x178]
movsd xmm0, qword [esp + 0x158]
movsd xmm1, qword [esp + 0x160]
lea ecx, [esp + 0x80]
movsd qword [esp + 0xa0], xmm3
movsd qword [esp + 0x98], xmm2
movsd xmm3, qword [esp + 0x170]
movsd xmm2, qword [esp + 0x168]
movsd qword [esp + 0x80], xmm1
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x90], xmm3
movsd qword [esp + 0x88], xmm2
mov edx, dword [esp + 0x80]
nop word cs:[eax + eax]
nop
mov esi, dword [esp + 0xa0]
mov ebx, ecx
cmp esi, 5
mov edi, esi
jb 0x550396
mov edi, dword [esp + 0x7c]
mov ebx, edx
test edi, edi
je 0x5503c1
mov eax, dword [ebx + edi*8 - 8]
or eax, dword [ebx + edi*8 - 4]
jne 0x5503c1
cmp esi, 5
lea edi, [esp + 0xa0]
jb 0x5503b8
mov esi, dword [esp + 0x7c]
lea edi, [esp + 0x7c]
test esi, esi
je 0x550380
dec esi
mov dword [edi], esi
jmp 0x550380
mov eax, dword [esp + 0x64]
movsd xmm1, qword [esp + 0x98]
movsd xmm2, qword [esp + 0x90]
movsd xmm0, qword [esp + 0xa0]
movsd qword [eax + 0x20], xmm1
movsd xmm1, qword [esp + 0x88]
movsd qword [eax + 0x18], xmm2
movsd xmm2, qword [esp + 0x78]
movsd qword [eax + 0x28], xmm0
movsd qword [eax + 0x10], xmm1
movsd xmm1, qword [esp + 0x80]
movsd qword [eax], xmm2
movsd qword [eax + 8], xmm1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret