Function at 0x572760
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x1290
call fcn.00526390
mov dword [esp + 0x24], edx
mov dword [esp + 0x98], ecx
mov esi, dword [ebp + 8]
test esi, esi
je 0x573ecb
mov eax, dword [ebp + 0x10]
not eax
mov dword [esp + 0x94], eax
movsd xmm1, qword [0x8baf80]
mov eax, dword [esp + 0x24]
lea ecx, [eax + 6]
mov dword [esp + 0x9c], ecx
jmp 0x5727c5
mov esi, dword [esp + 0x8c]
mov eax, dword [esp + 0x4c]
sub esi, dword [esp + 0x20]
je 0x573ecb
cmp esi, 0x20000
mov ecx, 0x20000
cmovb ecx, esi
mov edx, eax
lea edi, [eax + ecx]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x20], ecx
cmp ecx, 0x10
mov dword [esp + 0x8c], esi
mov dword [esp + 0x4c], edi
jb 0x573088
mov eax, dword [esp + 0x20]
add eax, 0xfffffffa
lea ecx, [esi - 0x10]
cmp eax, ecx
cmovb ecx, eax
mov esi, dword [esp + 0x58]
add ecx, esi
mov dword [esp + 0x5c], ecx
lea ebx, [esi + 1]
mov eax, dword [esi + 1]
mov ecx, eax
mov edx, 0xa7bd0000
mul edx
mov eax, 0x1e35
imul ecx, eax
add edx, ecx
mov ecx, dword [esi + 5]
mov eax, 0xa7bd0000
imul ecx, eax
add ecx, edx
shr ecx, 0x10
lea eax, [edi - 6]
mov dword [esp + 0x90], eax
mov dword [esp + 0x50], 0xffffffff
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x2c], eax
mov dword [esp + 4], esi
mov esi, ebx
jmp 0x572898
mov eax, dword [edi + 1]
mov ecx, eax
mov esi, 0xa7bd0000
mul esi
mov eax, 0x1e35
imul ecx, eax
add edx, ecx
mov ecx, dword [edi + 5]
imul ecx, esi
add ecx, edx
mov dword [esp + 4], edi
lea esi, [edi + 1]
shr ecx, 0x10
mov eax, dword [esp + 0x50]
neg eax
mov edx, 0x20
mov dword [esp + 0x30], eax
jmp 0x5728c3
test edx, edx
jne 0x5729c1
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x28]
inc edx
mov esi, edi
mov edi, edx
shr edi, 5
add edi, esi
cmp edi, dword [esp + 0x5c]
ja 0x573080
mov dword [esp + 0x70], ecx
mov dword [esp + 0x60], edx
mov eax, dword [edi]
mov ecx, eax
mov edx, 0x1e35
imul ecx, edx
mov dword [esp + 8], esi
mov esi, 0xa7bd0000
mul esi
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, esi
mov esi, dword [esp + 8]
add ecx, edx
shr ecx, 0x10
mov eax, dword [esi]
mov edx, dword [esp + 0x30]
cmp eax, dword [esi + edx]
mov ebx, dword [esp + 0x30]
jne 0x572960
lea eax, [esi + ebx]
movzx edx, byte [esi + 4]
mov dword [esp + 0x18], eax
cmp dl, byte [eax + 4]
jne 0x572960
movzx edx, byte [esi + 5]
cmp dl, byte [esi + ebx + 5]
jne 0x572960
test ebx, ebx
jns 0x572960
mov edx, esi
sub edx, dword [esp + 0x24]
mov eax, dword [ebp + 0x14]
mov ebx, dword [esp + 0x70]
mov dword [eax + ebx*4], edx
mov edx, dword [esp + 0x60]
mov eax, esi
sub eax, dword [esp + 0x18]
cmp eax, 0x3fff0
jg 0x5728c0
jmp 0x5729e0
mov dword [esp + 0x28], ecx
mov eax, dword [ebp + 0x14]
mov ecx, dword [esp + 0x70]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x54], edx
mov eax, esi
mov esi, dword [esp + 0x24]
add edx, esi
mov dword [esp + 0x18], edx
mov edx, eax
sub edx, esi
mov ebx, dword [ebp + 0x14]
mov dword [ebx + ecx*4], edx
mov eax, dword [eax]
xor edx, edx
mov ecx, dword [esp + 0x54]
cmp eax, dword [esi + ecx]
jne 0x5728b0
mov esi, dword [esp + 8]
movzx eax, byte [esi + 4]
xor edx, edx
mov ebx, dword [esp + 0x18]
cmp al, byte [ebx + 4]
jne 0x5728b0
movzx eax, byte [esi + 5]
xor edx, edx
cmp al, byte [ebx + 5]
sete dl
jmp 0x5728b0
mov esi, dword [esp + 8]
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x28]
jmp 0x572945
mov dword [esp + 0x60], eax
lea edx, [esi + 6]
mov ecx, dword [esp + 0x90]
sub ecx, esi
xor edi, edi
cmp ecx, 4
mov eax, esi
mov dword [esp + 8], esi
jge 0x572a10
mov esi, edx
jmp 0x572a3d
lea ebx, [ecx + esi]
add ebx, 2
xor edi, edi
nop dword [eax + eax]
mov eax, dword [edx + edi]
mov esi, dword [esp + 0x18]
cmp eax, dword [esi + edi + 6]
jne 0x572a3a
lea eax, [edx + edi]
add eax, 4
add edi, 4
cmp eax, ebx
jbe 0x572a20
lea esi, [edx + edi]
mov eax, dword [esp + 8]
add eax, ecx
add eax, 6
cmp esi, eax
jae 0x572a74
add ecx, edx
sub ecx, esi
lea edx, [ecx + edi]
nop word cs:[eax + eax]
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + edi + 6]
cmp al, byte [esi]
jne 0x572a74
inc esi
inc edi
dec ecx
jne 0x572a60
mov edi, edx
mov esi, dword [esp + 8]
mov ecx, esi
mov edx, dword [esp + 4]
sub ecx, edx
mov eax, ecx
cmp ecx, 6
mov dword [esp + 0x18], ecx
jb 0x572af3
cmp ecx, 0x81
ja 0x572ac0
lea eax, [ecx - 2]
bsr edx, eax
xor edx, 0xffffffe0
lea ecx, [edx + 0x1f]
mov esi, eax
shr esi, cl
lea edx, [esi + edx*2]
add edx, 0x40
shl esi, cl
mov ecx, dword [esp + 0x18]
sub eax, esi
mov esi, dword [esp + 8]
jmp 0x572aea
cmp ecx, 0x841
ja 0x572bf2
lea eax, [ecx - 0x42]
bsr ecx, eax
mov edx, ecx
xor edx, 0xffffffe0
mov eax, 0xffffffff
shl eax, cl
mov ecx, dword [esp + 0x18]
add edx, 0x2a
add eax, ecx
add eax, 0xffffffbe
shl eax, 8
or eax, edx
mov edx, dword [esp + 4]
lea ebx, [edi + 6]
mov dword [esp + 0x30], ebx
mov ebx, esi
mov esi, ecx
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
push esi
mov esi, ebx
push edx
push dword [esp + 0x34]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, 0x40
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x50]
je 0x572b5d
lea eax, [ecx + 3]
bsr edx, eax
xor edx, 0x1f
mov cl, 0x1e
sub cl, dl
movzx esi, cl
xor ebx, ebx
bt eax, esi
setb bl
lea esi, [ebx + 2]
shl esi, cl
sub eax, esi
mov esi, dword [esp + 8]
add edx, edx
xor edx, 0x3e
shl eax, 8
or eax, edx
add eax, ebx
add eax, 0x4c
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], eax
lea eax, [ecx + 8]
cmp dword [esp + 0x30], 0xb
movsd xmm1, qword [0x8baf80]
ja 0x572b80
lea ecx, [edi + 0x1a]
mov dword [eax], ecx
jmp 0x572c70
cmp dword [esp + 0x30], 0x47
ja 0x572bc0
lea edx, [edi - 2]
bsr esi, edx
xor esi, 0xffffffe0
lea ecx, [esi + 0x1f]
mov ebx, edx
shr ebx, cl
lea esi, [ebx + esi*2]
add esi, 0x5a
shl ebx, cl
sub edx, ebx
shl edx, 8
or edx, esi
mov esi, dword [esp + 8]
mov dword [eax], edx
jmp 0x572c70
cmp dword [esp + 0x30], 0x87
ja 0x572c09
lea eax, [edi - 2]
mov ecx, eax
shr ecx, 5
add ecx, 0x36
and eax, 0x1f
shl eax, 8
or eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], 0x40
add ecx, 0xc
mov eax, ecx
jmp 0x572c70
mov eax, ecx
shl eax, 8
cmp ecx, 0x1841
ja 0x572c35
add eax, 0xfff7be15
jmp 0x572aef
cmp dword [esp + 0x30], 0x847
ja 0x572c4b
lea eax, [edi - 0x42]
bsr ecx, eax
mov eax, ecx
xor eax, 0x1f
mov edx, 0xffffffff
shl edx, cl
lea ecx, [edx + edi]
add ecx, 0xffffffbe
shl ecx, 8
sub ecx, eax
add ecx, 0x53
jmp 0x572c58
cmp ecx, 0x5841
ja 0x573076
add eax, 0xffe7be16
jmp 0x572aef
mov ecx, dword [esp + 0x30]
shl ecx, 8
add ecx, 0xfff7b83f
mov eax, dword [esp + 0x14]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], 0x40
add eax, 0xc
nop dword [eax]
mov ecx, dword [esp + 0x18]
lea edx, [esi + edi]
add edx, 6
add dword [esp + 0x2c], ecx
add eax, 4
mov dword [esp + 0x14], eax
cmp edx, dword [esp + 0x5c]
jae 0x573ec2
mov ecx, dword [edx - 5]
mov dword [esp + 4], edx
mov eax, dword [esp + 4]
mov edi, dword [eax - 1]
mov esi, ecx
mov eax, 0x1e35
imul esi, eax
mov eax, ecx
mov edx, 0xa7bd0000
mul edx
add edx, esi
mov ebx, edi
mov eax, edi
mov esi, 0xa7bd0000
imul eax, esi
add eax, edx
mov edx, dword [esp + 4]
sub edx, dword [esp + 0x24]
mov dword [esp + 8], edx
shr eax, 0x10
shld ebx, ecx, 8
add edx, 0xfffffffb
mov esi, dword [ebp + 0x14]
mov dword [esi + eax*4], edx
mov eax, ecx
shl eax, 8
and eax, 0xffff0000
mov edx, 0x1e35a7bd
mul edx
imul esi, edi, 0x1e35a7bd
imul eax, ebx, 0x1e35a7bd
add eax, edx
mov ebx, dword [esp + 8]
lea edx, [ebx - 4]
shr eax, 0x10
mov edi, dword [ebp + 0x14]
mov dword [edi + eax*4], edx
and ecx, 0xffff0000
mov eax, ecx
mov ecx, 0x1e35a7bd
mul ecx
add esi, edx
lea eax, [ebx - 3]
shr esi, 0x10
mov dword [edi + esi*4], eax
mov eax, dword [esp + 4]
mov ebx, dword [eax - 2]
mov eax, ebx
and eax, 0xffff0000
mul ecx
mov dword [esp + 0x30], edx
mov ecx, ebx
mov eax, 0x1e35
imul ecx, eax
mov eax, ebx
mov edi, 0xa7bd0000
mul edi
add edx, ecx
mov eax, dword [esp + 4]
mov esi, dword [eax + 2]
mov ecx, esi
imul ecx, edi
add ecx, edx
shr ecx, 0x10
imul edi, esi, 0x1e35a7bd
shld esi, ebx, 8
shl ebx, 8
and ebx, 0xffff0000
mov eax, ebx
mov edx, 0x1e35a7bd
mul edx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 8]
lea eax, [edx - 2]
mov ebx, dword [ebp + 0x14]
mov dword [ebx + ecx*4], eax
imul eax, esi, 0x1e35a7bd
add eax, dword [esp + 0x18]
lea ecx, [edx - 1]
mov ebx, edx
shr eax, 0x10
mov edx, dword [ebp + 0x14]
mov dword [edx + eax*4], ecx
add edi, dword [esp + 0x30]
shr edi, 0x10
mov ecx, dword [edx + edi*4]
mov dword [edx + edi*4], ebx
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x24]
lea edx, [eax + ecx]
mov eax, edi
sub eax, edx
cmp eax, 0x3fff0
jg 0x572870
mov esi, dword [edi]
cmp esi, dword [edx]
jne 0x572870
movzx ebx, byte [edi + 4]
cmp bl, byte [edx + 4]
jne 0x572870
movzx ebx, byte [edi + 5]
cmp bl, byte [edx + 5]
jne 0x572870
mov dword [esp + 0x50], eax
add ecx, dword [esp + 0x9c]
lea esi, [edi + 6]
mov edx, dword [esp + 0x90]
sub edx, edi
xor eax, eax
cmp edx, 4
mov dword [esp + 4], edi
jge 0x572e20
mov edi, esi
jmp 0x572e48
add edi, edx
add edi, 2
xor eax, eax
nop word [eax + eax]
mov ebx, dword [esi + eax]
cmp ebx, dword [ecx + eax]
jne 0x572e45
lea ebx, [esi + eax]
add ebx, 4
add eax, 4
cmp ebx, edi
jbe 0x572e30
lea edi, [esi + eax]
mov ebx, dword [esp + 4]
add ebx, edx
add ebx, 6
cmp edi, ebx
jae 0x572e6f
add edx, esi
sub edx, edi
lea esi, [edx + eax]
nop dword [eax]
movzx ebx, byte [ecx + eax]
cmp bl, byte [edi]
jne 0x572e6f
inc edi
inc eax
dec edx
jne 0x572e60
mov eax, esi
mov edi, dword [esp + 4]
lea ecx, [eax + 6]
cmp ecx, 9
ja 0x572e80
lea ecx, [eax + 0x2c]
jmp 0x572ee0
cmp ecx, 0x85
ja 0x572ea8
bsr edx, eax
xor edx, 0xffffffe0
lea ecx, [edx + 0x1f]
mov esi, eax
shr esi, cl
lea edx, [esi + edx*2]
add edx, 0x6a
shl esi, cl
mov ecx, eax
sub ecx, esi
shl ecx, 8
or ecx, edx
jmp 0x572ee0
cmp ecx, 0x845
ja 0x572ed2
lea ecx, [eax - 0x40]
bsr ecx, ecx
mov edx, ecx
xor edx, 0x1f
mov esi, 0xffffffff
shl esi, cl
lea ecx, [esi + eax]
add ecx, 0xffffffc0
shl ecx, 8
sub ecx, edx
add ecx, 0x53
jmp 0x572ee0
shl ecx, 8
add ecx, 0xfff7ba3f
nop dword [eax + eax]
add edi, eax
add edi, 6
mov dword [esp + 4], edi
mov edi, dword [esp + 0x14]
mov dword [edi], ecx
mov eax, dword [esp + 0x50]
add eax, 3
bsr edx, eax
xor edx, 0x1f
mov cl, 0x1e
sub cl, dl
movzx esi, cl
xor ebx, ebx
bt eax, esi
setb bl
lea esi, [ebx + 2]
shl esi, cl
sub eax, esi
add edx, edx
xor edx, 0x3e
shl eax, 8
or eax, edx
add eax, ebx
add eax, 0x4c
mov dword [edi + 4], eax
add edi, 8
mov dword [esp + 0x14], edi
mov edx, dword [esp + 4]
cmp edx, dword [esp + 0x5c]
jae 0x573ec2
mov ecx, dword [edx - 5]
mov eax, dword [esp + 4]
mov edi, dword [eax - 1]
mov esi, ecx
mov eax, 0x1e35
imul esi, eax
mov eax, ecx
mov edx, 0xa7bd0000
mul edx
add edx, esi
mov ebx, edi
mov eax, edi
mov esi, 0xa7bd0000
imul eax, esi
add eax, edx
mov edx, dword [esp + 4]
sub edx, dword [esp + 0x24]
mov dword [esp + 8], edx
shr eax, 0x10
shld ebx, ecx, 8
add edx, 0xfffffffb
mov esi, dword [ebp + 0x14]
mov dword [esi + eax*4], edx
mov eax, ecx
shl eax, 8
and eax, 0xffff0000
mov edx, 0x1e35a7bd
mul edx
imul esi, edi, 0x1e35a7bd
imul eax, ebx, 0x1e35a7bd
add eax, edx
mov ebx, dword [esp + 8]
lea edx, [ebx - 4]
shr eax, 0x10
mov edi, dword [ebp + 0x14]
mov dword [edi + eax*4], edx
and ecx, 0xffff0000
mov eax, ecx
mov ecx, 0x1e35a7bd
mul ecx
add esi, edx
lea eax, [ebx - 3]
shr esi, 0x10
mov dword [edi + esi*4], eax
mov eax, dword [esp + 4]
mov ebx, dword [eax - 2]
mov eax, ebx
and eax, 0xffff0000
mul ecx
mov dword [esp + 0x30], edx
mov ecx, ebx
mov eax, 0x1e35
imul ecx, eax
mov eax, ebx
mov edi, 0xa7bd0000
mul edi
add edx, ecx
mov eax, dword [esp + 4]
mov esi, dword [eax + 2]
mov ecx, esi
imul ecx, edi
add ecx, edx
shr ecx, 0x10
imul edi, esi, 0x1e35a7bd
shld esi, ebx, 8
shl ebx, 8
and ebx, 0xffff0000
mov eax, ebx
mov edx, 0x1e35a7bd
mul edx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 8]
lea eax, [edx - 2]
mov ebx, dword [ebp + 0x14]
mov dword [ebx + ecx*4], eax
imul eax, esi, 0x1e35a7bd
add eax, dword [esp + 0x18]
lea ecx, [edx - 1]
mov ebx, edx
shr eax, 0x10
mov edx, dword [ebp + 0x14]
mov dword [edx + eax*4], ecx
add edi, dword [esp + 0x30]
shr edi, 0x10
mov ecx, dword [edx + edi*4]
mov dword [edx + edi*4], ebx
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x24]
lea edx, [eax + ecx]
mov eax, edi
sub eax, edx
cmp eax, 0x3fff1
jl 0x572dcb
jmp 0x572870
add eax, 0xffa7be17
jmp 0x572aef
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 4]
cmp edx, edi
mov dword [esp + 4], edx
jae 0x5730d0
mov esi, edi
sub esi, edx
mov eax, esi
cmp esi, 6
mov ebx, edx
jb 0x573101
cmp esi, 0x81
ja 0x5730d6
lea eax, [esi - 2]
bsr edx, eax
xor edx, 0xffffffe0
lea ecx, [edx + 0x1f]
mov edi, eax
shr edi, cl
lea edx, [edi + edx*2]
add edx, 0x40
shl edi, cl
sub eax, edi
jmp 0x5730fc
mov esi, dword [esp + 0x2c]
jmp 0x573127
cmp esi, 0x841
ja 0x573e8e
lea eax, [esi - 0x42]
bsr ecx, eax
mov edx, ecx
xor edx, 0xffffffe0
mov eax, 0xffffffff
shl eax, cl
add edx, 0x2a
add eax, esi
add eax, 0xffffffbe
shl eax, 8
or eax, edx
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
add ecx, 4
mov dword [esp + 0x14], ecx
push esi
push ebx
mov edi, dword [esp + 0x34]
push edi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
add esi, edi
movsd xmm1, qword [0x8baf80]
mov eax, esi
sub eax, dword [ebp + 0x10]
movss xmm2, dword [esp + 0x20]
orpd xmm2, xmm1
subsd xmm2, xmm1
mov dword [esp + 0x54], eax
movd xmm0, eax
por xmm0, xmm1
subsd xmm0, xmm1
movapd xmm1, xmm2
mulsd xmm1, qword [0x8baf88]
ucomisd xmm1, xmm0
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x28], esi
ja 0x573540
push 0x400
push 0
lea eax, [esp + 0x88c]
push eax
movapd xmmword [esp + 0x7c], xmm2
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
movapd xmm0, xmmword [esp + 0x70]
mulsd xmm0, qword [0x8baf90]
mulsd xmm0, qword [0x8baf88]
divsd xmm0, qword [0x8baf98]
movapd xmmword [esp + 0x70], xmm0
cmp dword [esp + 0x20], 0
movsd xmm1, qword [0x8baf80]
movdqa xmm2, xmmword [0x8bafa0]
mov edi, dword [esp + 0x58]
je 0x573252
mov esi, dword [esp + 0x20]
lea eax, [esi - 1]
mov ecx, 0x2fa0be83
mul ecx
shr edx, 3
inc edx
mov ecx, edx
and ecx, 3
xor eax, eax
cmp esi, 0x82
jb 0x57322c
and edx, 0xfffffffc
xor eax, eax
nop dword [eax]
movzx esi, byte [edi + eax]
inc dword [esp + esi*4 + 0x884]
movzx esi, byte [edi + eax + 0x2b]
inc dword [esp + esi*4 + 0x884]
movzx esi, byte [edi + eax + 0x56]
inc dword [esp + esi*4 + 0x884]
movzx esi, byte [edi + eax + 0x81]
inc dword [esp + esi*4 + 0x884]
add eax, 0xac
add edx, 0xfffffffc
jne 0x5731f0
test ecx, ecx
je 0x573252
add eax, edi
imul ecx, ecx, 0x2b
xor edx, edx
nop word [eax + eax]
movzx esi, byte [eax + edx]
inc dword [esp + esi*4 + 0x884]
add edx, 0x2b
cmp ecx, edx
jne 0x573240
xor esi, esi
xorps xmm3, xmm3
mov ebx, 0xfffffffe
jmp 0x5732d5
sub esp, 8
movsd qword [esp], xmm6
movsd qword [esp + 0x20], xmm5
movapd xmmword [esp + 0x68], xmm6
call fcn.0058e124
movapd xmm6, xmmword [esp + 0x68]
movsd xmm5, qword [esp + 0x20]
movdqa xmm2, xmmword [0x8bafa0]
movsd xmm1, qword [0x8baf80]
add esp, 8
fstp qword [esp + 0x130]
movsd xmm0, qword [esp + 0x130]
movsd xmm3, qword [esp + 8]
movapd xmm4, xmmword [esp + 0x30]
mulsd xmm4, xmm5
subsd xmm3, xmm4
add esi, edi
mulsd xmm0, xmm6
subsd xmm3, xmm0
add ebx, 2
cmp ebx, 0xfe
jae 0x573390
mov edi, dword [esp + ebx*4 + 0x88c]
cmp edi, 0xff
movsd qword [esp + 8], xmm3
ja 0x573310
mov eax, dword [0x86baec]
movsd xmm5, qword [eax + edi*8]
movd xmm0, edi
por xmm0, xmm2
subsd xmm0, xmm1
movapd xmmword [esp + 0x30], xmm0
jmp 0x573352
movd xmm0, edi
por xmm0, xmm2
subsd xmm0, xmm1
sub esp, 8
movapd xmmword [esp + 0x38], xmm0
movsd qword [esp], xmm0
call fcn.0058e124
movdqa xmm2, xmmword [0x8bafa0]
movsd xmm1, qword [0x8baf80]
add esp, 8
fstp qword [esp + 0x138]
movsd xmm5, qword [esp + 0x138]
add esi, edi
mov edi, dword [esp + ebx*4 + 0x890]
movd xmm6, dword [esp + ebx*4 + 0x890]
por xmm6, xmm2
subsd xmm6, xmm1
cmp edi, 0xff
ja 0x573260
mov eax, dword [0x86baec]
movsd xmm0, qword [eax + edi*8]
jmp 0x5732a8
movd xmm4, esi
por xmm4, xmm2
subsd xmm4, xmm1
test esi, esi
je 0x5733b7
cmp esi, 0xff
mov ebx, dword [ebp + 0xc]
ja 0x5733c2
mov eax, dword [0x86baec]
movsd xmm0, qword [eax + esi*8]
jmp 0x5733fa
mov ebx, dword [ebp + 0xc]
movapd xmm1, xmmword [esp + 0x70]
jmp 0x573408
sub esp, 8
movsd qword [esp], xmm4
movsd qword [esp + 0x10], xmm3
movapd xmmword [esp + 0x38], xmm4
call fcn.0058e124
movapd xmm4, xmmword [esp + 0x38]
movsd xmm3, qword [esp + 0x10]
add esp, 8
fstp qword [esp + 0x128]
movsd xmm0, qword [esp + 0x128]
movapd xmm1, xmmword [esp + 0x70]
mulsd xmm0, xmm4
addsd xmm3, xmm0
maxsd xmm4, xmm3
ucomisd xmm1, xmm4
ja 0x573540
mov edx, dword [ebp + 0x18]
mov ebx, dword [edx]
mov dword [esp + 8], ebx
mov eax, ebx
shr eax, 3
mov esi, dword [ebp + 0x1c]
movzx ecx, byte [esi + eax]
mov dword [esi + eax], ecx
mov dword [esi + eax + 4], 0
lea ecx, [ebx + 1]
mov dword [edx], ecx
xor eax, eax
xor ebx, ebx
mov edi, dword [esp + 0x20]
cmp edi, 0x10001
setae al
setb bl
mov edx, ecx
shr edx, 3
and cl, 7
mov esi, dword [ebp + 0x1c]
movzx esi, byte [esi + edx]
shl eax, cl
or eax, esi
mov ecx, dword [ebp + 0x1c]
mov dword [ecx + edx], eax
mov dword [ecx + edx + 4], 0
mov eax, dword [esp + 8]
add eax, 3
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
lea esi, [edi - 1]
mov edi, eax
shr edi, 3
mov edx, esi
shr edx, 1
and al, 7
mov ecx, eax
xor cl, 0x1f
shr edx, cl
mov ecx, eax
shl esi, cl
mov ecx, dword [ebp + 0x1c]
movzx eax, byte [ecx + edi]
or esi, eax
xor ebx, 5
mov dword [ecx + edi + 4], edx
mov dword [ecx + edi], esi
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 8]
lea eax, [edi + ebx*4 + 3]
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov ecx, eax
shr ecx, 3
mov edx, dword [ebp + 0x1c]
movzx edx, byte [edx + ecx]
and al, 7
bts edx, eax
mov eax, dword [ebp + 0x1c]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], 0
mov edx, eax
lea eax, [edi + ebx*4]
add eax, 0xb
mov edi, dword [ebp + 0x18]
mov ecx, eax
and ecx, 0xfffffff8
mov dword [edi], ecx
shr eax, 3
add eax, edx
mov ebx, dword [esp + 0x20]
push ebx
push dword [esp + 0x5c]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
lea eax, [ebx*8]
add eax, dword [edi]
mov dword [edi], eax
shr eax, 3
mov ecx, dword [ebp + 0x1c]
mov byte [ecx + eax], 0
mov eax, dword [esp + 0x4c]
movsd xmm1, qword [0x8baf80]
sub esi, dword [esp + 0x20]
jne 0x5727c5
jmp 0x573ecb
mov eax, dword [esp + 0x14]
sub eax, ebx
mov dword [esp + 8], eax
mov edx, dword [ebp + 0x18]
mov edi, dword [edx]
mov eax, edi
shr eax, 3
mov esi, dword [ebp + 0x1c]
movzx ecx, byte [esi + eax]
mov dword [esi + eax], ecx
mov dword [esi + eax + 4], 0
lea ecx, [edi + 1]
mov dword [esp + 0x30], edi
mov dword [edx], ecx
xor eax, eax
xor ebx, ebx
mov esi, dword [esp + 0x20]
cmp esi, 0x10001
setae al
setb bl
mov edx, ecx
shr edx, 3
and cl, 7
shl eax, cl
mov ecx, dword [ebp + 0x1c]
movzx ecx, byte [ecx + edx]
or eax, ecx
mov ecx, dword [ebp + 0x1c]
mov dword [ecx + edx], eax
mov dword [ecx + edx + 4], 0
lea eax, [edi + 3]
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
dec esi
mov edi, esi
shr edi, 1
mov edx, eax
and al, 7
mov ecx, eax
xor cl, 0x1f
shr edi, cl
mov ecx, eax
shl esi, cl
shr edx, 3
mov ecx, dword [ebp + 0x1c]
movzx eax, byte [ecx + edx]
or esi, eax
mov dword [ecx + edx + 4], edi
xor ebx, 5
mov edi, ecx
mov dword [ecx + edx], esi
mov edx, dword [esp + 0x30]
lea eax, [edx + ebx*4]
add eax, 3
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
shr eax, 3
movzx ecx, byte [edi + eax]
mov dword [edi + eax], ecx
mov dword [edi + eax + 4], 0
lea eax, [edx + ebx*4]
add eax, 4
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
shr eax, 3
movzx ecx, byte [edi + eax]
mov dword [edi + eax], ecx
mov dword [edi + eax + 4], 0
lea eax, [edx + ebx*4]
add eax, 0x11
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0x18]
mov dword [edi], eax
xorpd xmm0, xmm0
movapd xmmword [esp + 0x2b0], xmm0
movapd xmmword [esp + 0x2a0], xmm0
movapd xmmword [esp + 0x290], xmm0
movapd xmmword [esp + 0x280], xmm0
movapd xmmword [esp + 0x270], xmm0
movapd xmmword [esp + 0x260], xmm0
movapd xmmword [esp + 0x250], xmm0
movapd xmmword [esp + 0x240], xmm0
movapd xmmword [esp + 0x230], xmm0
movapd xmmword [esp + 0x220], xmm0
movapd xmmword [esp + 0x210], xmm0
movapd xmmword [esp + 0x200], xmm0
movapd xmmword [esp + 0x1f0], xmm0
movapd xmmword [esp + 0x1e0], xmm0
movapd xmmword [esp + 0x1d0], xmm0
movapd xmmword [esp + 0x1c0], xmm0
push 0x200
push 0
lea eax, [esp + 0x1094]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
push 0x400
push 0
lea eax, [esp + 0xc94]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
xorpd xmm0, xmm0
movapd xmmword [esp + 0x110], xmm0
movapd xmmword [esp + 0x100], xmm0
movapd xmmword [esp + 0xf0], xmm0
movapd xmmword [esp + 0xe0], xmm0
movapd xmmword [esp + 0xd0], xmm0
movapd xmmword [esp + 0xc0], xmm0
movapd xmmword [esp + 0xb0], xmm0
movapd xmmword [esp + 0xa0], xmm0
lea eax, [esp + 0x800]
movupd xmmword [eax + 0x70], xmm0
movupd xmmword [eax + 0x60], xmm0
movupd xmmword [eax + 0x50], xmm0
movupd xmmword [eax + 0x40], xmm0
movupd xmmword [eax + 0x30], xmm0
movupd xmmword [eax + 0x20], xmm0
movupd xmmword [eax + 0x10], xmm0
movupd xmmword [eax], xmm0
push 0x200
push 0
lea eax, [esp + 0x588]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
cmp dword [esp + 0x28], ebx
mov edi, dword [esp + 0x54]
je 0x573810
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x94]
mov edx, dword [esp + 0x58]
add edx, dword [esp + 0x20]
mov ecx, dword [esp + 4]
cmp ecx, edx
cmova edx, ecx
add edx, eax
sub edx, ecx
mov eax, edi
and eax, 3
xor ecx, ecx
cmp edx, 3
jb 0x5737f6
mov edx, edi
and edx, 0xfffffffc
xor ecx, ecx
nop dword [eax + eax]
movzx esi, byte [ebx + ecx]
inc dword [esp + esi*4 + 0xc8c]
movzx esi, byte [ebx + ecx + 1]
inc dword [esp + esi*4 + 0xc8c]
movzx esi, byte [ebx + ecx + 2]
inc dword [esp + esi*4 + 0xc8c]
movzx esi, byte [ebx + ecx + 3]
inc dword [esp + esi*4 + 0xc8c]
add ecx, 4
cmp edx, ecx
jne 0x5737c0
test eax, eax
je 0x573810
add ecx, ebx
xor edx, edx
nop
movzx esi, byte [ecx + edx]
inc dword [esp + esi*4 + 0xc8c]
inc edx
cmp eax, edx
jne 0x573800
mov esi, dword [esp + 8]
sar esi, 2
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
lea eax, [esp + 0x1094]
push eax
lea eax, [esp + 0x1cc]
push eax
push 8
push edi
lea eax, [esp + 0xca4]
push eax
push dword [esp + 0xb4]
call fcn.005638b0
add esp, 0x20
mov ebx, dword [ebp + 0xc]
cmp dword [esp + 0x14], ebx
mov dword [esp + 0x28], esi
je 0x5738d0
xor eax, eax
cmp esi, 1
je 0x57388e
mov ecx, dword [esp + 0x28]
and ecx, 0xfffffffe
xor eax, eax
nop word cs:[eax + eax]
movzx edx, byte [ebx + eax*4]
inc dword [esp + edx*4 + 0x580]
movzx edx, byte [ebx + eax*4 + 4]
inc dword [esp + edx*4 + 0x580]
add eax, 2
cmp ecx, eax
jne 0x573870
test byte [esp + 8], 4
je 0x5738a0
movzx eax, byte [ebx + eax*4]
inc dword [esp + eax*4 + 0x580]
movq xmm0, qword [esp + 0x584]
psubd xmm0, xmmword [0x8bafc0]
mov ecx, dword [esp + 0x680]
mov eax, dword [esp + 0x6d0]
inc ecx
inc eax
jmp 0x5738e2
mov eax, 1
mov ecx, 1
movdqa xmm0, xmmword [0x8bafb0]
movq qword [esp + 0x584], xmm0
mov dword [esp + 0x680], ecx
mov dword [esp + 0x6d0], eax
push 0x408
push 0
lea eax, [esp + 0x88c]
push eax
mov edi, eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
push 0x280
push 0
lea esi, [esp + 0x308]
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
pxor xmm0, xmm0
movdqa xmmword [esp + 0x1b0], xmm0
movdqa xmmword [esp + 0x1a0], xmm0
movdqa xmmword [esp + 0x190], xmm0
movdqa xmmword [esp + 0x180], xmm0
movdqa xmmword [esp + 0x170], xmm0
movdqa xmmword [esp + 0x160], xmm0
movdqa xmmword [esp + 0x150], xmm0
movdqa xmmword [esp + 0x140], xmm0
lea eax, [esp + 0xa0]
push eax
mov esi, edi
push edi
push 0xf
push 0x40
lea eax, [esp + 0x590]
push eax
call fcn.00717b00
add esp, 0x14
lea edi, [esp + 0xe0]
push edi
push esi
push 0xe
push 0x40
lea eax, [esp + 0x690]
push eax
call fcn.00717b00
add esp, 0x14
movsd xmm0, qword [edi - 0x18]
movsd qword [esp + 0x2d0], xmm0
movups xmm0, xmmword [edi - 0x28]
movaps xmmword [esp + 0x2c0], xmm0
movsd xmm0, qword [esp + 0xa0]
movsd xmm1, qword [esp + 0xa8]
movsd qword [esp + 0x2d8], xmm0
movsd xmm0, qword [esp + 0xd0]
movsd qword [esp + 0x2e0], xmm0
movsd qword [esp + 0x2e8], xmm1
movsd xmm0, qword [esp + 0xd8]
movsd qword [esp + 0x2f0], xmm0
movsd xmm0, qword [esp + 0xb0]
movsd qword [esp + 0x2f8], xmm0
lea eax, [esp + 0x140]
push eax
push 0x40
lea eax, [esp + 0x2c8]
push eax
call fcn.00718920
add esp, 0xc
lea ecx, [esp + 0x170]
movups xmm0, xmmword [ecx]
movaps xmmword [esp + 0x780], xmm0
movups xmm0, xmmword [ecx + 0x20]
lea eax, [esp + 0x800]
movups xmmword [eax - 0x70], xmm0
movups xmm0, xmmword [ecx + 0x40]
movups xmmword [eax - 0x60], xmm0
movaps xmm0, xmmword [esp + 0x160]
movups xmmword [eax - 0x30], xmm0
movaps xmm0, xmmword [esp + 0x140]
movaps xmm1, xmmword [esp + 0x150]
movups xmmword [eax - 0x40], xmm1
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [eax - 0x20], xmm0
movupd xmm0, xmmword [ecx + 0x30]
movupd xmmword [eax - 0x10], xmm0
push eax
push 0x40
push edi
call fcn.00718920
add esp, 0xc
lea eax, [esp + 0x300]
xorpd xmm0, xmm0
movupd xmmword [eax - 0x18], xmm0
movupd xmmword [eax - 0x28], xmm0
movupd xmmword [eax - 0x38], xmm0
mov dword [eax - 4], 0
mov dword [eax - 8], 0
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x2c4], ecx
mov dword [esp + 0x2c0], eax
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x304], ecx
mov dword [esp + 0x300], eax
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x340], ecx
mov dword [esp + 0x344], eax
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x384], ecx
mov dword [esp + 0x380], eax
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x444], ecx
mov dword [esp + 0x440], eax
movzx eax, byte [esp + 0xa0]
movzx ecx, byte [esp + 0xa1]
mov byte [esp + 0x340], al
movzx eax, byte [esp + 0xa8]
mov byte [esp + 0x3c0], al
movzx eax, byte [esp + 0xb0]
mov byte [esp + 0x480], al
mov byte [esp + 0x348], cl
movzx eax, byte [esp + 0xa9]
mov byte [esp + 0x3c8], al
movzx eax, byte [esp + 0xb1]
mov byte [esp + 0x488], al
movzx eax, byte [esp + 0xa2]
movzx ecx, byte [esp + 0xa3]
mov byte [esp + 0x350], al
movzx eax, byte [esp + 0xaa]
mov byte [esp + 0x3d0], al
movzx eax, byte [esp + 0xb2]
mov byte [esp + 0x490], al
mov byte [esp + 0x358], cl
movzx eax, byte [esp + 0xab]
mov byte [esp + 0x3d8], al
movzx eax, byte [esp + 0xb3]
mov byte [esp + 0x498], al
movzx eax, byte [esp + 0xa4]
mov byte [esp + 0x360], al
movzx eax, byte [esp + 0xac]
mov byte [esp + 0x3e0], al
movzx eax, byte [esp + 0xb4]
mov byte [esp + 0x4a0], al
movzx eax, byte [esp + 0xa5]
movzx ecx, byte [esp + 0xa6]
mov byte [esp + 0x368], al
movzx eax, byte [esp + 0xad]
mov byte [esp + 0x3e8], al
movzx eax, byte [esp + 0xb5]
mov byte [esp + 0x4a8], al
mov byte [esp + 0x370], cl
movzx eax, byte [esp + 0xae]
mov byte [esp + 0x3f0], al
movzx eax, byte [esp + 0xb6]
mov byte [esp + 0x4b0], al
movzx eax, byte [esp + 0xa7]
mov byte [esp + 0x378], al
movzx eax, byte [esp + 0xaf]
mov byte [esp + 0x3f8], al
movzx eax, byte [esp + 0xb7]
mov byte [esp + 0x4b8], al
mov esi, dword [ebp + 0x1c]
push esi
mov edi, dword [ebp + 0x18]
push edi
lea eax, [esp + 0x88c]
push eax
push 0x2c0
lea eax, [esp + 0x2d0]
push eax
call fcn.00563170
add esp, 0x14
push esi
push edi
lea eax, [esp + 0x88c]
push eax
push 0x40
lea eax, [esp + 0xf0]
push eax
call fcn.00563170
add esp, 0x14
cmp dword [esp + 0x14], ebx
movsd xmm1, qword [0x8baf80]
je 0x5727b0
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
xor edx, edx
mov eax, dword [ebp + 0x10]
jmp 0x573d43
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x70]
inc edx
cmp edx, dword [esp + 0x28]
je 0x5727b0
mov dword [esp + 0x30], eax
mov dword [esp + 8], ecx
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x70], edx
mov eax, dword [eax + edx*4]
mov dword [esp + 0x60], eax
movzx eax, al
mov dword [esp + 0x18], eax
movzx edx, word [esp + eax*2 + 0x780]
mov edi, ecx
shr edi, 3
mov esi, edx
shr esi, 1
mov eax, ecx
and al, 7
mov ecx, eax
xor cl, 0x1f
shr esi, cl
mov ecx, eax
shl edx, cl
mov ebx, dword [ebp + 0x1c]
movzx eax, byte [ebx + edi]
or edx, eax
mov eax, dword [esp + 0x18]
movzx eax, byte [esp + eax + 0xa0]
mov dword [ebx + edi + 4], esi
mov dword [ebx + edi], edx
mov edx, dword [esp + 0x60]
mov ebx, edx
shr ebx, 8
add dword [esp + 8], eax
mov esi, dword [ebp + 0x18]
mov eax, dword [esp + 8]
mov dword [esi], eax
mov edi, dword [esp + 8]
shr edi, 3
shr edx, 9
mov eax, dword [esp + 8]
and al, 7
mov ecx, eax
xor cl, 0x1f
shr edx, cl
mov esi, edx
mov edx, ebx
mov ecx, eax
shl edx, cl
mov ecx, dword [esp + 8]
mov eax, dword [ebp + 0x1c]
movzx eax, byte [eax + edi]
or edx, eax
mov eax, dword [ebp + 0x1c]
mov dword [eax + edi + 4], esi
mov dword [eax + edi], edx
mov edx, dword [esp + 0x18]
add ecx, dword [edx*4 + 0x8bb020]
mov eax, dword [ebp + 0x18]
mov dword [eax], ecx
cmp edx, 0x17
ja 0x573d30
add ebx, dword [edx*4 + 0x8bb220]
je 0x573d30
mov eax, dword [esp + 0x30]
nop word cs:[eax + eax]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], eax
mov dword [esp + 8], ecx
movzx eax, byte [eax]
mov dword [esp + 0x60], eax
movzx edi, word [esp + eax*2 + 0x108c]
mov edx, ecx
shr edx, 3
mov ebx, edi
shr ebx, 1
mov eax, ecx
and al, 7
mov ecx, eax
xor cl, 0x1f
shr ebx, cl
mov ecx, dword [ebp + 0x1c]
movzx esi, byte [ecx + edx]
mov ecx, eax
shl edi, cl
mov ecx, dword [esp + 8]
or edi, esi
mov eax, dword [esp + 0x60]
movzx eax, byte [esp + eax + 0x1c0]
mov esi, dword [ebp + 0x1c]
mov dword [esi + edx + 4], ebx
mov dword [esi + edx], edi
mov ebx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x30]
mov edx, dword [ebp + 0x18]
mov dword [edx], ecx
inc eax
dec ebx
jne 0x573e20
jmp 0x573d34
mov eax, esi
shl eax, 8
cmp esi, 0x1841
ja 0x573ea5
add eax, 0xfff7be15
jmp 0x573101
mov ecx, esi
cmp esi, 0x5841
ja 0x573eb6
add eax, 0xffe7be16
jmp 0x573ebb
add eax, 0xffa7be17
mov esi, ecx
jmp 0x573101
mov edi, dword [esp + 0x4c]
jmp 0x573088
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret