Function at 0x56a840
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x1270
call fcn.00526390
mov dword [esp + 0x1c], edx
mov dword [esp + 0x78], ecx
mov eax, dword [ebp + 8]
test eax, eax
je 0x56bd61
mov ecx, dword [ebp + 0x10]
not ecx
mov dword [esp + 0x74], ecx
movq xmm1, qword [0x8bada0]
mov ecx, eax
mov eax, dword [esp + 0x1c]
lea edx, [eax + 4]
mov dword [esp + 0x7c], edx
mov esi, eax
mov eax, ecx
jmp 0x56a8a4
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x40]
sub eax, ecx
je 0x56bd61
cmp eax, 0x20000
mov ecx, 0x20000
mov dword [esp + 0x4c], eax
cmovb ecx, eax
lea edx, [esi + ecx]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x34], eax
mov dword [esp + 0x44], esi
cmp ecx, 0x10
mov dword [esp + 0x18], ecx
mov dword [esp + 0x40], edx
jb 0x56af2c
lea eax, [ecx - 4]
mov ecx, dword [esp + 0x4c]
lea esi, [ecx - 0x10]
cmp eax, esi
cmovb esi, eax
mov ecx, dword [esp + 0x44]
add esi, ecx
mov dword [esp + 0x38], esi
lea esi, [ecx + 1]
mov edi, dword [ecx + 1]
mov eax, 0x1e35a7bd
imul edi, eax
shr edi, 0x16
lea eax, [edx - 4]
mov edx, esi
mov esi, edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x14], 0xffffffff
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x34], eax
mov dword [esp + 4], ecx
jmp 0x56a94d
lea edx, [edi + 1]
mov dword [esp + 4], edi
mov esi, dword [edi + 1]
mov eax, 0x1e35a7bd
imul esi, eax
shr esi, 0x16
mov eax, dword [esp + 8]
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0x14]
neg ebx
mov eax, 0x20
mov dword [esp + 0x50], ebx
jmp 0x56a997
lea eax, [edx + ebx]
mov dword [esp + 8], eax
mov ebx, esi
mov esi, edx
sub edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x14]
mov dword [eax + ebx*4], edx
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 8]
mov eax, esi
mov esi, eax
sub esi, edx
cmp esi, 0x3fff0
jle 0x56aa00
shr ecx, 0x16
mov eax, dword [esp + 0x20]
inc eax
mov esi, ecx
mov edx, edi
mov edi, eax
shr edi, 5
add edi, edx
cmp edi, dword [esp + 0x38]
ja 0x56af20
mov dword [esp + 0x20], eax
mov ecx, dword [edi]
mov eax, 0x1e35a7bd
imul ecx, eax
mov eax, dword [edx]
cmp eax, dword [edx + ebx]
jne 0x56a9c1
test ebx, ebx
js 0x56a960
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], eax
mov ebx, edx
sub edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x14]
mov dword [eax + esi*4], edx
mov edx, dword [ebx]
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x1c]
cmp edx, dword [eax + esi]
mov eax, ebx
mov ebx, dword [esp + 0x50]
jne 0x56a98b
mov edx, esi
add edx, dword [esp + 0x1c]
jmp 0x56a97f
lea ebx, [eax + 4]
mov ecx, dword [esp + 0x60]
sub ecx, eax
xor edi, edi
cmp ecx, 4
mov dword [esp + 8], edx
mov dword [esp + 0x50], ebx
jl 0x56aa57
mov dword [esp + 0x48], ecx
add ecx, eax
mov dword [esp + 0x20], ecx
xor edi, edi
nop word cs:[eax + eax]
mov ecx, ebx
mov ebx, dword [ebx + edi]
cmp ebx, dword [edx + edi + 4]
jne 0x56aa50
lea ebx, [ecx + edi]
add ebx, 4
add edi, 4
cmp ebx, dword [esp + 0x20]
mov ebx, ecx
jbe 0x56aa30
add ebx, edi
jmp 0x56aa53
lea ebx, [ecx + edi]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x20], eax
lea edx, [eax + ecx]
add edx, 4
cmp ebx, edx
jae 0x56aa96
add ecx, dword [esp + 0x50]
sub ecx, ebx
lea eax, [ecx + edi]
mov dword [esp + 0x50], eax
nop word cs:[eax + eax]
mov eax, dword [esp + 8]
movzx edx, byte [eax + edi + 4]
cmp dl, byte [ebx]
jne 0x56aa96
inc ebx
inc edi
dec ecx
jne 0x56aa80
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 4]
sub ecx, edx
mov eax, ecx
cmp ecx, 6
mov dword [esp + 8], ecx
jb 0x56ab13
cmp ecx, 0x81
ja 0x56aae0
lea eax, [ecx - 2]
bsr edx, eax
xor edx, 0xffffffe0
lea ecx, [edx + 0x1f]
mov ebx, eax
shr ebx, cl
lea edx, [ebx + edx*2]
add edx, 0x40
shl ebx, cl
mov ecx, dword [esp + 8]
sub eax, ebx
jmp 0x56ab0a
cmp ecx, 0x841
ja 0x56ac04
lea eax, [ecx - 0x42]
bsr ecx, eax
mov edx, ecx
xor edx, 0xffffffe0
mov eax, 0xffffffff
shl eax, cl
mov ecx, dword [esp + 8]
add edx, 0x2a
add eax, ecx
add eax, 0xffffffbe
shl eax, 8
or eax, edx
mov edx, dword [esp + 4]
mov ebx, eax
lea eax, [edi + 4]
mov dword [esp + 0x50], eax
mov eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx], ebx
push eax
push edx
push dword [esp + 0x3c]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, 0x40
cmp esi, dword [esp + 0x14]
je 0x56ab86
lea eax, [esi + 3]
bsr edx, eax
xor edx, 0x1f
mov cl, 0x1e
sub cl, dl
movzx ebx, cl
mov dword [esp + 4], ebx
mov ebx, dword [esp + 4]
bt eax, ebx
mov ebx, 0
setb bl
mov dword [esp + 4], ebx
mov ebx, dword [esp + 4]
add ebx, 2
shl ebx, cl
sub eax, ebx
add edx, edx
xor edx, 0x3e
shl eax, 8
or eax, edx
mov ecx, dword [esp + 4]
add eax, ecx
add eax, 0x4c
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x10]
mov dword [ecx + 4], eax
lea ebx, [ecx + 8]
mov edx, dword [esp + 0x50]
cmp edx, 0xb
movq xmm1, qword [0x8bada0]
ja 0x56abb0
lea eax, [edi + 0x18]
mov dword [ebx], eax
jmp 0x56ac7c
cmp edx, 0x47
ja 0x56abe0
lea edx, [edi - 4]
bsr eax, edx
xor eax, 0xffffffe0
lea ecx, [eax + 0x1f]
mov esi, edx
shr esi, cl
lea eax, [esi + eax*2]
add eax, 0x5a
shl esi, cl
sub edx, esi
shl edx, 8
or edx, eax
mov dword [ebx], edx
jmp 0x56ac7c
cmp edx, 0x87
ja 0x56ac1b
lea eax, [edi - 4]
mov ecx, eax
shr ecx, 5
add ecx, 0x36
and eax, 0x1f
shl eax, 8
or eax, ecx
mov ebx, dword [esp + 0x10]
mov dword [ebx + 8], eax
jmp 0x56ac72
mov eax, ecx
shl eax, 8
cmp ecx, 0x1841
ja 0x56ac4c
add eax, 0xfff7be15
jmp 0x56ab0f
cmp edx, 0x847
ja 0x56ac62
lea eax, [edi - 0x44]
bsr ecx, eax
mov eax, ecx
xor eax, 0x1f
mov edx, 0xffffffff
shl edx, cl
lea ecx, [edx + edi]
add ecx, 0xffffffbc
shl ecx, 8
sub ecx, eax
add ecx, 0x53
mov ebx, dword [esp + 0x10]
mov dword [ebx + 8], ecx
jmp 0x56ac72
cmp ecx, 0x5841
ja 0x56af10
add eax, 0xffe7be16
jmp 0x56ab0f
shl edx, 8
add edx, 0xfff7b83f
mov ebx, dword [esp + 0x10]
mov dword [ebx + 8], edx
mov dword [ebx + 0xc], 0x40
add ebx, 0xc
mov eax, dword [esp + 0x20]
add edi, eax
add edi, 4
mov eax, dword [esp + 8]
add dword [esp + 0x34], eax
add ebx, 4
cmp edi, dword [esp + 0x38]
jae 0x56bd44
mov dword [esp + 8], ebx
mov ecx, dword [edi - 3]
mov esi, dword [edi + 1]
mov edx, esi
shld esi, ecx, 0x18
mov eax, edi
sub eax, dword [esp + 0x1c]
mov ebx, 0xffffffff
and esi, ebx
imul esi, esi, 0x1e35a7bd
lea ebx, [eax - 2]
mov dword [esp + 0x20], ebx
shr esi, 0x16
mov dword [esp + 4], edi
mov edi, dword [ebp + 0x14]
mov ebx, dword [esp + 0x20]
mov dword [edi + esi*4], ebx
shld edx, ecx, 8
mov esi, 0x1e35a7bd
imul ecx, esi
shr ecx, 0x16
lea esi, [eax - 1]
mov dword [edi + ecx*4], esi
mov ecx, 0xffffffff
and edx, ecx
imul edx, edx, 0x1e35a7bd
shr edx, 0x16
mov ecx, dword [edi + edx*4]
mov dword [edi + edx*4], eax
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x1c]
add eax, ecx
mov edx, edi
sub edx, eax
cmp edx, 0x3fff0
jg 0x56a930
nop word [eax + eax]
mov esi, dword [edi]
cmp esi, dword [eax]
jne 0x56a930
mov dword [esp + 0x14], edx
add ecx, dword [esp + 0x7c]
mov eax, edi
add edi, 4
mov esi, dword [esp + 0x60]
sub esi, eax
xor edx, edx
cmp esi, 4
mov dword [esp + 4], eax
jge 0x56ad50
mov ebx, edi
jmp 0x56ad78
add eax, esi
xor edx, edx
nop word cs:[eax + eax]
mov ebx, dword [edi + edx]
cmp ebx, dword [ecx + edx]
jne 0x56ad75
lea ebx, [edi + edx]
add ebx, 4
add edx, 4
cmp ebx, eax
jbe 0x56ad60
lea ebx, [edi + edx]
mov eax, dword [esp + 4]
add eax, esi
add eax, 4
cmp ebx, eax
jae 0x56ad9f
add esi, edi
sub esi, ebx
lea edi, [esi + edx]
nop dword [eax]
movzx eax, byte [ecx + edx]
cmp al, byte [ebx]
jne 0x56ad9f
inc ebx
inc edx
dec esi
jne 0x56ad90
mov edx, edi
lea esi, [edx + 4]
cmp esi, 9
ja 0x56adb0
lea esi, [edx + 0x2a]
jmp 0x56ae20
cmp esi, 0x85
ja 0x56ade0
lea esi, [edx - 2]
bsr eax, esi
xor eax, 0xffffffe0
lea ecx, [eax + 0x1f]
mov edi, esi
shr edi, cl
lea eax, [edi + eax*2]
add eax, 0x6a
shl edi, cl
sub esi, edi
shl esi, 8
or esi, eax
jmp 0x56ae20
cmp esi, 0x845
ja 0x56ae09
lea eax, [edx - 0x42]
bsr ecx, eax
mov eax, ecx
xor eax, 0x1f
mov esi, 0xffffffff
shl esi, cl
add esi, edx
add esi, 0xffffffbe
shl esi, 8
sub esi, eax
add esi, 0x53
jmp 0x56ae20
shl esi, 8
add esi, 0xfff7ba3f
nop word cs:[eax + eax]
mov edi, dword [esp + 4]
add edi, edx
add edi, 4
mov eax, dword [esp + 8]
mov dword [eax], esi
mov eax, dword [esp + 0x14]
lea edx, [eax + 3]
bsr ebx, edx
xor ebx, 0x1f
mov cl, 0x1e
sub cl, bl
movzx esi, cl
xor eax, eax
bt edx, esi
setb al
lea esi, [eax + 2]
shl esi, cl
sub edx, esi
add ebx, ebx
xor ebx, 0x3e
shl edx, 8
or edx, ebx
add eax, edx
add eax, 0x4c
mov ecx, dword [esp + 8]
mov dword [ecx + 4], eax
add ecx, 8
cmp edi, dword [esp + 0x38]
jae 0x56bd0e
mov dword [esp + 8], ecx
mov ecx, dword [edi - 3]
mov esi, dword [edi + 1]
mov eax, ecx
mov edx, 0x1e35a7bd
imul eax, edx
mov edx, edi
sub edx, dword [esp + 0x1c]
mov dword [esp + 4], edi
lea edi, [edx - 3]
shr eax, 0x16
mov ebx, dword [ebp + 0x14]
mov dword [ebx + eax*4], edi
mov eax, esi
shld eax, ecx, 0x18
mov edi, 0xffffffff
and eax, edi
imul eax, eax, 0x1e35a7bd
lea edi, [edx - 2]
shr eax, 0x16
mov dword [ebx + eax*4], edi
mov eax, esi
shld esi, ecx, 0x10
mov edi, 0xffffffff
and esi, edi
imul esi, esi, 0x1e35a7bd
lea edi, [edx - 1]
shr esi, 0x16
mov dword [ebx + esi*4], edi
mov edi, dword [esp + 4]
shld eax, ecx, 8
mov ecx, 0xffffffff
and eax, ecx
imul eax, eax, 0x1e35a7bd
shr eax, 0x16
mov ecx, dword [ebx + eax*4]
mov dword [ebx + eax*4], edx
mov eax, dword [esp + 0x1c]
add eax, ecx
mov edx, edi
sub edx, eax
cmp edx, 0x3fff1
jl 0x56ad20
jmp 0x56a930
add eax, 0xffa7be17
jmp 0x56ab0f
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 4]
cmp esi, edx
mov dword [esp + 4], esi
jae 0x56af70
mov edi, edx
sub edi, esi
mov eax, edi
cmp edi, 6
jb 0x56afa5
cmp edi, 0x81
ja 0x56af76
lea eax, [edi - 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
sub eax, esi
jmp 0x56af9c
mov edi, dword [esp + 0x34]
jmp 0x56afcf
cmp edi, 0x841
ja 0x56bd14
lea eax, [edi - 0x42]
bsr ecx, eax
mov edx, ecx
xor edx, 0xffffffe0
mov eax, 0xffffffff
shl eax, cl
add edx, 0x2a
add eax, edi
add eax, 0xffffffbe
shl eax, 8
or eax, edx
mov esi, dword [esp + 4]
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
add ecx, 4
mov dword [esp + 0x10], ecx
push edi
push esi
mov esi, dword [esp + 0x3c]
push esi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
add edi, esi
movq xmm1, qword [0x8bada0]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x48], edi
sub edi, dword [ebp + 0x10]
movd xmm2, ecx
por xmm2, xmm1
subsd xmm2, xmm1
mov dword [esp + 0x14], edi
movd xmm0, edi
por xmm0, xmm1
subsd xmm0, xmm1
movapd xmm1, xmm2
mulsd xmm1, qword [0x8bada8]
ucomisd xmm1, xmm0
mov eax, dword [ebp + 0xc]
mov esi, ecx
mov edi, dword [ebp + 0x18]
ja 0x56b3e0
push 0x400
push 0
lea eax, [esp + 0x86c]
push eax
movapd xmmword [esp + 0x6c], xmm2
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
movapd xmm0, xmmword [esp + 0x60]
mulsd xmm0, qword [0x8badb0]
mulsd xmm0, qword [0x8bada8]
divsd xmm0, qword [0x8badb8]
movapd xmmword [esp + 0x60], xmm0
test esi, esi
movsd xmm1, qword [0x8bada0]
movdqa xmm2, xmmword [0x8badc0]
mov edi, dword [esp + 0x44]
je 0x56b102
mov esi, dword [esp + 0x18]
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 0x56b0dc
and edx, 0xfffffffc
xor eax, eax
nop word cs:[eax + eax]
movzx esi, byte [edi + eax]
inc dword [esp + esi*4 + 0x864]
movzx esi, byte [edi + eax + 0x2b]
inc dword [esp + esi*4 + 0x864]
movzx esi, byte [edi + eax + 0x56]
inc dword [esp + esi*4 + 0x864]
movzx esi, byte [edi + eax + 0x81]
inc dword [esp + esi*4 + 0x864]
add eax, 0xac
add edx, 0xfffffffc
jne 0x56b0a0
test ecx, ecx
je 0x56b102
add eax, edi
imul ecx, ecx, 0x2b
xor edx, edx
nop word [eax + eax]
movzx esi, byte [eax + edx]
inc dword [esp + esi*4 + 0x864]
add edx, 0x2b
cmp ecx, edx
jne 0x56b0f0
xor esi, esi
xorps xmm3, xmm3
mov edi, 0xfffffffe
jmp 0x56b185
sub esp, 8
movsd qword [esp], xmm6
movsd qword [esp + 0x40], xmm5
movapd xmmword [esp + 0x58], xmm6
call fcn.0058e124
movapd xmm6, xmmword [esp + 0x58]
movsd xmm5, qword [esp + 0x40]
movdqa xmm2, xmmword [0x8badc0]
movsd xmm1, qword [0x8bada0]
add esp, 8
fstp qword [esp + 0x110]
movsd xmm0, qword [esp + 0x110]
movsd xmm3, qword [esp + 8]
movapd xmm4, xmmword [esp + 0x20]
mulsd xmm4, xmm5
subsd xmm3, xmm4
add esi, ebx
mulsd xmm0, xmm6
subsd xmm3, xmm0
add edi, 2
cmp edi, 0xfe
jae 0x56b240
mov ebx, dword [esp + edi*4 + 0x86c]
cmp ebx, 0xff
movsd qword [esp + 8], xmm3
ja 0x56b1c0
mov eax, dword [0x86baec]
movsd xmm5, qword [eax + ebx*8]
movd xmm0, ebx
por xmm0, xmm2
subsd xmm0, xmm1
movapd xmmword [esp + 0x20], xmm0
jmp 0x56b202
movd xmm0, ebx
por xmm0, xmm2
subsd xmm0, xmm1
sub esp, 8
movapd xmmword [esp + 0x28], xmm0
movsd qword [esp], xmm0
call fcn.0058e124
movdqa xmm2, xmmword [0x8badc0]
movsd xmm1, qword [0x8bada0]
add esp, 8
fstp qword [esp + 0x118]
movsd xmm5, qword [esp + 0x118]
add esi, ebx
mov ebx, dword [esp + edi*4 + 0x870]
movd xmm6, dword [esp + edi*4 + 0x870]
por xmm6, xmm2
subsd xmm6, xmm1
cmp ebx, 0xff
ja 0x56b110
mov eax, dword [0x86baec]
movsd xmm0, qword [eax + ebx*8]
jmp 0x56b158
movd xmm4, esi
por xmm4, xmm2
subsd xmm4, xmm1
test esi, esi
je 0x56b264
cmp esi, 0xff
ja 0x56b272
mov eax, dword [0x86baec]
movsd xmm0, qword [eax + esi*8]
jmp 0x56b2aa
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp + 0xc]
movapd xmm1, xmmword [esp + 0x60]
jmp 0x56b2be
sub esp, 8
movsd qword [esp], xmm4
movsd qword [esp + 0x10], xmm3
movapd xmmword [esp + 0x28], xmm4
call fcn.0058e124
movapd xmm4, xmmword [esp + 0x28]
movsd xmm3, qword [esp + 0x10]
add esp, 8
fstp qword [esp + 0x108]
movsd xmm0, qword [esp + 0x108]
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp + 0xc]
movapd xmm1, xmmword [esp + 0x60]
mulsd xmm0, xmm4
addsd xmm3, xmm0
maxsd xmm4, xmm3
ucomisd xmm1, xmm4
mov esi, dword [esp + 0x18]
ja 0x56b3e0
mov ebx, dword [edi]
mov dword [esp + 8], ebx
mov eax, ebx
shr eax, 3
mov edx, dword [ebp + 0x1c]
movzx ecx, byte [edx + eax]
mov dword [edx + eax], ecx
mov dword [edx + eax + 4], 0
lea ecx, [ebx + 1]
mov dword [edi], ecx
xor eax, eax
xor ebx, ebx
cmp esi, 0x10001
setae al
setb bl
mov edx, ecx
shr edx, 3
and cl, 7
mov edi, esi
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, ecx
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
movzx edx, byte [esi + ecx]
and al, 7
bts edx, eax
mov dword [esi + ecx], edx
mov dword [esi + ecx + 4], 0
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, esi
mov ebx, dword [esp + 0x18]
push ebx
push dword [esp + 0x48]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov ecx, ebx
lea eax, [ebx*8]
add eax, dword [edi]
mov dword [edi], eax
shr eax, 3
mov byte [esi + eax], 0
mov eax, dword [esp + 0x4c]
movq xmm1, qword [0x8bada0]
jmp 0x56a898
mov ecx, dword [esp + 0x10]
sub ecx, eax
mov dword [esp + 0x20], ecx
mov edx, dword [edi]
mov dword [esp + 8], edx
mov eax, edx
shr eax, 3
mov ebx, dword [ebp + 0x1c]
movzx ecx, byte [ebx + eax]
mov dword [ebx + eax], ecx
mov dword [ebx + eax + 4], 0
lea ecx, [edx + 1]
mov dword [edi], ecx
xor eax, eax
xor ebx, ebx
cmp esi, 0x10001
setae al
setb bl
mov edx, ecx
shr edx, 3
and cl, 7
shl eax, cl
mov edi, dword [ebp + 0x1c]
movzx ecx, byte [edi + edx]
or eax, ecx
mov dword [edi + edx], eax
mov dword [edi + edx + 4], 0
mov eax, dword [esp + 8]
add eax, 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 + 8]
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 + 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
movapd xmmword [esp + 0x1b0], xmm0
movapd xmmword [esp + 0x1a0], xmm0
push 0x200
push 0
lea edi, [esp + 0x1074]
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
push 0x400
push 0
lea eax, [esp + 0xc74]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
xorpd xmm0, 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
movapd xmmword [esp + 0x90], xmm0
movapd xmmword [esp + 0x80], xmm0
lea eax, [esp + 0x7e0]
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 + 0x568]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
cmp dword [esp + 0x48], ebx
je 0x56b6a0
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0x44]
add edx, dword [esp + 0x18]
mov ecx, dword [esp + 4]
cmp ecx, edx
cmova edx, ecx
add edx, eax
sub edx, ecx
mov eax, dword [esp + 0x14]
and eax, 3
xor ecx, ecx
cmp edx, 3
jb 0x56b686
mov edx, dword [esp + 0x14]
and edx, 0xfffffffc
xor ecx, ecx
nop
movzx esi, byte [ebx + ecx]
inc dword [esp + esi*4 + 0xc6c]
movzx esi, byte [ebx + ecx + 1]
inc dword [esp + esi*4 + 0xc6c]
movzx esi, byte [ebx + ecx + 2]
inc dword [esp + esi*4 + 0xc6c]
movzx esi, byte [ebx + ecx + 3]
inc dword [esp + esi*4 + 0xc6c]
add ecx, 4
cmp edx, ecx
jne 0x56b650
test eax, eax
je 0x56b6a0
add ecx, ebx
xor edx, edx
nop
movzx esi, byte [ecx + edx]
inc dword [esp + esi*4 + 0xc6c]
inc edx
cmp eax, edx
jne 0x56b690
mov esi, dword [esp + 0x20]
sar esi, 2
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push edi
lea eax, [esp + 0x1ac]
push eax
push 8
push dword [esp + 0x28]
lea eax, [esp + 0xc84]
push eax
push dword [esp + 0x94]
call fcn.005638b0
add esp, 0x20
mov ebx, dword [ebp + 0xc]
cmp dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
je 0x56b750
xor eax, eax
cmp esi, 1
je 0x56b70e
mov ecx, dword [esp + 0x14]
and ecx, 0xfffffffe
xor eax, eax
movzx edx, byte [ebx + eax*4]
inc dword [esp + edx*4 + 0x560]
movzx edx, byte [ebx + eax*4 + 4]
inc dword [esp + edx*4 + 0x560]
add eax, 2
cmp ecx, eax
jne 0x56b6f0
test byte [esp + 0x20], 4
je 0x56b720
movzx eax, byte [ebx + eax*4]
inc dword [esp + eax*4 + 0x560]
movq xmm0, qword [esp + 0x564]
psubd xmm0, xmmword [0x8bade0]
mov ecx, dword [esp + 0x660]
mov eax, dword [esp + 0x6b0]
inc ecx
inc eax
jmp 0x56b762
mov eax, 1
mov ecx, 1
movdqa xmm0, xmmword [0x8badd0]
movq qword [esp + 0x564], xmm0
mov dword [esp + 0x660], ecx
mov dword [esp + 0x6b0], eax
push 0x408
push 0
lea eax, [esp + 0x86c]
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 + 0x2e8]
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
pxor xmm0, 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
movdqa xmmword [esp + 0x130], xmm0
movdqa xmmword [esp + 0x120], xmm0
lea eax, [esp + 0x80]
push eax
mov esi, edi
push edi
push 0xf
push 0x40
lea eax, [esp + 0x570]
push eax
call fcn.00717b00
add esp, 0x14
lea edi, [esp + 0xc0]
push edi
push esi
push 0xe
push 0x40
lea eax, [esp + 0x670]
push eax
call fcn.00717b00
add esp, 0x14
movsd xmm0, qword [edi - 0x18]
movsd qword [esp + 0x2b0], xmm0
movups xmm0, xmmword [edi - 0x28]
movaps xmmword [esp + 0x2a0], xmm0
movsd xmm0, qword [esp + 0x80]
movsd xmm1, qword [esp + 0x88]
movsd qword [esp + 0x2b8], xmm0
movsd xmm0, qword [esp + 0xb0]
movsd qword [esp + 0x2c0], xmm0
movsd qword [esp + 0x2c8], xmm1
movsd xmm0, qword [esp + 0xb8]
movsd qword [esp + 0x2d0], xmm0
movsd xmm0, qword [esp + 0x90]
movsd qword [esp + 0x2d8], xmm0
lea eax, [esp + 0x120]
push eax
push 0x40
lea eax, [esp + 0x2a8]
push eax
call fcn.00718920
add esp, 0xc
lea ecx, [esp + 0x150]
movups xmm0, xmmword [ecx]
movaps xmmword [esp + 0x760], xmm0
movups xmm0, xmmword [ecx + 0x20]
lea eax, [esp + 0x7e0]
movups xmmword [eax - 0x70], xmm0
movups xmm0, xmmword [ecx + 0x40]
movups xmmword [eax - 0x60], xmm0
movaps xmm0, xmmword [esp + 0x140]
movups xmmword [eax - 0x30], xmm0
movaps xmm0, xmmword [esp + 0x120]
movaps xmm1, xmmword [esp + 0x130]
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 + 0x2e0]
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 + 0x98]
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x2a4], ecx
mov dword [esp + 0x2a0], eax
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x2e4], ecx
mov dword [esp + 0x2e0], eax
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x320], ecx
mov dword [esp + 0x324], eax
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x364], ecx
mov dword [esp + 0x360], eax
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x424], ecx
mov dword [esp + 0x420], eax
movzx eax, byte [esp + 0x80]
movzx ecx, byte [esp + 0x81]
mov byte [esp + 0x320], al
movzx eax, byte [esp + 0x88]
mov byte [esp + 0x3a0], al
movzx eax, byte [esp + 0x90]
mov byte [esp + 0x460], al
mov byte [esp + 0x328], cl
movzx eax, byte [esp + 0x89]
mov byte [esp + 0x3a8], al
movzx eax, byte [esp + 0x91]
mov byte [esp + 0x468], al
movzx eax, byte [esp + 0x82]
movzx ecx, byte [esp + 0x83]
mov byte [esp + 0x330], al
movzx eax, byte [esp + 0x8a]
mov byte [esp + 0x3b0], al
movzx eax, byte [esp + 0x92]
mov byte [esp + 0x470], al
mov byte [esp + 0x338], cl
movzx eax, byte [esp + 0x8b]
mov byte [esp + 0x3b8], al
movzx eax, byte [esp + 0x93]
mov byte [esp + 0x478], al
movzx eax, byte [esp + 0x84]
mov byte [esp + 0x340], al
movzx eax, byte [esp + 0x8c]
mov byte [esp + 0x3c0], al
movzx eax, byte [esp + 0x94]
mov byte [esp + 0x480], al
movzx eax, byte [esp + 0x85]
movzx ecx, byte [esp + 0x86]
mov byte [esp + 0x348], al
movzx eax, byte [esp + 0x8d]
mov byte [esp + 0x3c8], al
movzx eax, byte [esp + 0x95]
mov byte [esp + 0x488], al
mov byte [esp + 0x350], cl
movzx eax, byte [esp + 0x8e]
mov byte [esp + 0x3d0], al
movzx eax, byte [esp + 0x96]
mov byte [esp + 0x490], al
movzx eax, byte [esp + 0x87]
mov byte [esp + 0x358], al
movzx eax, byte [esp + 0x8f]
mov byte [esp + 0x3d8], al
movzx eax, byte [esp + 0x97]
mov byte [esp + 0x498], al
mov esi, dword [ebp + 0x1c]
push esi
mov edi, dword [ebp + 0x18]
push edi
lea eax, [esp + 0x86c]
push eax
push 0x2c0
lea eax, [esp + 0x2b0]
push eax
call fcn.00563170
add esp, 0x14
push esi
push edi
lea eax, [esp + 0x86c]
push eax
push 0x40
lea eax, [esp + 0xd0]
push eax
call fcn.00563170
add esp, 0x14
cmp dword [esp + 0x10], ebx
movq xmm1, qword [0x8bada0]
je 0x56a890
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
xor edx, edx
mov eax, dword [ebp + 0x10]
jmp 0x56bbc3
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 4]
inc edx
cmp edx, dword [esp + 0x14]
je 0x56a890
mov dword [esp + 0x20], eax
mov dword [esp + 8], ecx
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], edx
mov eax, dword [eax + edx*4]
mov dword [esp + 0x50], eax
movzx eax, al
mov dword [esp + 0x38], eax
movzx edx, word [esp + eax*2 + 0x760]
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 + 0x38]
movzx eax, byte [esp + eax + 0x80]
mov dword [ebx + edi + 4], esi
mov dword [ebx + edi], edx
mov edx, dword [esp + 0x50]
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 + 0x38]
add ecx, dword [edx*4 + 0x8bb020]
mov eax, dword [ebp + 0x18]
mov dword [eax], ecx
cmp edx, 0x17
ja 0x56bbb0
add ebx, dword [edx*4 + 0x8bb220]
je 0x56bbb0
mov eax, dword [esp + 0x20]
nop word cs:[eax + eax]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x20], eax
mov dword [esp + 8], ecx
movzx eax, byte [eax]
mov dword [esp + 0x50], eax
movzx edi, word [esp + eax*2 + 0x106c]
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 + 0x50]
movzx eax, byte [esp + eax + 0x1a0]
mov esi, dword [ebp + 0x1c]
mov dword [esi + edx + 4], ebx
mov dword [esi + edx], edi
mov ebx, dword [esp + 0x38]
add ecx, eax
mov eax, dword [esp + 0x20]
mov edx, dword [ebp + 0x18]
mov dword [edx], ecx
inc eax
dec ebx
jne 0x56bca0
jmp 0x56bbb4
mov dword [esp + 0x10], ecx
jmp 0x56bd48
cmp edi, 0x1841
ja 0x56bd2b
mov eax, edi
shl eax, 8
add eax, 0xfff7be15
jmp 0x56afa1
mov ecx, edi
mov eax, edi
shl eax, 8
cmp edi, 0x5841
ja 0x56bd57
add eax, 0xffe7be16
jmp 0x56afa1
mov dword [esp + 0x10], ebx
mov esi, edi
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x40]
jmp 0x56af2c
add eax, 0xffa7be17
jmp 0x56afa1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret