Function at 0x573ee0
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 0x57564b
mov eax, dword [ebp + 0x10]
not eax
mov dword [esp + 0x94], eax
movsd xmm1, qword [0x8bafd0]
mov eax, dword [esp + 0x24]
lea ecx, [eax + 6]
mov dword [esp + 0x9c], ecx
jmp 0x573f45
mov esi, dword [esp + 0x8c]
mov eax, dword [esp + 0x4c]
sub esi, dword [esp + 0x20]
je 0x57564b
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 0x574808
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, 0xf
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 0x574018
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, 0xf
mov eax, dword [esp + 0x50]
neg eax
mov edx, 0x20
mov dword [esp + 0x30], eax
jmp 0x574043
test edx, edx
jne 0x574141
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 0x574800
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, 0xf
mov eax, dword [esi]
mov edx, dword [esp + 0x30]
cmp eax, dword [esi + edx]
mov ebx, dword [esp + 0x30]
jne 0x5740e0
lea eax, [esi + ebx]
movzx edx, byte [esi + 4]
mov dword [esp + 0x18], eax
cmp dl, byte [eax + 4]
jne 0x5740e0
movzx edx, byte [esi + 5]
cmp dl, byte [esi + ebx + 5]
jne 0x5740e0
test ebx, ebx
jns 0x5740e0
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 0x574040
jmp 0x574160
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 0x574030
mov esi, dword [esp + 8]
movzx eax, byte [esi + 4]
xor edx, edx
mov ebx, dword [esp + 0x18]
cmp al, byte [ebx + 4]
jne 0x574030
movzx eax, byte [esi + 5]
xor edx, edx
cmp al, byte [ebx + 5]
sete dl
jmp 0x574030
mov esi, dword [esp + 8]
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x28]
jmp 0x5740c5
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 0x574190
mov esi, edx
jmp 0x5741bd
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 0x5741ba
lea eax, [edx + edi]
add eax, 4
add edi, 4
cmp eax, ebx
jbe 0x5741a0
lea esi, [edx + edi]
mov eax, dword [esp + 8]
add eax, ecx
add eax, 6
cmp esi, eax
jae 0x5741f4
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 0x5741f4
inc esi
inc edi
dec ecx
jne 0x5741e0
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 0x574273
cmp ecx, 0x81
ja 0x574240
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 0x57426a
cmp ecx, 0x841
ja 0x574372
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 0x5742dd
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 [0x8bafd0]
ja 0x574300
lea ecx, [edi + 0x1a]
mov dword [eax], ecx
jmp 0x5743f0
cmp dword [esp + 0x30], 0x47
ja 0x574340
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 0x5743f0
cmp dword [esp + 0x30], 0x87
ja 0x574389
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 0x5743f0
mov eax, ecx
shl eax, 8
cmp ecx, 0x1841
ja 0x5743b5
add eax, 0xfff7be15
jmp 0x57426f
cmp dword [esp + 0x30], 0x847
ja 0x5743cb
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 0x5743d8
cmp ecx, 0x5841
ja 0x5747f6
add eax, 0xffe7be16
jmp 0x57426f
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 0x575642
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, 0xf
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, 0xf
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, 0xf
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, 0xf
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, 0xf
mov edx, dword [ebp + 0x14]
mov dword [edx + eax*4], ecx
add edi, dword [esp + 0x30]
shr edi, 0xf
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 0x573ff0
mov esi, dword [edi]
cmp esi, dword [edx]
jne 0x573ff0
movzx ebx, byte [edi + 4]
cmp bl, byte [edx + 4]
jne 0x573ff0
movzx ebx, byte [edi + 5]
cmp bl, byte [edx + 5]
jne 0x573ff0
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 0x5745a0
mov edi, esi
jmp 0x5745c8
add edi, edx
add edi, 2
xor eax, eax
nop word [eax + eax]
mov ebx, dword [esi + eax]
cmp ebx, dword [ecx + eax]
jne 0x5745c5
lea ebx, [esi + eax]
add ebx, 4
add eax, 4
cmp ebx, edi
jbe 0x5745b0
lea edi, [esi + eax]
mov ebx, dword [esp + 4]
add ebx, edx
add ebx, 6
cmp edi, ebx
jae 0x5745ef
add edx, esi
sub edx, edi
lea esi, [edx + eax]
nop dword [eax]
movzx ebx, byte [ecx + eax]
cmp bl, byte [edi]
jne 0x5745ef
inc edi
inc eax
dec edx
jne 0x5745e0
mov eax, esi
mov edi, dword [esp + 4]
lea ecx, [eax + 6]
cmp ecx, 9
ja 0x574600
lea ecx, [eax + 0x2c]
jmp 0x574660
cmp ecx, 0x85
ja 0x574628
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 0x574660
cmp ecx, 0x845
ja 0x574652
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 0x574660
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 0x575642
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, 0xf
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, 0xf
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, 0xf
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, 0xf
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, 0xf
mov edx, dword [ebp + 0x14]
mov dword [edx + eax*4], ecx
add edi, dword [esp + 0x30]
shr edi, 0xf
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 0x57454b
jmp 0x573ff0
add eax, 0xffa7be17
jmp 0x57426f
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 4]
cmp edx, edi
mov dword [esp + 4], edx
jae 0x574850
mov esi, edi
sub esi, edx
mov eax, esi
cmp esi, 6
mov ebx, edx
jb 0x574881
cmp esi, 0x81
ja 0x574856
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 0x57487c
mov esi, dword [esp + 0x2c]
jmp 0x5748a7
cmp esi, 0x841
ja 0x57560e
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 [0x8bafd0]
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 [0x8bafd8]
ucomisd xmm1, xmm0
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x28], esi
ja 0x574cc0
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 [0x8bafe0]
mulsd xmm0, qword [0x8bafd8]
divsd xmm0, qword [0x8bafe8]
movapd xmmword [esp + 0x70], xmm0
cmp dword [esp + 0x20], 0
movsd xmm1, qword [0x8bafd0]
movdqa xmm2, xmmword [0x8baff0]
mov edi, dword [esp + 0x58]
je 0x5749d2
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 0x5749ac
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 0x574970
test ecx, ecx
je 0x5749d2
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 0x5749c0
xor esi, esi
xorps xmm3, xmm3
mov ebx, 0xfffffffe
jmp 0x574a55
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 [0x8baff0]
movsd xmm1, qword [0x8bafd0]
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 0x574b10
mov edi, dword [esp + ebx*4 + 0x88c]
cmp edi, 0xff
movsd qword [esp + 8], xmm3
ja 0x574a90
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 0x574ad2
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 [0x8baff0]
movsd xmm1, qword [0x8bafd0]
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 0x5749e0
mov eax, dword [0x86baec]
movsd xmm0, qword [eax + edi*8]
jmp 0x574a28
movd xmm4, esi
por xmm4, xmm2
subsd xmm4, xmm1
test esi, esi
je 0x574b37
cmp esi, 0xff
mov ebx, dword [ebp + 0xc]
ja 0x574b42
mov eax, dword [0x86baec]
movsd xmm0, qword [eax + esi*8]
jmp 0x574b7a
mov ebx, dword [ebp + 0xc]
movapd xmm1, xmmword [esp + 0x70]
jmp 0x574b88
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 0x574cc0
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 [0x8bafd0]
sub esi, dword [esp + 0x20]
jne 0x573f45
jmp 0x57564b
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 0x574f90
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 0x574f76
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 0x574f40
test eax, eax
je 0x574f90
add ecx, ebx
xor edx, edx
nop
movzx esi, byte [ecx + edx]
inc dword [esp + esi*4 + 0xc8c]
inc edx
cmp eax, edx
jne 0x574f80
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 0x575050
xor eax, eax
cmp esi, 1
je 0x57500e
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 0x574ff0
test byte [esp + 8], 4
je 0x575020
movzx eax, byte [ebx + eax*4]
inc dword [esp + eax*4 + 0x580]
movq xmm0, qword [esp + 0x584]
psubd xmm0, xmmword [0x8bb010]
mov ecx, dword [esp + 0x680]
mov eax, dword [esp + 0x6d0]
inc ecx
inc eax
jmp 0x575062
mov eax, 1
mov ecx, 1
movdqa xmm0, xmmword [0x8bb000]
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 [0x8bafd0]
je 0x573f30
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
xor edx, edx
mov eax, dword [ebp + 0x10]
jmp 0x5754c3
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x70]
inc edx
cmp edx, dword [esp + 0x28]
je 0x573f30
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 0x5754b0
add ebx, dword [edx*4 + 0x8bb220]
je 0x5754b0
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 0x5755a0
jmp 0x5754b4
mov eax, esi
shl eax, 8
cmp esi, 0x1841
ja 0x575625
add eax, 0xfff7be15
jmp 0x574881
mov ecx, esi
cmp esi, 0x5841
ja 0x575636
add eax, 0xffe7be16
jmp 0x57563b
add eax, 0xffa7be17
mov esi, ecx
jmp 0x574881
mov edi, dword [esp + 0x4c]
jmp 0x574808
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret