Function at 0x559140
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x58
xor eax, eax
mov dword [esp + 0x28], edx
push esi
mov esi, dword [ebp + 0x14]
push edi
mov edi, ecx
mov dword [esp + 0x5c], esi
mov ecx, dword [ebp + 0x20]
cmp ecx, 1
mov dword [esp + 0x1c], edi
sete al
mov dword [esp + 0xc], ecx
mov dword [esp + 0x48], eax
mov eax, esi
cdq
idiv ecx
cmp dword [ebp + 0x10], 0
mov edx, eax
mov dword [esp + 0x20], 0
mov eax, 0
mov dword [esp + 0x14], 0
setne al
mov dword [esp + 0x40], 0
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x54], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], edx
cmp esi, 1
jne 0x559284
mov ecx, dword [ebp + 0xc]
xor edx, edx
movss xmm1, dword [0x5f47c8]
test eax, eax
movss xmm2, dword [0x5f4648]
mov eax, edx
setne al
mov dword [esp + 0x48], ecx
inc eax
mov dword [esp + 0x44], edx
mov dword [esp + 0x54], eax
xorps xmm3, xmm3
mov eax, dword [ebp + 0x34]
mov esi, edi
nop
xor edi, edi
cmp dword [eax], 8
jl 0x559245
test esi, esi
je 0x559228
comiss xmm3, dword [ecx]
jbe 0x559215
mov ecx, dword [ebp + 0x30]
mov edi, 1
push edi
mov edx, edi
call fcn.0054cf60
add esp, 4
jmp 0x559237
mov ecx, dword [ebp + 0x30]
xor edi, edi
push 1
mov edx, edi
call fcn.0054cf60
add esp, 4
jmp 0x559237
mov ecx, dword [ebp + 0x30]
mov edx, 1
call fcn.00553f70
mov edi, eax
mov eax, dword [ebp + 0x34]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
add dword [eax], 0xfffffff8
test esi, esi
jne 0x559259
test edi, edi
je 0x559252
movaps xmm0, xmm1
jmp 0x559255
movaps xmm0, xmm2
movss dword [ecx], xmm0
mov ecx, dword [ebp + 0x10]
inc edx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], edx
cmp edx, dword [esp + 0x54]
jl 0x5591f0
mov eax, dword [ebp + 0x3c]
mov esi, dword [ebp + 0xc]
test eax, eax
je 0x559279
fld dword [esi]
fstp dword [eax]
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x559559
cmp dword [ebp + 0x44], eax
jne 0x559559
mov esi, dword [ebp + 0x28]
mov eax, esi
test esi, esi
mov dword [esp + 0x50], 0
cmovle eax, dword [esp + 0x50]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x559367
cmp dword [esp + 0x34], 0
jne 0x5592d1
test dl, 1
jne 0x5592c8
test esi, esi
js 0x5592d1
cmp ecx, 1
jle 0x559367
mov ecx, dword [ebp + 0x14]
xor esi, esi
mov dword [esp + 0x38], esi
cmp ecx, 4
jl 0x55932d
mov edx, dword [ebp + 0x50]
lea edi, [eax + 0xc]
sub eax, edx
lea esi, [edx + 4]
lea edx, [ecx - 4]
shr edx, 2
inc edx
mov dword [esp + 0x44], edx
shl edx, 2
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
fld dword [edi - 0xc]
fstp dword [esi - 4]
fld dword [eax + esi]
fstp dword [esi]
fld dword [edi - 4]
fstp dword [esi + 4]
fld dword [edi]
add edi, 0x10
fstp dword [esi + 8]
add esi, 0x10
sub dword [esp + 0x44], 1
jne 0x559300
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
jmp 0x559330
sub eax, dword [ebp + 0x50]
cmp esi, ecx
jge 0x55935f
mov edx, dword [ebp + 0x50]
mov dword [esp + 0x3c], ecx
lea esi, [edx + esi*4]
mov edx, dword [esp + 0x38]
sub dword [esp + 0x3c], edx
mov edx, dword [esp + 0x10]
lea ebx, [ebx]
fld dword [esi + eax]
fstp dword [esi]
add esi, 4
sub dword [esp + 0x3c], 1
jne 0x559350
mov eax, dword [ebp + 0x50]
mov dword [ebp + 0x2c], eax
jmp 0x55936a
mov ecx, dword [ebp + 0x14]
cmp dword [esp + 0x34], 0
mov dword [esp + 0x3c], 0
jle 0x55945f
test edi, edi
mov edi, dword [ebp + 0x54]
je 0x559401
mov esi, dword [ebp + 0xc]
mov eax, 1
mov dword [esp + 0x38], eax
mov edx, ecx
mov ecx, dword [esp + 0x3c]
sar edx, cl
mov ecx, esi
push eax
mov dword [esp + 0x54], edx
call fcn.005590b0
mov eax, dword [ebp + 0x2c]
add esp, 4
test eax, eax
je 0x5593c4
push dword [esp + 0x38]
mov edx, dword [esp + 0x54]
mov ecx, eax
call fcn.005590b0
add esp, 4
mov eax, edi
and edi, 0xf
sar eax, 4
movzx edi, byte [edi + 0x5e4420]
movzx ecx, byte [eax + 0x5e4420]
mov eax, dword [esp + 0x38]
shl ecx, 2
or edi, ecx
rol eax, 1
mov ecx, dword [esp + 0x3c]
inc ecx
mov dword [esp + 0x38], eax
cmp ecx, dword [esp + 0x34]
mov dword [esp + 0x3c], ecx
mov ecx, dword [ebp + 0x14]
jl 0x559394
mov edx, dword [esp + 0x10]
jmp 0x559465
xor edx, edx
mov dword [esp + 0x3c], edx
lea esi, [edx + 1]
lea ebx, [ebx]
test eax, eax
je 0x55942b
mov edx, ecx
mov ecx, dword [esp + 0x3c]
sar edx, cl
mov ecx, eax
push esi
call fcn.005590b0
mov edx, dword [esp + 0x40]
add esp, 4
mov eax, edi
rol esi, 1
sar eax, 4
and edi, 0xf
inc edx
mov dword [esp + 0x3c], edx
movzx ecx, byte [eax + 0x5e4420]
movzx edi, byte [edi + 0x5e4420]
mov eax, dword [ebp + 0x2c]
shl ecx, 2
or edi, ecx
mov ecx, dword [ebp + 0x14]
cmp edx, dword [esp + 0x34]
jl 0x559410
mov edx, dword [esp + 0x10]
jmp 0x559462
mov edi, dword [ebp + 0x54]
mov esi, dword [ebp + 0xc]
mov ecx, dword [esp + 0x34]
mov eax, dword [ebp + 0x20]
shl edx, cl
sar eax, cl
mov dword [esp + 0x2c], edi
mov dword [ebp + 0x20], eax
mov dword [esp + 0x10], edx
test dl, 1
jne 0x5594e3
mov ecx, dword [ebp + 0x28]
test ecx, ecx
jns 0x5594db
cmp dword [esp + 0x1c], 0
je 0x55949d
push eax
mov ecx, esi
call fcn.005590b0
mov edx, dword [esp + 0x14]
add esp, 4
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x5594b5
push dword [ebp + 0x20]
mov ecx, eax
call fcn.005590b0
mov edx, dword [esp + 0x14]
add esp, 4
mov ecx, dword [ebp + 0x20]
mov eax, edi
inc dword [esp + 0x20]
shl eax, cl
or edi, eax
sar edx, 1
mov eax, ecx
mov dword [esp + 0x10], edx
mov ecx, dword [ebp + 0x28]
add eax, eax
inc ecx
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x28], ecx
test dl, 1
je 0x559483
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x2c], edi
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], ecx
cmp eax, 1
jle 0x559560
shl eax, cl
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x44], eax
je 0x559523
push dword [esp + 0x48]
mov eax, edx
push dword [esp + 0x48]
sar eax, cl
mov ecx, esi
mov edx, eax
mov dword [esp + 0x58], eax
call fcn.00558b40
mov ecx, dword [esp + 0x3c]
add esp, 8
mov edx, dword [esp + 0x50]
jmp 0x559525
sar edx, cl
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x14], ecx
test eax, eax
je 0x559560
push dword [esp + 0x48]
mov ecx, eax
push dword [esp + 0x48]
call fcn.00558b40
mov eax, dword [esp + 0x3c]
add esp, 8
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 8]
mov esi, dword [eax + 0x60]
jmp 0x559571
mov edi, dword [ebp + 0x54]
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x30]
mov edx, dword [ebp + 0x10]
mov ecx, dword [eax + 8]
mov esi, dword [eax + 0x60]
test edx, edx
jne 0x5595e3
mov eax, dword [ebp + 0x38]
cmp eax, 0xffffffff
je 0x5595e3
inc eax
imul eax, ecx
add eax, dword [ebp + 8]
movsx ecx, word [esi + eax*2]
mov eax, dword [esp + 0x30]
add ecx, dword [eax + 0x64]
movzx eax, byte [ecx]
movzx eax, byte [eax + ecx]
mov ecx, dword [ebp + 0x18]
add eax, 0xc
cmp ecx, eax
mov eax, dword [ebp + 0x14]
jle 0x5595e9
cmp eax, 2
jle 0x5595e9
mov edx, dword [ebp + 0xc]
mov esi, eax
dec dword [ebp + 0x38]
mov eax, dword [ebp + 0x20]
shr esi, 1
mov dword [esp + 0x34], esi
lea edx, [edx + esi*4]
mov dword [esp + 8], edx
cmp eax, 1
jne 0x5595d0
mov ecx, edi
add edi, edi
and ecx, eax
or edi, ecx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x2c], edi
inc eax
mov dword [esp + 0x28], edx
mov edx, dword [ebp + 0x10]
sar eax, 1
mov dword [ebp + 0x20], eax
mov dword [esp + 0x44], esi
jmp 0x55960c
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
cmp dword [esp + 0x4c], 0
mov esi, dword [ebp + 0x38]
mov dword [ebp + 0x38], esi
mov esi, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], eax
mov dword [esp + 8], edx
je 0x55a44c
mov eax, dword [esp + 0x30]
mov edi, dword [ebp + 8]
mov dword [esp + 0x24], 0
mov eax, dword [eax + 0x38]
movsx eax, word [eax + edi*2]
mov edi, dword [ebp + 0x38]
lea eax, [eax + edi*8]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
test edx, edx
je 0x55964f
cmp esi, 2
jne 0x55964f
sar eax, 1
sub eax, 0x10
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x44]
lea eax, [eax*2 - 1]
jmp 0x55966c
sar eax, 1
sub eax, 4
mov dword [esp + 0x3c], eax
lea eax, [esi*2 - 1]
mov dword [esp + 0x44], eax
test edx, edx
je 0x559671
cmp esi, 2
jne 0x559671
dec eax
mov dword [esp + 0x44], eax
imul eax, dword [esp + 0x3c]
add eax, ecx
cdq
idiv dword [esp + 0x44]
mov edx, dword [ebp + 0x18]
sub edx, dword [esp + 0x54]
mov ecx, eax
add edx, 0xffffffe0
mov eax, 0x40
cmp edx, ecx
cmovge edx, ecx
cmp edx, eax
cmovg edx, eax
cmp edx, 4
jge 0x5596a4
mov eax, 1
jmp 0x5596c1
mov eax, edx
mov ecx, 0xe
sar eax, 3
and edx, 7
sub cl, al
movsx eax, word [edx*2 + 0x5e4430]
sar eax, cl
inc eax
and eax, 0xfffffffe
cmp dword [ebp + 0x10], 0
mov dword [esp + 0x18], eax
je 0x5596dd
mov ecx, dword [ebp + 8]
cmp ecx, dword [ebp + 0x24]
mov ecx, 1
cmovge eax, ecx
mov dword [esp + 0x18], eax
cmp dword [esp + 0x1c], 0
je 0x5596fc
mov edx, dword [esp + 8]
mov ecx, dword [ebp + 0xc]
push esi
push dword [esp + 0x50]
call fcn.0055c910
add esp, 8
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x30]
mov ecx, dword [eax + 0x14]
mov edx, dword [eax + 0x1c]
bsr eax, edx
shl ecx, 3
mov dword [esp + 0x44], ecx
lea ecx, [eax - 0xf]
shr edx, cl
lea eax, [eax*2 + 2]
imul edx, edx
shr edx, 0xf
mov ecx, edx
shr ecx, 0x10
shr edx, cl
or eax, ecx
imul edx, edx
add eax, eax
shr edx, 0xf
mov ecx, edx
shr ecx, 0x10
shr edx, cl
or eax, ecx
imul edx, edx
add eax, eax
shr edx, 0x1f
or edx, eax
sub dword [esp + 0x44], edx
mov edx, dword [esp + 0x18]
cmp edx, 1
je 0x559b6f
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x559774
mov ecx, edx
imul ecx, dword [esp + 0x24]
add ecx, 0x2000
sar ecx, 0xe
mov dword [esp + 0x24], ecx
jmp 0x559778
mov ecx, dword [esp + 0x24]
cmp dword [ebp + 0x10], 0
je 0x5598f5
cmp esi, 2
jle 0x5598f5
mov eax, edx
cdq
sub eax, edx
mov edx, eax
sar edx, 1
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x4c], edx
lea eax, [edx + 1]
lea eax, [eax + eax*2]
lea edi, [eax + edx]
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x2c]
je 0x559825
sub eax, edx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], esi
cmp ecx, edx
jg 0x5597c6
lea edx, [ecx + ecx*2]
lea ecx, [edx + 3]
jmp 0x5597cb
add ecx, eax
lea edx, [ecx - 1]
mov eax, dword [ebp + 0x38]
push dword [esp + 0x3c]
mov dword [ebp + 0x38], eax
mov eax, dword [ebp + 0x20]
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
push ecx
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x28], eax
call fcn.0054cdb0
jmp 0x5598d2
mov edx, dword [esp + 0x3c]
mov ecx, dword [ebp + 0x30]
call fcn.00553d60
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x54], eax
lea ecx, [edx + 1]
lea ecx, [ecx + ecx*2]
cmp eax, ecx
jge 0x559859
mov eax, 0x55555556
imul dword [esp + 0x54]
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x4c]
jmp 0x55985e
sub eax, ecx
inc eax
add eax, edx
sub ecx, edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], esi
cmp eax, edx
jg 0x559878
lea edx, [eax + eax*2]
lea ecx, [edx + 3]
jmp 0x55987d
add ecx, eax
lea edx, [ecx - 1]
mov eax, dword [ebp + 0x38]
push dword [esp + 0x3c]
mov dword [ebp + 0x38], eax
mov eax, dword [ebp + 0x20]
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
push ecx
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x28], eax
call fcn.00553d90
mov eax, dword [esp + 0x2c]
add esp, 8
shl eax, 0xe
cdq
idiv dword [esp + 0x18]
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x24], eax
je 0x559c77
jmp 0x559ace
mov edx, dword [esp + 0xc]
cmp edx, 1
jg 0x559aa3
cmp dword [ebp + 0x10], 0
jne 0x559aa3
mov edi, dword [esp + 0x18]
sar edi, 1
mov dword [esp + 0x3c], edi
inc edi
mov dword [esp + 0x4c], edi
imul edi, edi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x2c]
test eax, eax
je 0x559a05
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], esi
cmp ecx, dword [esp + 0x3c]
jg 0x559973
lea eax, [ecx + 1]
mov dword [esp + 0xc], edx
imul eax, ecx
sar eax, 1
inc ecx
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0x38], eax
mov eax, dword [ebp + 0x20]
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
jmp 0x5599bd
mov edx, dword [esp + 0x18]
sub edx, ecx
lea eax, [edx + 1]
lea ecx, [edx + 2]
imul ecx, eax
mov eax, dword [esp + 0x38]
sar ecx, 1
sub eax, ecx
lea ecx, [edx + 1]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0x38], eax
mov eax, dword [ebp + 0x20]
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x4c]
push dword [esp + 0x38]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
mov dword [ebp + 0x28], eax
lea eax, [ecx + edx]
mov ecx, dword [ebp + 0x30]
push eax
call fcn.0054cdb0
mov eax, dword [esp + 0x2c]
add esp, 8
shl eax, 0xe
cdq
idiv dword [esp + 0x18]
mov dword [esp + 0x24], eax
jmp 0x559c77
mov edx, dword [esp + 0x38]
mov ecx, dword [ebp + 0x30]
call fcn.00553d60
mov edx, eax
mov eax, dword [esp + 0x4c]
imul eax, dword [esp + 0x3c]
sar eax, 1
cmp edx, eax
jge 0x559a41
lea ecx, [edx*8 + 1]
call fcn.00564450
dec eax
shr eax, 1
mov dword [esp + 0x4c], eax
lea ecx, [eax + 1]
mov edx, ecx
imul edx, eax
sar edx, 1
jmp 0x559a7b
mov ecx, dword [esp + 0x38]
sub ecx, edx
lea ecx, [ecx*8 - 7]
call fcn.00564450
mov edx, dword [esp + 0x18]
lea ecx, [edx*2 + 2]
sub ecx, eax
mov eax, edx
mov edx, dword [esp + 0x38]
shr ecx, 1
sub eax, ecx
mov dword [esp + 0x4c], ecx
lea ecx, [eax + 1]
add eax, 2
imul eax, ecx
sar eax, 1
sub edx, eax
push dword [esp + 0x38]
lea eax, [edx + ecx]
mov ecx, dword [ebp + 0x30]
push eax
call fcn.00553d90
mov eax, dword [esp + 0x54]
add esp, 8
shl eax, 0xe
cdq
idiv dword [esp + 0x18]
mov dword [esp + 0x24], eax
jmp 0x559c77
mov edx, dword [esp + 0x18]
inc edx
test eax, eax
je 0x559b56
push edx
mov edx, ecx
mov ecx, dword [ebp + 0x30]
call fcn.0054ce90
mov eax, dword [esp + 0x28]
add esp, 4
shl eax, 0xe
cdq
idiv dword [esp + 0x18]
mov dword [esp + 0x24], eax
cmp dword [ebp + 0x10], 0
je 0x559c77
test eax, eax
jne 0x559afb
mov edx, dword [ebp + 0xc]
mov ecx, dword [esp + 0x30]
push esi
push dword [ebp + 8]
push dword [ebp + 0x40]
push dword [esp + 0x14]
call fcn.00558670
add esp, 0x10
jmp 0x559c77
test esi, esi
jle 0x559c77
mov edx, dword [ebp + 0xc]
mov eax, esi
mov ecx, dword [esp + 8]
sub edx, ecx
movss xmm3, dword [0x5f4600]
jmp 0x559b20
movss xmm2, dword [edx + ecx]
movss xmm1, dword [ecx]
movaps xmm0, xmm2
addss xmm0, xmm1
mulss xmm2, xmm3
mulss xmm1, xmm3
mulss xmm0, xmm3
subss xmm1, xmm2
movss dword [edx + ecx], xmm0
movss dword [ecx], xmm1
add ecx, 4
sub eax, 1
jne 0x559b20
jmp 0x559c77
mov ecx, dword [ebp + 0x30]
call fcn.00553e70
shl eax, 0xe
cdq
idiv dword [esp + 0x18]
mov dword [esp + 0x24], eax
jmp 0x559c77
cmp dword [ebp + 0x10], 0
je 0x559c77
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x559c32
xor ecx, ecx
cmp dword [esp + 0x24], 0x2000
setg cl
mov dword [esp + 0x40], ecx
jle 0x559c14
mov eax, dword [esp + 8]
xor edx, edx
movss xmm1, dword [0x5f4820]
cmp esi, 4
jl 0x559bfe
lea edx, [esi - 4]
shr edx, 2
lea ecx, [eax + 8]
inc edx
mov dword [esp + 0x4c], edx
shl edx, 2
sub dword [esp + 0x4c], 1
lea ecx, [ecx + 0x10]
movss xmm0, dword [ecx - 0x18]
xorps xmm0, xmm1
movss dword [ecx - 0x18], xmm0
movss xmm0, dword [ecx - 0x14]
xorps xmm0, xmm1
movss dword [ecx - 0x14], xmm0
movss xmm0, dword [ecx - 0x10]
xorps xmm0, xmm1
movss dword [ecx - 0x10], xmm0
movss xmm0, dword [ecx - 0xc]
xorps xmm0, xmm1
movss dword [ecx - 0xc], xmm0
jne 0x559bc0
cmp edx, esi
jge 0x559c14
movss xmm0, dword [eax + edx*4]
xorps xmm0, xmm1
movss dword [eax + edx*4], xmm0
inc edx
cmp edx, esi
jl 0x559c02
mov edx, dword [ebp + 0xc]
mov ecx, dword [esp + 0x30]
push esi
push dword [ebp + 8]
push dword [ebp + 0x40]
push dword [esp + 0x14]
call fcn.00558670
mov ecx, dword [esp + 0x2c]
add esp, 0x10
cmp dword [ebp + 0x18], 0x10
jle 0x559c67
mov eax, dword [ebp + 0x34]
cmp dword [eax], 0x10
jle 0x559c67
test ecx, ecx
mov ecx, dword [ebp + 0x30]
je 0x559c57
mov edx, dword [esp + 0x40]
push 2
call fcn.0054ce00
add esp, 4
jmp 0x559c6f
mov edx, 2
call fcn.00553dd0
mov dword [esp + 0x40], eax
jmp 0x559c6f
mov dword [esp + 0x40], 0
mov dword [esp + 0x24], 0
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x58], edi
mov ecx, dword [eax + 0x14]
mov edx, dword [eax + 0x1c]
bsr eax, edx
shl ecx, 3
mov dword [esp + 0x3c], ecx
lea ecx, [eax - 0xf]
shr edx, cl
lea eax, [eax*2 + 2]
imul edx, edx
shr edx, 0xf
mov ecx, edx
shr ecx, 0x10
shr edx, cl
or eax, ecx
imul edx, edx
add eax, eax
shr edx, 0xf
mov ecx, edx
shr ecx, 0x10
shr edx, cl
or eax, ecx
imul edx, edx
add eax, eax
shr edx, 0x1f
or edx, eax
mov eax, dword [esp + 0x3c]
sub eax, edx
mov edx, dword [esp + 0x24]
sub eax, dword [esp + 0x44]
sub dword [ebp + 0x18], eax
mov dword [esp + 0x3c], eax
test edx, edx
jne 0x559d03
mov ecx, dword [ebp + 0x20]
mov eax, 1
shl eax, cl
dec eax
mov dword [esp + 0x38], 0x7fff
mov dword [esp + 0x44], edx
and edi, eax
mov dword [esp + 0x18], 0xffffc000
jmp 0x559e93
cmp edx, 0x4000
jne 0x559d33
mov ecx, dword [ebp + 0x20]
mov eax, 1
shl eax, cl
dec eax
mov dword [esp + 0x38], 0
shl eax, cl
mov dword [esp + 0x44], 0x7fff
and edi, eax
mov dword [esp + 0x18], edx
jmp 0x559e93
movzx edi, dx
mov ecx, 0x4000
movsx eax, di
imul eax, eax
add eax, 0x1000
sar eax, 0xd
movzx esi, ax
movsx edx, si
imul eax, edx, 0x272
sub ecx, eax
sar ecx, 0xf
add ecx, 0x2055
movsx eax, cx
mov ecx, 0x4000
imul eax, edx
add eax, 0x4000
sar eax, 0xf
sub eax, 0x1de3
cwde
imul eax, edx
add eax, 0x4000
sar eax, 0xf
sub eax, esi
add eax, 0xffff8000
mov dword [esp + 0x54], eax
cwde
mov dword [esp + 0x38], eax
mov eax, ecx
sub eax, edi
cwde
imul eax, eax
add eax, 0x1000
sar eax, 0xd
movzx esi, ax
movsx edx, si
imul eax, edx, 0x272
sub ecx, eax
sar ecx, 0xf
add ecx, 0x2055
movsx eax, cx
imul eax, edx
add eax, 0x4000
sar eax, 0xf
sub eax, 0x1de3
cwde
imul edx, eax
mov eax, dword [esp + 0x38]
add edx, 0x4000
sar edx, 0xf
sub edx, esi
add edx, 0xffff8000
movsx ecx, dx
bsr edi, ecx
bsr esi, eax
mov dword [esp + 0x44], ecx
mov eax, 0xf
inc esi
mov ecx, eax
sub ecx, esi
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x54]
inc edi
shl si, cl
sub eax, edi
mov ecx, eax
movsx esi, si
shl dx, cl
mov ecx, 0x4000
movsx edx, dx
imul eax, edx, 0xa25
sub ecx, eax
imul eax, esi, 0xa25
sar ecx, 0xf
add ecx, 0x1efc
movsx ecx, cx
imul ecx, edx
mov edx, 0x4000
sub edx, eax
add ecx, 0x4000
sar ecx, 0xf
sar edx, 0xf
sub edi, dword [esp + 0x50]
add edx, 0x1efc
movsx eax, dx
imul eax, esi
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
shl edi, 0xb
add eax, 0x4000
sar eax, 0xf
sub ecx, eax
mov eax, esi
add ecx, edi
shl eax, 7
mov edi, dword [esp + 0x2c]
add eax, 0xffffff80
movsx ecx, cx
cwde
imul ecx, eax
add ecx, 0x4000
sar ecx, 0xf
mov dword [esp + 0x18], ecx
mov eax, dword [ebp + 0x10]
cvtsi2ss xmm1, dword [esp + 0x38]
cvtsi2ss xmm2, dword [esp + 0x44]
mulss xmm1, dword [0x5f452c]
mulss xmm2, dword [0x5f452c]
movss dword [esp + 0x4c], xmm1
movss dword [esp + 0x54], xmm1
movss dword [esp + 0x2c], xmm2
cmp esi, 2
jne 0x55a0b7
test eax, eax
je 0x55a0b7
mov dword [esp + 0x34], 0
test edx, edx
je 0x559f86
cmp edx, 0x4000
je 0x559f86
mov ecx, dword [ebp + 0x34]
mov eax, 0xfffffff8
sub eax, dword [esp + 0x3c]
add dword [ebp + 0x18], 0xfffffff8
mov edi, dword [ebp + 0xc]
add dword [ecx], eax
cmp edx, 0x2000
mov eax, dword [esp + 0x28]
mov ecx, edi
cmovg ecx, eax
cmovg eax, edi
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x38], ecx
mov dword [esp + 0x28], eax
je 0x559f65
movss xmm0, dword [ecx + 4]
movss xmm1, dword [eax + 4]
mulss xmm0, dword [eax]
mulss xmm1, dword [ecx]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x559f4a
lea eax, [esi - 1]
jmp 0x559f4c
xor eax, eax
mov ecx, dword [ebp + 0x30]
mov edx, eax
push 1
mov dword [esp + 0x38], eax
call fcn.0054cf60
mov ecx, dword [esp + 0x3c]
add esp, 4
jmp 0x559fac
mov ecx, dword [ebp + 0x30]
mov edx, 1
call fcn.00553f70
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x18], eax
mov eax, dword [esp + 0x28]
jmp 0x559fa4
mov eax, dword [ebp + 0x34]
mov ecx, dword [esp + 0x3c]
mov edi, dword [ebp + 0xc]
sub dword [eax], ecx
cmp edx, 0x2000
mov eax, dword [esp + 8]
mov ecx, edi
cmovg ecx, eax
cmovg eax, edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], ecx
push dword [esp + 0x58]
fld dword [ebp + 0x4c]
mov edx, 1
push dword [ebp + 0x50]
mov eax, dword [esp + 0x3c]
push ecx
fstp dword [esp]
push dword [ebp + 0x48]
add eax, eax
push dword [ebp + 0x44]
sub edx, eax
mov eax, dword [ebp + 0x3c]
push 0
push eax
push dword [ebp + 0x38]
mov dword [esp + 0x74], edx
push dword [ebp + 0x34]
mov edx, dword [esp + 0x54]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push esi
push 0
push ecx
push dword [ebp + 8]
mov ecx, dword [esp + 0x6c]
call fcn.00559140
mov edx, dword [esp + 0xa4]
add esp, 0x50
mov ecx, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
neg ecx
cmp dword [esp + 0x1c], 0
cvtsi2ss xmm0, ecx
mov ecx, dword [esp + 0x38]
mulss xmm0, dword [ecx + 4]
movss dword [eax], xmm0
cvtsi2ss xmm0, edx
mulss xmm0, dword [ecx]
movss dword [eax + 4], xmm0
jne 0x55a442
movss xmm1, dword [esp + 0x4c]
mov eax, dword [esp + 8]
movaps xmm0, xmm1
mulss xmm0, dword [edi]
mulss xmm1, dword [edi + 4]
movss dword [edi], xmm0
movss xmm0, dword [esp + 0x2c]
movss dword [edi + 4], xmm1
movaps xmm2, xmm0
mulss xmm0, dword [eax + 4]
mulss xmm2, dword [eax]
movss dword [eax + 4], xmm0
movss dword [eax], xmm2
movss xmm1, dword [edi]
movaps xmm0, xmm1
subss xmm0, xmm2
movss dword [edi], xmm0
addss xmm1, dword [eax]
movss dword [eax], xmm1
movss xmm1, dword [edi + 4]
movaps xmm0, xmm1
subss xmm0, dword [eax + 4]
movss dword [edi + 4], xmm0
addss xmm1, dword [eax + 4]
movss dword [eax + 4], xmm1
jmp 0x55a3c4
cmp dword [esp + 0xc], 1
mov dword [esp + 0x44], 0
jle 0x55a10e
test eax, eax
jne 0x55a10e
test edx, 0x3fff
je 0x55a10e
cmp edx, 0x2000
jle 0x55a0ee
mov edx, dword [esp + 0x18]
mov ecx, 4
sub ecx, dword [ebp + 0x38]
mov eax, edx
sar eax, cl
sub edx, eax
jmp 0x55a112
mov ecx, 5
lea eax, [esi*8]
sub ecx, dword [ebp + 0x38]
sar eax, cl
xor ecx, ecx
add eax, dword [esp + 0x18]
test eax, eax
mov edx, eax
cmovg edx, ecx
jmp 0x55a112
mov edx, dword [esp + 0x18]
mov eax, dword [ebp + 0x18]
sub eax, edx
cdq
sub eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 1
mov ecx, edx
cmp edx, eax
cmovge ecx, eax
test ecx, ecx
jns 0x55a12e
xor eax, eax
jmp 0x55a133
cmp edx, eax
cmovl eax, edx
mov ecx, dword [ebp + 0x2c]
sub edx, eax
mov dword [ebp + 0x18], edx
mov edx, dword [ebp + 0x34]
mov dword [esp + 0x38], eax
mov eax, dword [edx]
sub eax, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
mov dword [edx], eax
test ecx, ecx
je 0x55a15f
cmp dword [ebp + 0x10], 0
jne 0x55a15f
lea eax, [ecx + esi*4]
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0x44]
xor esi, esi
inc eax
cmp dword [ebp + 0x10], esi
cmove esi, eax
mov eax, dword [ebp + 0x3c]
mov dword [esp + 0x3c], esi
xor esi, esi
cmp dword [ebp + 0x10], esi
cmove eax, esi
mov esi, dword [esp + 0x34]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x38]
cmp eax, dword [ebp + 0x18]
jl 0x55a28a
cmp dword [ebp + 0x10], 0
je 0x55a19f
mov dword [esp + 0x4c], 0x3f800000
jmp 0x55a1aa
mulss xmm1, dword [ebp + 0x4c]
movss dword [esp + 0x4c], xmm1
fld dword [esp + 0x4c]
push edi
push dword [ebp + 0x50]
push ecx
fstp dword [esp]
push dword [ebp + 0x48]
push dword [esp + 0x4c]
push 0
push dword [esp + 0x68]
push dword [ebp + 0x38]
push edx
push dword [ebp + 0x30]
mov edx, dword [esp + 0x58]
push ecx
push dword [ebp + 0x28]
mov ecx, dword [esp + 0x4c]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push eax
push esi
push 0
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00559140
mov edx, dword [ebp + 0x34]
add esp, 0x50
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x28]
add eax, dword [edx]
cmp eax, 0x18
jle 0x55a219
cmp dword [esp + 0x24], 0
je 0x55a219
mov ecx, dword [ebp + 0x18]
add ecx, 0xffffffe8
add ecx, eax
mov dword [ebp + 0x18], ecx
mov eax, dword [ebp + 0x20]
mov ecx, eax
movss xmm0, dword [esp + 0x2c]
mulss xmm0, dword [ebp + 0x4c]
sar edi, cl
push edi
push 0
push ecx
movss dword [esp], xmm0
push dword [ebp + 0x48]
mov ecx, dword [esp + 0x2c]
push dword [esp + 0x4c]
push 0
push 0
push dword [ebp + 0x38]
push edx
push dword [ebp + 0x30]
mov edx, dword [esp + 0x58]
push dword [esp + 0x6c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push esi
push 0
push dword [esp + 0x50]
push dword [ebp + 8]
call fcn.00559140
mov ecx, dword [ebp + 0x10]
add esp, 0x50
mov edx, dword [esp + 0xc]
neg ecx
sbb ecx, ecx
sar edx, 1
neg ecx
dec ecx
and ecx, edx
shl eax, cl
jmp 0x55a384
mov ecx, dword [ebp + 0x20]
mov eax, edi
mulss xmm2, dword [ebp + 0x4c]
sar eax, cl
push eax
push 0
push ecx
movss dword [esp], xmm2
push dword [ebp + 0x48]
push dword [esp + 0x4c]
push 0
push 0
push dword [ebp + 0x38]
push edx
push dword [ebp + 0x30]
mov edx, dword [esp + 0x58]
push dword [esp + 0x6c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push ecx
push dword [ebp + 0x1c]
mov ecx, dword [esp + 0x58]
push dword [ebp + 0x18]
push esi
push 0
push dword [esp + 0x50]
push dword [ebp + 8]
call fcn.00559140
mov ecx, dword [ebp + 0x10]
add esp, 0x50
neg ecx
mov edx, eax
mov eax, dword [esp + 0xc]
sbb ecx, ecx
sar eax, 1
neg ecx
dec ecx
and ecx, eax
mov eax, dword [ebp + 0x34]
shl edx, cl
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], edx
mov edx, dword [ebp + 0x18]
sub edx, dword [esp + 0x28]
add edx, dword [eax]
cmp edx, 0x18
jle 0x55a31a
cmp dword [esp + 0x24], 0x4000
je 0x55a31a
add ecx, 0xffffffe8
add ecx, edx
cmp dword [ebp + 0x10], 0
je 0x55a32a
mov dword [esp + 0x4c], 0x3f800000
jmp 0x55a33b
movss xmm1, dword [esp + 0x4c]
mulss xmm1, dword [ebp + 0x4c]
movss dword [esp + 0x4c], xmm1
fld dword [esp + 0x4c]
push edi
push dword [ebp + 0x50]
mov edx, dword [esp + 0x38]
push ecx
fstp dword [esp]
push dword [ebp + 0x48]
push dword [esp + 0x4c]
push 0
push dword [esp + 0x68]
push dword [ebp + 0x38]
push eax
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push ecx
mov ecx, dword [esp + 0x5c]
push esi
push 0
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00559140
add esp, 0x50
or dword [esp + 0x18], eax
cmp dword [esp + 0x1c], 0
mov eax, dword [esp + 0x18]
jne 0x55a9be
mov edi, dword [ebp + 0xc]
cmp dword [ebp + 0x10], 0
je 0x55a80d
cmp esi, 2
je 0x55a3c0
fld dword [esp + 0x54]
mov edx, dword [esp + 8]
push esi
push ecx
mov ecx, edi
fstp dword [esp]
call fcn.005587a0
add esp, 8
mov eax, dword [esp + 8]
cmp dword [esp + 0x40], 0
je 0x55a442
movss xmm1, dword [0x5f4820]
xor edx, edx
cmp esi, 4
jl 0x55a42c
lea edi, [esi - 4]
shr edi, 2
lea ecx, [eax + 8]
inc edi
lea edx, [edi*4]
jmp 0x55a3f0
movss xmm0, dword [ecx - 8]
lea ecx, [ecx + 0x10]
xorps xmm0, xmm1
movss dword [ecx - 0x18], xmm0
movss xmm0, dword [ecx - 0x14]
xorps xmm0, xmm1
movss dword [ecx - 0x14], xmm0
movss xmm0, dword [ecx - 0x10]
xorps xmm0, xmm1
movss dword [ecx - 0x10], xmm0
movss xmm0, dword [ecx - 0xc]
xorps xmm0, xmm1
movss dword [ecx - 0xc], xmm0
sub edi, 1
jne 0x55a3f0
cmp edx, esi
jge 0x55a442
movss xmm0, dword [eax + edx*4]
xorps xmm0, xmm1
movss dword [eax + edx*4], xmm0
inc edx
cmp edx, esi
jl 0x55a430
mov eax, dword [esp + 0x18]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x30]
mov eax, dword [ebp + 0x38]
inc eax
imul eax, dword [edx + 8]
mov ecx, dword [edx + 0x60]
add eax, dword [ebp + 8]
movsx esi, word [ecx + eax*2]
add esi, dword [edx + 0x64]
mov eax, dword [ebp + 0x18]
dec eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x34], eax
movzx ecx, byte [esi]
lea edx, [ecx + 1]
shr edx, 1
mov edi, edx
movzx eax, byte [edx + esi]
cmp eax, dword [esp + 0x34]
cmovl edi, ecx
xor esi, esi
cmp eax, dword [esp + 0x34]
cmovl esi, edx
mov edx, dword [esp + 0x44]
lea eax, [edi + 1]
add eax, esi
shr eax, 1
mov dword [esp + 0x3c], eax
movzx eax, byte [eax + edx]
cmp eax, dword [esp + 0x34]
jl 0x55a4ae
mov eax, dword [esp + 0x3c]
jmp 0x55a4b8
mov esi, dword [esp + 0x3c]
mov eax, edi
mov dword [esp + 0x3c], edi
lea ecx, [eax + 1]
add ecx, esi
shr ecx, 1
mov edi, ecx
movzx eax, byte [ecx + edx]
cmp eax, dword [esp + 0x34]
cmovl edi, dword [esp + 0x3c]
cmovl esi, ecx
mov ecx, edi
mov dword [esp + 0x50], edi
inc ecx
add ecx, esi
sar ecx, 1
mov dword [esp + 0x4c], ecx
movzx eax, byte [ecx + edx]
cmp eax, dword [esp + 0x34]
jge 0x55a4f2
mov esi, ecx
mov ecx, edi
mov dword [esp + 0x4c], ecx
inc ecx
add ecx, esi
sar ecx, 1
mov edi, ecx
movzx eax, byte [ecx + edx]
cmp eax, dword [esp + 0x34]
cmovl edi, dword [esp + 0x4c]
cmovl esi, ecx
mov ecx, esi
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x34]
lea eax, [ecx + 1]
add eax, edi
sar eax, 1
mov dword [esp + 0x3c], eax
movzx eax, byte [eax + edx]
cmp eax, esi
jl 0x55a52c
mov eax, dword [esp + 0x3c]
jmp 0x55a536
mov ecx, dword [esp + 0x3c]
mov eax, edi
mov dword [esp + 0x3c], edi
test ecx, ecx
jne 0x55a53f
or edi, 0xffffffff
jmp 0x55a543
movzx edi, byte [ecx + edx]
movzx eax, byte [eax + edx]
sub eax, esi
sub esi, edi
cmp esi, eax
cmovg ecx, dword [esp + 0x3c]
test ecx, ecx
jne 0x55a55a
xor eax, eax
jmp 0x55a55f
movzx eax, byte [ecx + edx]
inc eax
mov esi, dword [ebp + 0x34]
mov edi, dword [esp + 0x2c]
mov edx, dword [esi]
sub edx, eax
mov dword [esi], edx
mov esi, dword [ebp + 0x14]
mov dword [esp + 0x58], edx
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], edx
jns 0x55a5b6
mov edi, dword [esp + 0x58]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x44]
mov dword [esp + 8], edx
mov edx, dword [ebp + 0x34]
nop
test ecx, ecx
jle 0x55a5aa
add edi, eax
sub ecx, 1
jne 0x55a59f
xor eax, eax
jmp 0x55a5a4
movzx eax, byte [esi + ecx]
inc eax
sub edi, eax
mov dword [edx], edi
js 0x55a590
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 8]
test ecx, ecx
je 0x55a61a
cmp ecx, 8
jl 0x55a5cf
mov eax, ecx
sar ecx, 3
and eax, 7
dec ecx
add eax, 8
shl eax, cl
mov ecx, eax
cmp dword [esp + 0x1c], 0
mov edx, esi
je 0x55a5f3
push dword [ebp + 0x30]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push ecx
mov ecx, dword [ebp + 0xc]
call fcn.0055c430
add esp, 0x10
pop edi
pop esi
mov esp, ebp
pop ebp
ret
fld dword [ebp + 0x4c]
mov edi, dword [ebp + 0xc]
push ecx
fstp dword [esp]
push dword [ebp + 0x30]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push ecx
mov ecx, edi
call fcn.0055c760
add esp, 0x14
mov dword [esp + 0x18], eax
jmp 0x55a39a
cmp dword [esp + 0x1c], 0
jne 0x55a9bc
mov ecx, dword [ebp + 0x20]
mov eax, 1
shl eax, cl
dec eax
and edi, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x2c], edi
jne 0x55a652
xor eax, eax
test esi, esi
jle 0x55a397
mov edi, dword [ebp + 0xc]
mov ecx, esi
rep stosd dword es:[edi], eax
jmp 0x55a397
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
jne 0x55a73b
mov edx, dword [ebp + 0x48]
xor edi, edi
cmp esi, 4
jl 0x55a700
mov edi, dword [ebp + 0xc]
lea eax, [esi - 4]
shr eax, 2
add edi, 8
inc eax
mov dword [esp + 0x58], eax
mov ecx, eax
shl eax, 2
mov dword [esp + 0x50], eax
jmp 0x55a690
imul eax, dword [edx], 0x19660d
lea edi, [edi + 0x10]
add eax, 0x3c6ef35f
mov dword [edx], eax
sar eax, 0x14
cvtsi2ss xmm0, eax
movss dword [edi - 0x18], xmm0
imul eax, dword [edx], 0x19660d
add eax, 0x3c6ef35f
mov dword [edx], eax
sar eax, 0x14
cvtsi2ss xmm0, eax
movss dword [edi - 0x14], xmm0
imul eax, dword [edx], 0x19660d
add eax, 0x3c6ef35f
mov dword [edx], eax
sar eax, 0x14
cvtsi2ss xmm0, eax
movss dword [edi - 0x10], xmm0
imul eax, dword [edx], 0x19660d
add eax, 0x3c6ef35f
mov dword [edx], eax
sar eax, 0x14
cvtsi2ss xmm0, eax
movss dword [edi - 0xc], xmm0
sub ecx, 1
jne 0x55a690
mov edi, dword [esp + 0x50]
mov ecx, dword [ebp + 0xc]
cmp edi, esi
jge 0x55a72e
jmp 0x55a710
imul eax, dword [edx], 0x19660d
add eax, 0x3c6ef35f
mov dword [edx], eax
sar eax, 0x14
cvtsi2ss xmm0, eax
movss dword [ecx + edi*4], xmm0
inc edi
cmp edi, esi
jl 0x55a710
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x18], eax
jmp 0x55a7ee
test esi, esi
jle 0x55a7ea
mov eax, dword [ebp + 0xc]
sub ecx, eax
movss xmm2, dword [0x5f455c]
movss xmm1, dword [0x5f47b4]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x50], eax
mov dword [ebp + 0x2c], ecx
mov dword [esp + 0x4c], esi
jmp 0x55a770
mov eax, dword [esp + 0x14]
movaps xmm0, xmm2
mov ecx, dword [ebp + 0x48]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x48]
imul eax, dword [eax], 0x19660d
add eax, 0x3c6ef35f
mov dword [ecx], eax
mov ecx, dword [ebp + 0x2c]
test eax, 0x8000
jne 0x55a7ab
movaps xmm0, xmm1
mov eax, dword [esp + 0x50]
addss xmm0, dword [ecx + eax]
movss dword [eax], xmm0
add eax, 4
sub dword [esp + 0x4c], 1
mov dword [esp + 0x50], eax
jne 0x55a770
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 8], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edi
fld dword [ebp + 0x4c]
mov edx, esi
mov edi, dword [ebp + 0xc]
push ecx
mov ecx, edi
fstp dword [esp]
call fcn.0055c810
mov eax, dword [esp + 0x1c]
add esp, 4
jmp 0x55a39a
cmp dword [ebp + 0x44], 0
jne 0x55a9be
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
cmp ecx, 1
jle 0x55a843
push dword [esp + 0x48]
mov eax, ecx
mov edx, esi
mov ecx, dword [esp + 0x18]
shl eax, cl
sar edx, cl
mov ecx, edi
push eax
call fcn.00558e00
mov ecx, dword [esp + 0x14]
add esp, 8
cmp dword [esp + 0x20], 0
jle 0x55a87e
lea ebx, [ebx]
mov edx, dword [esp + 0x18]
add esi, esi
sar ecx, 1
mov eax, edx
shr eax, cl
or edx, eax
mov dword [esp + 0xc], ecx
mov dword [esp + 0x18], edx
mov edx, esi
push ecx
mov ecx, edi
call fcn.005590b0
mov ecx, dword [esp + 0x10]
add esp, 4
sub dword [esp + 0x20], 1
jne 0x55a850
mov eax, dword [esp + 0x14]
mov esi, dword [ebp + 0x14]
mov dword [esp + 0x48], 0
test eax, eax
jle 0x55a8dd
mov ecx, 1
mov dword [esp + 0x54], ecx
lea ebx, [ebx]
mov eax, dword [esp + 0x18]
mov edx, esi
push ecx
mov ecx, dword [esp + 0x4c]
sar edx, cl
mov ecx, edi
movzx eax, byte [eax + 0x5e4440]
mov dword [esp + 0x1c], eax
call fcn.005590b0
mov edx, dword [esp + 0x4c]
add esp, 4
mov ecx, dword [esp + 0x54]
inc edx
mov eax, dword [esp + 0x14]
rol ecx, 1
mov dword [esp + 0x48], edx
mov dword [esp + 0x54], ecx
cmp edx, eax
jl 0x55a8a0
mov ecx, eax
mov eax, dword [esp + 0xc]
shl eax, cl
mov ecx, dword [ebp + 0x3c]
mov dword [esp + 0xc], eax
test ecx, ecx
je 0x55a9a6
fild dword [esp + 0x5c]
xor edx, edx
fsqrt
fstp dword [esp + 0x5c]
movss xmm1, dword [esp + 0x5c]
cmp esi, 4
jl 0x55a97b
lea eax, [esi - 4]
add ecx, 4
shr eax, 2
lea edx, [edi + 0xc]
sub edi, dword [ebp + 0x3c]
inc eax
mov dword [esp + 0x54], eax
shl eax, 2
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xc]
lea ebx, [ebx]
sub dword [esp + 0x54], 1
lea ecx, [ecx + 0x10]
movaps xmm0, xmm1
lea edx, [edx + 0x10]
mulss xmm0, dword [edx - 0x1c]
movss dword [ecx - 0x14], xmm0
movaps xmm0, xmm1
mulss xmm0, dword [ecx + edi - 0x10]
movss dword [ecx - 0x10], xmm0
movaps xmm0, xmm1
mulss xmm0, dword [edx - 0x14]
movss dword [ecx - 0xc], xmm0
movaps xmm0, xmm1
mulss xmm0, dword [edx - 0x10]
movss dword [ecx - 8], xmm0
jne 0x55a930
mov edx, dword [esp + 0x5c]
mov ecx, dword [ebp + 0x3c]
jmp 0x55a97d
sub edi, ecx
cmp edx, esi
jge 0x55a9a6
lea ecx, [ecx + edx*4]
sub esi, edx
jmp 0x55a990
lea ecx, [ecx + 4]
movaps xmm0, xmm1
mulss xmm0, dword [edi + ecx - 4]
movss dword [ecx - 4], xmm0
sub esi, 1
jne 0x55a990
mov ecx, eax
mov edx, 1
mov eax, dword [esp + 0x18]
shl edx, cl
dec edx
and eax, edx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret