Function at 0x5644e0
Capabilities:
Encode data using xor
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1b0
mov ebp, dword [esp + 0x1c4]
lea eax, [ebp + 0x2a4]
lea ecx, [ebp + 0xa4]
lea edx, [esp + 0x8c]
push 0x22d8
push dword [ebp + 0x8e0]
push edx
push ecx
push dword [ebp + 0x814]
push dword [ebp + 0x810]
push eax
call fcn.00551d20
add esp, 0x1c
cmp eax, 0xffffff88
ja 0x565523
mov edx, dword [esp + 0x1d0]
mov eax, dword [esp + 0x1c8]
mov ecx, dword [ebp + 0x810]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x1d4]
mov dword [esp + 0x54], edx
add ecx, edx
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x1cc]
add ecx, eax
mov dword [esp + 0x2c], ecx
xor ecx, ecx
cmp dword [esp + 0x8c], 2
sete cl
mov dword [esp + 0x28], ecx
mov esi, dword [ebp + 0x814]
mov edx, dword [ebp + 0x8e0]
mov ecx, dword [ebp + 0xd8]
mov dword [esp + 0x70], ecx
mov ebx, dword [ebp + 0x2a4]
mov ecx, dword [ebp + 0x2a8]
mov edi, dword [ebp + 0x2ac]
mov dword [esp + 0x14], edi
mov edi, dword [ebp + 0x2b0]
mov dword [esp + 0x88], edi
mov edi, dword [ebp + 0x2b4]
mov dword [esp + 0x50], edi
mov edi, dword [ebp + 0x2b8]
mov dword [esp + 0x4c], edi
mov edi, dword [ebp + 0x2bc]
mov dword [esp + 0x48], edi
mov dword [esp + 0x74], ecx
lea ecx, [ecx - 8]
mov dword [esp + 0x84], ecx
lea ecx, [esi + 0x408]
mov dword [esp + 0x68], ecx
lea ecx, [esi + 0xcb8]
mov dword [esp + 0x64], ecx
lea ecx, [esi + 0x70c]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x3c], 1
mov dword [esp + 4], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], ebx
mov dword [esp], edx
mov dword [esp + 8], esi
jmp 0x56463f
mov ebx, dword [esp + 0x24]
nop word [eax + eax]
mov esi, dword [esp + 8]
cmp dword [esp + 0x40], 0
jne 0x56535b
cmp ebx, dword [esp + 0x74]
je 0x5646a0
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea edx, [edi + ecx*8]
xor ebx, ebx
cmp edx, dword [esp + 0x84]
sete al
sub edx, dword [ebp + 0x2a4]
mov dword [esp + 0x18], edi
movzx ecx, word [edi + ecx*8 + 4]
sar edx, 3
cmp dword [ebp + 0x2cc], edx
mov edi, dword [esp + 4]
jne 0x56468a
lea edx, [ecx + 0xffff]
cmp dword [ebp + 0x2c8], 1
cmove ecx, edx
mov bl, al
add edi, ecx
add dword [esp + 0x1c], 1
mov edx, dword [esp]
mov ecx, ebx
jmp 0x5646a9
mov ecx, 1
mov edi, dword [esp + 4]
mov eax, edi
mov ebx, dword [esp + 0x88]
sub ebx, dword [esp + 0x14]
mov dword [esp + 0x40], ecx
test ecx, ecx
cmove ebx, edi
mov eax, dword [esp + 0x8c]
lea ecx, [eax - 2]
cmp ecx, 2
mov dword [esp + 4], ebx
jb 0x5646f0
mov edi, ebx
test eax, eax
je 0x564bb0
cmp eax, 1
jne 0x564970
mov edi, 1
jmp 0x564bb0
mov edi, ebx
test dl, 3
jne 0x564bb0
mov dword [esp + 0x30], 0xff
cmp ebx, 0x5db
ja 0x564977
push 0x400
push 0
push edx
call sub.msvcrt.dll_memset
add esp, 0xc
test ebx, ebx
je 0x5649c1
mov ecx, dword [esp + 0x14]
lea eax, [ecx + ebx]
movdqa xmm6, xmmword [0x688460]
mov edi, dword [esp]
nop dword [eax]
movzx edx, byte [ecx]
add ecx, 1
add dword [edi + edx*4], 1
cmp ecx, eax
jb 0x564740
mov esi, 0x101
mov eax, pe_nt_image_headers32
nop dword [eax + eax]
mov ecx, eax
cmp dword [edi + esi*4 - 8], 0
lea esi, [esi - 1]
lea eax, [eax - 1]
je 0x564760
lea eax, [esi - 1]
mov dword [esp + 0x30], eax
mov ebp, edi
xor edx, edx
mov eax, 0
cmp esi, 8
movdqa xmm7, xmmword [0x688470]
jb 0x564950
mov edx, esi
and edx, 0xfffffff8
lea edi, [edx - 8]
mov eax, edi
shr eax, 3
add eax, 1
mov ebp, eax
test edi, edi
je 0x5652da
mov ebx, ecx
and ebx, 0xfffffff8
add ebx, 0xfffffff8
shr ebx, 3
add ebx, 1
and ebx, 0xfffffffe
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
mov eax, dword [esp]
nop dword [eax + eax]
movdqu xmm3, xmmword [eax + edi*4]
movdqu xmm4, xmmword [eax + edi*4 + 0x10]
movdqa xmm5, xmm0
pxor xmm5, xmm6
movdqa xmm2, xmm3
pxor xmm2, xmm6
pcmpgtd xmm2, xmm5
pand xmm3, xmm2
pandn xmm2, xmm0
por xmm2, xmm3
movdqa xmm0, xmm1
pxor xmm0, xmm6
movdqa xmm3, xmm4
pxor xmm3, xmm6
pcmpgtd xmm3, xmm0
pand xmm4, xmm3
pandn xmm3, xmm1
por xmm3, xmm4
movdqu xmm1, xmmword [eax + edi*4 + 0x20]
movdqu xmm4, xmmword [eax + edi*4 + 0x30]
movdqa xmm5, xmm2
pxor xmm5, xmm6
movdqa xmm0, xmm1
pxor xmm0, xmm6
pcmpgtd xmm0, xmm5
pand xmm1, xmm0
pandn xmm0, xmm2
por xmm0, xmm1
movdqa xmm2, xmm3
pxor xmm2, xmm6
movdqa xmm1, xmm4
pxor xmm1, xmm6
pcmpgtd xmm1, xmm2
pand xmm4, xmm1
pandn xmm1, xmm3
por xmm1, xmm4
add edi, 0x10
add ebx, 0xfffffffe
jne 0x5647d0
mov eax, ebp
test al, 1
mov ebx, dword [esp + 4]
je 0x5648d3
mov eax, dword [esp]
movdqu xmm4, xmmword [eax + edi*4]
movdqu xmm2, xmmword [eax + edi*4 + 0x10]
movdqa xmm5, xmm0
pxor xmm5, xmm6
movdqa xmm3, xmm4
pxor xmm3, xmm6
pcmpgtd xmm3, xmm5
pand xmm4, xmm3
pandn xmm3, xmm0
por xmm3, xmm4
movdqa xmm0, xmm1
pxor xmm0, xmm6
movdqa xmm4, xmm2
pxor xmm4, xmm6
pcmpgtd xmm4, xmm0
pand xmm2, xmm4
pandn xmm4, xmm1
por xmm4, xmm2
movdqa xmm0, xmm3
movdqa xmm1, xmm4
movdqa xmm3, xmm1
pxor xmm3, xmm6
movdqa xmm2, xmm0
pxor xmm2, xmm6
pcmpgtd xmm2, xmm3
pand xmm0, xmm2
pandn xmm2, xmm1
por xmm2, xmm0
pshufd xmm1, xmm2, 0xee
movdqa xmm0, xmm2
pxor xmm0, xmm6
movdqa xmm3, xmm1
pxor xmm3, xmm6
pcmpgtd xmm0, xmm3
pand xmm2, xmm0
pandn xmm0, xmm1
por xmm0, xmm2
pshufd xmm1, xmm0, 0x55
movdqa xmm2, xmm0
pxor xmm2, xmm6
movdqa xmm3, xmm1
pxor xmm3, xmm6
pcmpgtd xmm2, xmm3
pand xmm0, xmm2
pandn xmm2, xmm1
por xmm2, xmm0
movd eax, xmm2
cmp esi, edx
mov ebp, dword [esp]
je 0x564960
nop dword [eax + eax]
mov esi, dword [ebp + edx*4]
cmp esi, eax
cmova eax, esi
add edx, 1
cmp ecx, edx
jne 0x564950
mov edi, ebx
cmp eax, 0xffffff88
mov edx, ebp
jbe 0x5649a4
jmp 0x564bb0
xor edi, edi
jmp 0x564bb0
mov ecx, edx
mov ebp, edx
lea edx, [esp + 0x30]
push ebp
push 0
push ebx
push dword [esp + 0x20]
call fcn.00562530
movdqa xmm7, xmmword [0x688470]
add esp, 0x10
mov edi, ebx
cmp eax, 0xffffff88
mov edx, ebp
ja 0x564bb0
mov eax, dword [esp + 0x30]
test eax, eax
jns 0x5649cb
xor edx, edx
mov ecx, dword [esp + 0x28]
mov eax, ecx
test ecx, ecx
jne 0x564ba0
jmp 0x564ba7
xor eax, eax
movdqa xmm7, xmmword [0x688470]
add eax, 1
xor ecx, ecx
mov edx, 0
cmp eax, 8
mov edi, dword [esp + 8]
mov ebp, dword [esp]
jb 0x564b80
mov ecx, eax
and ecx, 0xfffffff8
lea edx, [ecx - 8]
mov esi, edx
shr esi, 3
add esi, 1
test edx, edx
je 0x5652be
mov ebp, esi
and esi, 0xfffffffe
pxor xmm0, xmm0
xor edx, edx
pxor xmm1, xmm1
mov ebx, dword [esp]
nop
movdqu xmm2, xmmword [edi + edx*4 + 4]
movdqu xmm3, xmmword [edi + edx*4 + 0x14]
pand xmm2, xmm7
pand xmm3, xmm7
movdqu xmm5, xmmword [ebx + edx*4]
movdqu xmm4, xmmword [ebx + edx*4 + 0x10]
pshufd xmm6, xmm2, 0xf5
pmuludq xmm2, xmm5
pshufd xmm2, xmm2, 0xe8
pshufd xmm5, xmm5, 0xf5
pmuludq xmm5, xmm6
pshufd xmm5, xmm5, 0xe8
punpckldq xmm2, xmm5
paddd xmm2, xmm0
pshufd xmm0, xmm3, 0xf5
pmuludq xmm3, xmm4
pshufd xmm3, xmm3, 0xe8
pshufd xmm4, xmm4, 0xf5
pmuludq xmm4, xmm0
pshufd xmm0, xmm4, 0xe8
punpckldq xmm3, xmm0
paddd xmm3, xmm1
movdqu xmm0, xmmword [edi + edx*4 + 0x24]
movdqu xmm1, xmmword [edi + edx*4 + 0x34]
pand xmm0, xmm7
pand xmm1, xmm7
movdqu xmm5, xmmword [ebx + edx*4 + 0x20]
movdqu xmm4, xmmword [ebx + edx*4 + 0x30]
pshufd xmm6, xmm0, 0xf5
pmuludq xmm0, xmm5
pshufd xmm0, xmm0, 0xe8
pshufd xmm5, xmm5, 0xf5
pmuludq xmm5, xmm6
pshufd xmm5, xmm5, 0xe8
punpckldq xmm0, xmm5
paddd xmm0, xmm2
pshufd xmm2, xmm1, 0xf5
pmuludq xmm1, xmm4
pshufd xmm1, xmm1, 0xe8
pshufd xmm4, xmm4, 0xf5
pmuludq xmm4, xmm2
pshufd xmm2, xmm4, 0xe8
punpckldq xmm1, xmm2
paddd xmm1, xmm3
add edx, 0x10
add esi, 0xfffffffe
jne 0x564a10
mov ebx, ebp
test bl, 1
je 0x564b5c
movdqu xmm4, xmmword [edi + edx*4 + 4]
movdqu xmm2, xmmword [edi + edx*4 + 0x14]
pand xmm4, xmm7
pand xmm2, xmm7
mov esi, dword [esp]
movdqu xmm5, xmmword [esi + edx*4]
movdqu xmm3, xmmword [esi + edx*4 + 0x10]
pshufd xmm6, xmm4, 0xf5
pmuludq xmm4, xmm5
pshufd xmm4, xmm4, 0xe8
pshufd xmm5, xmm5, 0xf5
pmuludq xmm5, xmm6
pshufd xmm5, xmm5, 0xe8
punpckldq xmm4, xmm5
paddd xmm0, xmm4
pshufd xmm4, xmm2, 0xf5
pmuludq xmm2, xmm3
pshufd xmm2, xmm2, 0xe8
pshufd xmm3, xmm3, 0xf5
pmuludq xmm3, xmm4
pshufd xmm3, xmm3, 0xe8
punpckldq xmm2, xmm3
paddd xmm1, xmm2
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd edx, xmm0
cmp eax, ecx
mov ebp, dword [esp]
je 0x564b93
nop dword [eax]
movzx esi, byte [edi + ecx*4 + 4]
imul esi, dword [ebp + ecx*4]
add edx, esi
add ecx, 1
cmp eax, ecx
jne 0x564b80
shr edx, 3
mov ecx, dword [esp + 0x28]
mov eax, ecx
test ecx, ecx
je 0x564ba7
mov eax, dword [esp + 0x110]
lea edi, [edx + eax]
add edi, 3
mov edx, dword [esp]
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x564cf0
mov ecx, dword [esp + 0x118]
mov ebp, edx
mov edx, dword [esp + 0x48]
push ebp
push 0x1c
push 5
push 0x689b0a
push 0
push dword [esp + 0x7c]
push ebx
push 0x1f
call fcn.005b4f60
add esp, 0x20
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x114]
mov edx, dword [esp + 0x50]
push ebp
push 0x23
push 6
push 0x689ac2
push 0x6893bc
push dword [esp + 0x78]
push ebx
push 0x23
call fcn.005b4f60
add esp, 0x20
mov esi, eax
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x4c]
push ebp
push 0x34
push 6
push 0x689b44
push 0x6892f4
push dword [esp + 0x74]
push ebx
push 0x34
call fcn.005b4f60
add esp, 0x20
mov edx, dword [esp + 0x3c]
mov ecx, edx
test edx, edx
je 0x564c4d
mov ecx, dword [esp + 0x1a8]
add edi, dword [esp + 0x44]
add edi, esi
add edi, eax
lea eax, [ecx + edi]
add eax, 6
cmp eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0x1c4]
ja 0x564c74
test ecx, ecx
je 0x564d1a
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea esi, [eax + edx*8]
mov dword [esp + 0x5c], esi
test edx, edx
jle 0x564d2a
mov esi, eax
sub esi, dword [ebp + 0x2a4]
mov ecx, dword [ebp + 0x2cc]
mov dword [esp + 0x44], ecx
lea edx, [edx*8]
lea edi, [eax + 6]
xor eax, eax
jmp 0x564cc1
mov eax, ecx
add eax, ebx
add esi, 8
add edx, 0xfffffff8
add edi, 8
test edx, edx
jle 0x564d36
mov ecx, eax
movzx ebp, word [edi]
lea ebx, [ebp + 3]
mov eax, esi
sar eax, 3
cmp dword [esp + 0x44], eax
jne 0x564cb0
add ebp, 0x10002
mov eax, dword [esp + 0x1c4]
cmp dword [eax + 0x2c8], 2
cmove ebx, ebp
jmp 0x564cb0
add edi, 6
xor eax, eax
cmp edi, dword [esp + 0x70]
ja 0x564d2e
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x40]
test ecx, ecx
jne 0x564d3a
mov dword [esp + 0x1c], 0
mov ebp, dword [esp + 0x1c4]
mov esi, dword [esp + 8]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp]
jmp 0x564634
xor eax, eax
jmp 0x564d3a
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x80], eax
test ecx, ecx
setne byte [esp + 0xf]
cmp dword [esp + 0x1d8], 0
setne byte [esp + 0x44]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
sub ebp, edi
add ebp, 0xfffffffd
mov eax, dword [esp + 0x28]
test eax, eax
mov ecx, 0xc8
cmove ecx, eax
mov eax, dword [esp + 0x8c]
mov esi, eax
mov edx, 3
cmove esi, edx
mov dword [esp + 0x20], esi
mov edx, 0x400
sub edx, ecx
mov esi, 0x4000
sub esi, ecx
xor ebx, ebx
mov ecx, dword [esp + 4]
cmp esi, ecx
setbe bl
cmp ecx, edx
lea esi, [edi + 3]
sbb ebx, 0
test ecx, ecx
je 0x564e0b
cmp eax, 1
je 0x564e29
test eax, eax
jne 0x564e6e
xor eax, eax
mov edx, dword [esp + 4]
cmp edx, 0x20
setae al
cmp edx, 0x1000
sbb eax, 0xffffffff
lea edi, [eax + edx]
add edi, 1
cmp edi, ebp
ja 0x5653a0
add eax, 1
cmp eax, 3
je 0x564fa6
cmp eax, 2
mov ebp, dword [esp + 0x1c4]
je 0x564f99
cmp eax, 1
jne 0x564fb7
mov ecx, edx
shl cl, 3
mov byte [esi], cl
jmp 0x564fb7
test ebp, ebp
je 0x5653a0
mov byte [esi], 0
mov ecx, 1
xor eax, eax
mov ebp, dword [esp + 0x1c4]
jmp 0x565008
xor ecx, ecx
mov eax, dword [esp + 4]
cmp eax, 0x20
setae cl
cmp eax, 0x1000
sbb ecx, 0xffffffff
add ecx, 1
cmp ecx, 3
je 0x564fe0
cmp ecx, 2
mov ebp, dword [esp + 0x1c4]
je 0x564ff1
cmp ecx, 1
jne 0x564ffa
shl al, 3
or al, 1
mov byte [esi], al
jmp 0x564ffa
mov ecx, dword [esp + 0x10]
add ecx, ebx
add ecx, 7
add ebx, 4
cmp dword [esp + 0x28], 0
setne byte [esp + 0x58]
je 0x564eb4
cmp eax, 2
jne 0x564eb4
push dword [esp + 0x110]
lea eax, [esp + 0x94]
push eax
push ecx
mov edi, ecx
call sub.msvcrt.dll_memcpy
mov ecx, edi
add esp, 0xc
mov eax, dword [esp + 0x110]
mov edi, eax
add ecx, eax
jmp 0x564eb6
xor edi, edi
mov edx, dword [esp + 0x2c]
sub edx, ecx
cmp ebx, 3
mov dword [esp + 0x78], ecx
jne 0x564ed8
push dword [esp + 8]
push dword [esp + 8]
push dword [esp + 0x1c]
call fcn.00566fe0
jmp 0x564ee9
push dword [esp + 8]
push dword [esp + 8]
push dword [esp + 0x1c]
call fcn.005677f0
add esp, 0xc
lea ecx, [eax - 1]
cmp ecx, 0xffffff87
mov edx, dword [esp]
ja 0x564f85
add edi, eax
mov edx, dword [esp + 4]
cmp edi, edx
setb cl
or byte [esp + 0x58], cl
je 0x5652b7
xor ecx, ecx
cmp edi, 0x400
setae cl
cmp edi, 0x4000
sbb ecx, 0xffffffff
add ecx, 3
cmp ebx, ecx
jb 0x564db7
mov edx, edi
mov edi, dword [esp + 0x78]
add edi, eax
cmp ebx, 5
je 0x5652f7
cmp ebx, 4
mov ebp, dword [esp + 0x1c4]
je 0x565327
cmp ebx, 3
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 4]
jne 0x56533f
setne al
shl ecx, 4
shl edx, 0xe
movzx eax, al
lea eax, [ecx + eax*4]
add eax, dword [esp + 0x20]
add eax, edx
mov word [ebx + 3], ax
shr eax, 0x10
mov byte [ebx + 5], al
jmp 0x56533f
mov ebp, dword [esp + 0x1c4]
mov esi, dword [esp + 8]
mov ebx, dword [esp + 0x24]
jmp 0x564634
mov ecx, edx
shl ecx, 4
or ecx, 4
mov word [esi], cx
jmp 0x564fb7
mov ecx, edx
shl ecx, 4
or ecx, 0xc
mov dword [esi], ecx
mov ebp, dword [esp + 0x1c4]
add eax, esi
push edx
push dword [esp + 0x18]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor eax, eax
mov ecx, edi
cmp ecx, 0xffffff88
mov edx, dword [esp]
ja 0x565354
test ecx, ecx
jne 0x565008
jmp 0x564626
shl eax, 4
or eax, 0xd
mov dword [esi], eax
mov ebp, dword [esp + 0x1c4]
jmp 0x564ffa
shl eax, 4
or eax, 5
mov word [esi], ax
mov eax, dword [esp + 0x14]
mov al, byte [eax]
mov byte [esi + ecx], al
add ecx, 1
xor eax, eax
mov dword [esp + 0x58], eax
add esi, ecx
mov ecx, dword [esp + 0x2c]
sub ecx, esi
xor ebx, ebx
cmp dword [ebp + 0xa8], 0x1a
setae al
cmp ecx, 4
jl 0x5653a0
mov edx, dword [esp + 0x1c]
cmp edx, 0x7f
jae 0x565112
mov byte [esi], dl
test edx, edx
je 0x5651d1
mov dword [esp + 0x20], esi
add esi, 1
mov bl, al
lea edi, [esi + 1]
cmp dword [esp + 0x3c], 0
je 0x56515d
mov eax, dword [esp + 0x114]
mov ecx, dword [esp + 0x118]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x11c]
shl eax, 6
shl ecx, 4
add ecx, eax
lea eax, [ecx + edx*4]
mov ebp, esi
mov byte [esi], al
push dword [esp + 0x1a8]
lea eax, [esp + 0x124]
push eax
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, dword [esp + 0x1a8]
mov eax, dword [esp + 0x2c]
sub eax, edi
sub esp, 4
push ebx
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x60]
push dword [esp + 0x78]
push dword [esp + 0x60]
push dword [esp + 0x84]
push dword [esp + 0x6c]
push dword [esp + 0x84]
push eax
push edi
call fcn.00563e80
add esp, 0x30
cmp eax, 0xffffff89
jae 0x565523
add edi, eax
mov ecx, dword [esp + 0x1ac]
test ecx, ecx
je 0x56528d
add ecx, eax
cmp ecx, 4
mov ebx, dword [esp + 0x24]
mov edx, dword [esp]
mov esi, ebp
mov ebp, dword [esp + 0x1c4]
jb 0x564630
jmp 0x5651a9
cmp edx, 0x7eff
mov dword [esp + 0x20], esi
ja 0x56513d
mov cl, dh
xor cl, 0x80
mov byte [esi], cl
mov byte [esi + 1], dl
add esi, 2
mov bl, al
lea edi, [esi + 1]
cmp dword [esp + 0x3c], 0
jne 0x565057
jmp 0x56515d
mov byte [esi], 0xff
lea ecx, [edx - 0x7f00]
mov word [esi + 1], cx
add esi, 3
mov bl, al
lea edi, [esi + 1]
cmp dword [esp + 0x3c], 0
jne 0x565057
mov byte [esi], 0xfc
mov eax, dword [esp + 0x2c]
sub eax, edi
sub esp, 4
push ebx
push edx
push dword [esp + 0x24]
push dword [esp + 0x60]
push dword [esp + 0x78]
push dword [esp + 0x60]
push dword [esp + 0x84]
push dword [esp + 0x6c]
push dword [esp + 0x84]
push eax
push edi
call fcn.00563e80
add esp, 0x30
cmp eax, 0xffffff89
jae 0x565523
add edi, eax
mov ebx, dword [esp + 0x24]
mov edx, dword [esp]
mov eax, edi
sub eax, esi
cmp eax, 4
jl 0x564630
mov esi, dword [esp + 0x20]
sub edi, esi
cmp edi, 0xffffff88
ja 0x5654f4
test edi, edi
je 0x564630
xor eax, eax
jmp 0x5651dc
mov edi, 1
mov al, 1
mov ebx, dword [esp + 0x24]
mov dl, byte [esp + 0xf]
mov cl, byte [esp + 0x44]
and cl, dl
add esi, edi
mov edi, esi
mov edx, dword [esp + 0x10]
sub edi, edx
movzx ecx, cl
lea ecx, [ecx + edi*8]
add ecx, 0xffffffec
mov word [edx], cx
shr ecx, 0x10
mov byte [edx + 2], cl
cmp edi, 0xffffff88
ja 0x5654f4
test edi, edi
je 0x5652af
mov dword [esp + 0x20], esi
mov edx, edi
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0x80]
add edi, ecx
cmp edx, edi
mov edx, dword [esp]
jae 0x564630
add dword [esp + 0x54], edi
add dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ecx
add dword [esp + 0x4c], ecx
add dword [esp + 0x48], ecx
xor edi, edi
cmp dword [esp + 0x58], 0
mov ecx, dword [esp + 0x28]
cmovne ecx, edi
mov dword [esp + 0x28], ecx
test al, al
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], 0
cmove eax, edi
mov dword [esp + 0x3c], eax
mov dword [esp + 4], 0
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x18], eax
jmp 0x564630
mov ebx, dword [esp + 0x24]
mov edx, dword [esp]
mov esi, ebp
mov ebp, dword [esp + 0x1c4]
mov eax, edi
sub eax, esi
cmp eax, 4
jl 0x564630
jmp 0x5651b6
mov edx, dword [esp]
jmp 0x564630
xor eax, eax
jmp 0x564dbd
mov ebp, esi
pxor xmm0, xmm0
xor edx, edx
pxor xmm1, xmm1
mov ebx, ebp
test bl, 1
jne 0x564af2
jmp 0x564b5c
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
mov eax, ebp
test al, 1
mov ebx, dword [esp + 4]
jne 0x56487d
jmp 0x5648d3
mov eax, dword [esp + 4]
shl eax, 4
mov ecx, edx
shl ecx, 0x16
mov ebx, edx
mov edx, dword [esp + 0x20]
add edx, eax
lea eax, [ecx + edx]
add eax, 0xc
mov ecx, dword [esp + 0x10]
mov dword [ecx + 3], eax
shr ebx, 0xa
mov byte [ecx + 7], bl
mov ebp, dword [esp + 0x1c4]
jmp 0x56533f
mov eax, dword [esp + 4]
shl eax, 4
shl edx, 0x12
mov ecx, dword [esp + 0x20]
add ecx, eax
lea eax, [edx + ecx]
add eax, 8
mov dword [esi], eax
mov ecx, edi
sub ecx, esi
mov eax, 1
cmp ecx, 0xffffff88
mov edx, dword [esp]
jbe 0x564fd7
mov eax, ecx
jmp 0x565523
cmp dword [esp + 0x28], 0
je 0x565374
push 0x408
push dword [esp + 0x70]
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp dword [esp + 0x3c], 0
je 0x5653c2
mov eax, dword [esp + 0x114]
add eax, 0xffffffff
cmp eax, 2
jb 0x565399
mov eax, dword [esp + 0x11c]
add eax, 0xffffffff
cmp eax, 2
jae 0x5653aa
xor eax, eax
jmp 0x565523
mov eax, 0xffffffba
jmp 0x565523
mov eax, dword [esp + 0x118]
add eax, 0xfffffffd
cmp eax, 0xfffffffd
mov eax, 0
ja 0x565523
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x7c]
cmp eax, edx
jae 0x565518
mov edi, dword [esp + 0x2c]
sub edi, dword [esp + 0x10]
sub edx, eax
lea esi, [edx + 3]
mov eax, 0xffffffba
cmp esi, edi
ja 0x565523
mov eax, dword [esp + 0x1d8]
lea eax, [eax + edx*8]
mov edi, dword [esp + 0x10]
mov word [edi], ax
shr eax, 0x10
mov byte [edi + 2], al
lea eax, [edi + 3]
push edx
push dword [esp + 0x58]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp esi, 0xffffff88
ja 0x5654f8
add edi, esi
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esp + 0x74]
jae 0x565518
mov edx, dword [esp + 0x6c]
mov eax, dword [edx + 0x11f0]
mov dword [esp + 0x38], eax
movsd xmm0, qword [edx + 0x11e8]
movsd qword [esp + 0x30], xmm0
cmp ebx, ecx
jae 0x5654fc
mov eax, dword [ebp + 0x2cc]
mov ecx, ebx
sub ecx, dword [ebp + 0x2a4]
jmp 0x565493
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x34], ebx
add edi, 0xfffffffd
mov ebx, edi
mov dword [esp + 0x30], ebx
mov ebp, dword [esp + 0x1c4]
add ecx, 8
mov ebx, edx
add ebx, 8
cmp ebx, dword [esp + 0x18]
jae 0x5654fc
mov edx, ebx
movzx ebx, word [ebx + 4]
mov edi, ecx
sar edi, 3
cmp eax, edi
jne 0x5654b2
lea edi, [ebx + 0xffff]
cmp dword [ebp + 0x2c8], 1
cmove ebx, edi
mov edi, dword [edx]
cmp edi, 4
jae 0x565465
cmp ebx, 1
adc edi, 0
add edi, 0xffffffff
je 0x565485
cmp edi, 3
jne 0x5654d2
mov ebp, dword [esp + 0x30]
lea ebx, [ebp - 1]
jmp 0x5654da
mov ebx, dword [esp + edi*4 + 0x30]
mov ebp, dword [esp + 0x30]
cmp edi, 2
lea edi, [esp + 0x38]
lea esi, [esp + 0x34]
cmovae edi, esi
mov edi, dword [edi]
mov dword [esp + 0x38], edi
mov dword [esp + 0x34], ebp
jmp 0x56547a
mov eax, edi
jmp 0x565523
mov eax, esi
jmp 0x565523
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 8]
mov dword [ecx + 0x11f0], eax
movq xmm0, qword [esp + 0x30]
movq qword [ecx + 0x11e8], xmm0
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x1c8]
add esp, 0x1b0
pop esi
pop edi
pop ebx
pop ebp
ret