Function at 0x55b240
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
sub esp, 0x180
mov eax, dword [ecx + 0xb8]
mov edi, eax
sub edi, 3
sete byte [esp + 0x120]
cmp eax, 6
mov esi, 3
cmovb esi, edi
xor edi, edi
cmp eax, 3
cmovae edi, esi
mov dword [esp + 0x11c], edi
mov edi, dword [ecx + 4]
add edi, dword [ecx + 0xc]
mov esi, edx
mov eax, dword [ecx + 0xbc]
cmp eax, 0xfff
mov edx, 0xfff
cmovb edx, eax
mov dword [esp + 0x124], edx
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x12c], eax
mov ebx, dword [ebp + 0x10]
mov eax, dword [ecx + 0xc4]
test eax, eax
mov dword [esp + 0xc], ecx
je 0x55b2d6
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x160], ecx
mov ecx, dword [esp + 0xc]
movdqu xmm0, xmmword [eax]
movdqu xmmword [esp + 0x150], xmm0
jmp 0x55b2ee
pxor xmm0, xmm0
movdqa xmmword [esp + 0x150], xmm0
mov dword [esp + 0x160], 0
mov eax, dword [ebp + 0xc]
add eax, ebx
mov dword [esp + 0x114], eax
mov eax, dword [ecx + 0x70]
mov dword [esp + 0x90], eax
mov eax, dword [ecx + 0x74]
mov dword [esp + 0x10], eax
mov dword [esp + 0x16c], 0
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 0
lea ecx, [esp + 0x150]
xor edx, edx
push ebx
call fcn.005855a0
mov ecx, dword [esp + 0x10]
add esp, 4
mov eax, dword [ecx + 0xa0]
mov dword [ecx + 0x98], 0
cmp dword [ecx + 0x7c], 0
mov dword [esp + 0x128], esi
mov dword [esp + 0x18], edi
je 0x55c410
cmp eax, 2
je 0x55b72c
mov eax, dword [ecx + 0x60]
movdqu xmm0, xmmword [eax]
movdqu xmm1, xmmword [eax + 0x10]
movdqu xmm2, xmmword [eax + 0x20]
paddd xmm2, xmm0
movdqu xmm4, xmmword [eax + 0x30]
paddd xmm4, xmm1
movdqu xmm1, xmmword [eax + 0x40]
movdqu xmm5, xmmword [eax + 0x50]
movdqu xmm0, xmmword [eax + 0x60]
paddd xmm0, xmm1
paddd xmm0, xmm2
movdqu xmm3, xmmword [eax + 0x70]
paddd xmm3, xmm5
paddd xmm3, xmm4
movdqu xmm1, xmmword [eax + 0x80]
movdqu xmm2, xmmword [eax + 0x90]
movdqu xmm4, xmmword [eax + 0xa0]
paddd xmm4, xmm1
movdqu xmm5, xmmword [eax + 0xb0]
paddd xmm5, xmm2
movdqu xmm1, xmmword [eax + 0xc0]
paddd xmm1, xmm4
paddd xmm1, xmm0
movdqu xmm2, xmmword [eax + 0xd0]
paddd xmm2, xmm5
paddd xmm2, xmm3
movdqu xmm0, xmmword [eax + 0xe0]
movdqu xmm3, xmmword [eax + 0xf0]
movdqu xmm4, xmmword [eax + 0x100]
paddd xmm4, xmm0
movdqu xmm0, xmmword [eax + 0x110]
paddd xmm0, xmm3
movdqu xmm3, xmmword [eax + 0x120]
paddd xmm3, xmm4
movdqu xmm4, xmmword [eax + 0x130]
paddd xmm4, xmm0
movdqu xmm0, xmmword [eax + 0x140]
paddd xmm0, xmm3
paddd xmm0, xmm1
movdqu xmm3, xmmword [eax + 0x150]
paddd xmm3, xmm4
paddd xmm3, xmm2
movdqu xmm1, xmmword [eax + 0x160]
movdqu xmm2, xmmword [eax + 0x170]
movdqu xmm4, xmmword [eax + 0x180]
paddd xmm4, xmm1
movdqu xmm1, xmmword [eax + 0x190]
paddd xmm1, xmm2
movdqu xmm2, xmmword [eax + 0x1a0]
paddd xmm2, xmm4
movdqu xmm4, xmmword [eax + 0x1b0]
paddd xmm4, xmm1
movdqu xmm5, xmmword [eax + 0x1c0]
paddd xmm5, xmm2
movdqu xmm6, xmmword [eax + 0x1d0]
paddd xmm6, xmm4
movdqu xmm1, xmmword [eax + 0x1e0]
paddd xmm1, xmm5
paddd xmm1, xmm0
movdqu xmm2, xmmword [eax + 0x1f0]
paddd xmm2, xmm6
paddd xmm2, xmm3
movdqu xmm0, xmmword [eax + 0x200]
movdqu xmm3, xmmword [eax + 0x210]
movdqu xmm4, xmmword [eax + 0x220]
paddd xmm4, xmm0
movdqu xmm0, xmmword [eax + 0x230]
paddd xmm0, xmm3
movdqu xmm3, xmmword [eax + 0x240]
paddd xmm3, xmm4
movdqu xmm4, xmmword [eax + 0x250]
paddd xmm4, xmm0
movdqu xmm0, xmmword [eax + 0x260]
paddd xmm0, xmm3
movdqu xmm3, xmmword [eax + 0x270]
paddd xmm3, xmm4
movdqu xmm4, xmmword [eax + 0x280]
paddd xmm4, xmm0
movdqu xmm5, xmmword [eax + 0x290]
paddd xmm5, xmm3
movdqu xmm0, xmmword [eax + 0x2a0]
paddd xmm0, xmm4
paddd xmm0, xmm1
movdqu xmm1, xmmword [eax + 0x2b0]
paddd xmm1, xmm5
paddd xmm1, xmm2
movdqu xmm2, xmmword [eax + 0x2c0]
movdqu xmm3, xmmword [eax + 0x2d0]
movdqu xmm4, xmmword [eax + 0x2e0]
paddd xmm4, xmm2
movdqu xmm2, xmmword [eax + 0x2f0]
paddd xmm2, xmm3
movdqu xmm3, xmmword [eax + 0x300]
paddd xmm3, xmm4
movdqu xmm4, xmmword [eax + 0x310]
paddd xmm4, xmm2
movdqu xmm2, xmmword [eax + 0x320]
paddd xmm2, xmm3
movdqu xmm3, xmmword [eax + 0x330]
paddd xmm3, xmm4
movdqu xmm4, xmmword [eax + 0x340]
paddd xmm4, xmm2
movdqu xmm2, xmmword [eax + 0x350]
paddd xmm2, xmm3
movdqu xmm3, xmmword [eax + 0x360]
paddd xmm3, xmm4
movdqu xmm4, xmmword [eax + 0x370]
paddd xmm4, xmm2
movdqu xmm2, xmmword [eax + 0x380]
paddd xmm2, xmm3
paddd xmm2, xmm0
movdqu xmm0, xmmword [eax + 0x390]
paddd xmm0, xmm4
paddd xmm0, xmm1
movdqu xmm1, xmmword [eax + 0x3a0]
movdqu xmm3, xmmword [eax + 0x3b0]
movdqu xmm4, xmmword [eax + 0x3c0]
paddd xmm4, xmm1
movdqu xmm1, xmmword [eax + 0x3d0]
paddd xmm1, xmm3
movdqu xmm3, xmmword [eax + 0x3e0]
paddd xmm3, xmm4
paddd xmm3, xmm2
movdqu xmm2, xmmword [eax + 0x3f0]
paddd xmm2, xmm1
paddd xmm2, xmm0
paddd xmm2, xmm3
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ecx, xmm1
cmp ecx, 0x2000
jb 0x55b723
shr ecx, 0xc
bsr ecx, ecx
movd xmm2, ecx
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
movss xmm1, xmm2
pcmpeqd xmm3, xmm3
pxor xmm2, xmm2
nop dword [eax + eax]
movdqu xmm5, xmmword [eax + ecx*4]
movdqu xmm4, xmmword [eax + ecx*4 + 0x10]
psrld xmm5, xmm1
psrld xmm4, xmm1
psubd xmm5, xmm3
psubd xmm4, xmm3
movdqu xmmword [eax + ecx*4], xmm5
movdqu xmmword [eax + ecx*4 + 0x10], xmm4
paddd xmm5, xmm0
paddd xmm4, xmm2
movdqu xmm0, xmmword [eax + ecx*4 + 0x20]
movdqu xmm2, xmmword [eax + ecx*4 + 0x30]
psrld xmm0, xmm1
psrld xmm2, xmm1
psubd xmm0, xmm3
psubd xmm2, xmm3
movdqu xmmword [eax + ecx*4 + 0x20], xmm0
movdqu xmmword [eax + ecx*4 + 0x30], xmm2
paddd xmm0, xmm5
paddd xmm2, xmm4
add ecx, 0x10
cmp ecx, 0x100
jne 0x55b6a0
paddd xmm2, xmm0
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ecx, xmm1
mov eax, dword [esp + 0xc]
mov dword [eax + 0x78], ecx
mov ecx, eax
mov eax, dword [ecx + 0x64]
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0x50], ecx
add ecx, edx
mov esi, dword [eax + 8]
mov dword [esp + 0xa0], esi
add ecx, esi
mov esi, dword [eax + 0xc]
mov dword [esp + 0xc0], esi
add ecx, esi
mov esi, dword [eax + 0x10]
mov dword [esp + 0xe0], esi
add ecx, esi
mov esi, dword [eax + 0x14]
mov dword [esp + 0xf0], esi
add ecx, esi
mov esi, dword [eax + 0x18]
mov dword [esp + 0x100], esi
add ecx, esi
mov esi, dword [eax + 0x1c]
mov dword [esp + 0x1c], esi
add ecx, esi
mov esi, dword [eax + 0x20]
mov dword [esp + 0x24], esi
add ecx, esi
mov esi, dword [eax + 0x24]
mov dword [esp + 0x2c], esi
add ecx, esi
mov esi, dword [eax + 0x28]
mov dword [esp + 0x28], esi
add ecx, esi
mov esi, dword [eax + 0x2c]
mov dword [esp + 0x80], esi
add ecx, esi
mov esi, dword [eax + 0x30]
mov dword [esp + 0x20], esi
add ecx, esi
mov esi, dword [eax + 0x34]
mov dword [esp + 0x7c], esi
add ecx, esi
mov esi, dword [eax + 0x38]
mov dword [esp + 0x9c], esi
add ecx, esi
mov esi, dword [eax + 0x3c]
mov dword [esp + 0x6c], esi
add ecx, esi
mov edi, dword [eax + 0x40]
add ecx, edi
mov esi, dword [eax + 0x44]
mov dword [esp + 0x14], esi
add ecx, esi
mov esi, dword [eax + 0x48]
mov dword [esp + 0x4c], esi
add ecx, esi
mov esi, dword [eax + 0x4c]
mov dword [esp + 0x98], esi
add ecx, esi
mov esi, dword [eax + 0x50]
mov dword [esp + 0x34], esi
add ecx, esi
mov esi, dword [eax + 0x54]
mov dword [esp + 0x94], esi
add ecx, esi
mov esi, dword [eax + 0x58]
mov dword [esp + 0x78], esi
add ecx, esi
mov esi, dword [eax + 0x5c]
mov dword [esp + 0x8c], esi
add ecx, esi
mov esi, dword [eax + 0x60]
mov dword [esp + 0x30], esi
add ecx, esi
mov esi, dword [eax + 0x64]
mov dword [esp + 0x88], esi
add ecx, esi
mov esi, dword [eax + 0x68]
mov dword [esp + 0x74], esi
add ecx, esi
mov esi, dword [eax + 0x6c]
mov dword [esp + 0x84], esi
add ecx, esi
mov esi, dword [eax + 0x70]
mov dword [esp + 0x70], esi
add ecx, esi
mov esi, dword [eax + 0x74]
mov dword [esp + 0x48], esi
add ecx, esi
mov esi, dword [eax + 0x78]
mov dword [esp + 0xdc], esi
add ecx, esi
mov esi, dword [eax + 0x7c]
mov dword [esp + 0xbc], esi
add ecx, esi
mov esi, dword [eax + 0x80]
mov dword [esp + 0x13c], esi
add ecx, esi
mov esi, dword [eax + 0x84]
mov dword [esp + 0x118], esi
add ecx, esi
mov esi, dword [eax + 0x88]
mov dword [esp + 0x134], esi
add ecx, esi
mov esi, dword [eax + 0x8c]
mov dword [esp + 0x138], esi
add ecx, esi
cmp ecx, 0x1000
jb 0x55bca4
shr ecx, 0xb
bsr ecx, ecx
shr edx, cl
mov esi, dword [esp + 0x50]
shr esi, cl
mov dword [esp + 0x50], esi
mov dword [esp + 0x130], edx
add edx, 1
mov dword [eax], edx
mov ebx, dword [esp + 0xa0]
shr ebx, cl
mov dword [esp + 0xa0], ebx
lea edx, [esi + 1]
mov dword [eax + 4], edx
lea edx, [ebx + 1]
mov dword [eax + 8], edx
mov edx, dword [esp + 0xc0]
shr edx, cl
mov dword [esp + 0xc0], edx
add edx, 1
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0xe0]
shr edx, cl
mov dword [esp + 0xe0], edx
mov ebx, dword [esp + 0xf0]
shr ebx, cl
mov dword [esp + 0xf0], ebx
add edx, 1
mov dword [eax + 0x10], edx
mov esi, dword [esp + 0x100]
shr esi, cl
mov dword [esp + 0x100], esi
lea edx, [ebx + 1]
mov dword [eax + 0x14], edx
lea edx, [esi + 1]
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0x1c]
shr edx, cl
mov dword [esp + 0x1c], edx
add edx, 1
mov dword [eax + 0x1c], edx
mov edx, dword [esp + 0x24]
shr edx, cl
mov dword [esp + 0x24], edx
mov ebx, dword [esp + 0x2c]
shr ebx, cl
mov dword [esp + 0x2c], ebx
add edx, 1
mov dword [eax + 0x20], edx
mov esi, dword [esp + 0x28]
shr esi, cl
mov dword [esp + 0x28], esi
lea edx, [ebx + 1]
mov dword [eax + 0x24], edx
lea edx, [esi + 1]
mov dword [eax + 0x28], edx
mov edx, dword [esp + 0x80]
shr edx, cl
mov dword [esp + 0x80], edx
add edx, 1
mov dword [eax + 0x2c], edx
mov esi, dword [esp + 0x20]
shr esi, cl
mov dword [esp + 0x20], esi
mov dword [esp + 0xd8], edi
mov ebx, dword [esp + 0x9c]
mov edi, dword [esp + 0x7c]
shr edi, cl
mov dword [esp + 0x7c], edi
lea edx, [esi + 1]
mov dword [eax + 0x30], edx
shr ebx, cl
mov dword [esp + 0x9c], ebx
lea edx, [edi + 1]
mov dword [eax + 0x34], edx
lea edx, [ebx + 1]
mov dword [eax + 0x38], edx
mov edx, dword [esp + 0x6c]
shr edx, cl
mov dword [esp + 0x6c], edx
add edx, 1
mov dword [eax + 0x3c], edx
mov edx, dword [esp + 0xd8]
shr edx, cl
mov dword [esp + 0xd8], edx
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x14]
shr edi, cl
mov dword [esp + 0x14], edi
add edx, 1
mov dword [eax + 0x40], edx
shr esi, cl
mov dword [esp + 0x4c], esi
lea edx, [edi + 1]
mov dword [eax + 0x44], edx
lea edx, [esi + 1]
mov dword [eax + 0x48], edx
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x98]
shr edx, cl
mov dword [esp + 0x98], edx
add edx, 1
mov dword [eax + 0x4c], edx
shr esi, cl
mov dword [esp + 0x34], esi
mov edi, dword [esp + 0x78]
mov ebx, dword [esp + 0x94]
shr ebx, cl
mov dword [esp + 0x94], ebx
lea edx, [esi + 1]
mov dword [eax + 0x50], edx
shr edi, cl
mov dword [esp + 0x78], edi
lea edx, [ebx + 1]
mov dword [eax + 0x54], edx
lea edx, [edi + 1]
mov dword [eax + 0x58], edx
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x8c]
shr edx, cl
mov dword [esp + 0x8c], edx
add edx, 1
mov dword [eax + 0x5c], edx
shr esi, cl
mov dword [esp + 0x30], esi
mov edi, dword [esp + 0x74]
mov ebx, dword [esp + 0x88]
shr ebx, cl
mov dword [esp + 0x88], ebx
lea edx, [esi + 1]
mov dword [eax + 0x60], edx
shr edi, cl
mov dword [esp + 0x74], edi
lea edx, [ebx + 1]
mov dword [eax + 0x64], edx
lea edx, [edi + 1]
mov dword [eax + 0x68], edx
mov esi, dword [esp + 0x70]
mov edx, dword [esp + 0x84]
shr edx, cl
mov dword [esp + 0x84], edx
add edx, 1
mov dword [eax + 0x6c], edx
shr esi, cl
mov dword [esp + 0x70], esi
mov edi, dword [esp + 0xdc]
mov ebx, dword [esp + 0x48]
shr ebx, cl
mov dword [esp + 0x48], ebx
lea edx, [esi + 1]
mov dword [eax + 0x70], edx
shr edi, cl
mov dword [esp + 0xdc], edi
lea edx, [ebx + 1]
mov dword [eax + 0x74], edx
lea edx, [edi + 1]
mov dword [eax + 0x78], edx
mov esi, dword [esp + 0x13c]
mov edx, dword [esp + 0xbc]
shr edx, cl
mov dword [esp + 0xbc], edx
add edx, 1
mov dword [eax + 0x7c], edx
shr esi, cl
mov ebx, dword [esp + 0x134]
mov edi, dword [esp + 0x118]
shr edi, cl
lea edx, [esi + 1]
mov dword [eax + 0x80], edx
shr ebx, cl
lea edx, [edi + 1]
mov dword [eax + 0x84], edx
lea edx, [ebx + 1]
mov dword [eax + 0x88], edx
mov edx, dword [esp + 0x138]
shr edx, cl
lea ecx, [edx + 1]
mov dword [eax + 0x8c], ecx
mov eax, dword [esp + 0x130]
mov ecx, dword [esp + 0x50]
lea eax, [ecx + eax + 2]
mov ecx, dword [esp + 0xa0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xc0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xe0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xf0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x100]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x1c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x24]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x28]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x80]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x20]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x9c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x6c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xd8]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x4c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x98]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x34]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x94]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x78]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x8c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x30]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x88]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x74]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x84]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x70]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x48]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xdc]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xbc]
lea eax, [ecx + eax + 1]
add eax, esi
add eax, 1
add eax, edi
add eax, 1
add eax, ebx
add eax, 1
lea ecx, [edx + eax]
add ecx, 1
mov edi, dword [esp + 0xc]
mov dword [edi + 0x7c], ecx
mov eax, dword [edi + 0x68]
movdqu xmm0, xmmword [eax + 0x50]
movdqu xmm1, xmmword [eax + 0x70]
movdqu xmm2, xmmword [eax + 0x30]
paddd xmm2, xmm1
movdqu xmm1, xmmword [eax + 0x40]
movdqu xmm3, xmmword [eax]
paddd xmm3, xmm1
movdqu xmm1, xmmword [eax + 0x10]
paddd xmm1, xmm0
paddd xmm1, xmm2
movdqu xmm0, xmmword [eax + 0x60]
movdqu xmm2, xmmword [eax + 0x20]
paddd xmm2, xmm0
paddd xmm2, xmm3
paddd xmm2, xmm1
movdqu xmm0, xmmword [eax + 0xa0]
movdqu xmm1, xmmword [eax + 0x80]
paddd xmm1, xmm0
movdqu xmm0, xmmword [eax + 0xb0]
movdqu xmm3, xmmword [eax + 0x90]
paddd xmm3, xmm0
paddd xmm3, xmm1
movdqu xmm0, xmmword [eax + 0xc0]
pshufd xmm1, xmm2, 0xee
paddd xmm1, xmm2
pshufd xmm2, xmm1, 0x55
paddd xmm2, xmm1
movd ecx, xmm2
pshufd xmm1, xmm3, 0xee
paddd xmm1, xmm3
pshufd xmm2, xmm1, 0x55
paddd xmm2, xmm1
movd edx, xmm2
add edx, ecx
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd ecx, xmm0
add ecx, edx
add ecx, dword [eax + 0xd0]
cmp ecx, 0x1000
jb 0x55bf47
shr ecx, 0xb
bsr ecx, ecx
movd xmm2, ecx
movdqu xmm1, xmmword [eax]
movdqu xmm0, xmmword [eax + 0x10]
psrld xmm1, xmm2
pcmpeqd xmm3, xmm3
psubd xmm1, xmm3
movdqa xmmword [esp + 0x50], xmm1
movdqu xmmword [eax], xmm1
psrld xmm0, xmm2
psubd xmm0, xmm3
movdqa xmmword [esp + 0xa0], xmm0
movdqu xmmword [eax + 0x10], xmm0
movdqu xmm0, xmmword [eax + 0x20]
psrld xmm0, xmm2
psubd xmm0, xmm3
movdqa xmmword [esp + 0xc0], xmm0
movdqu xmmword [eax + 0x20], xmm0
movdqu xmm5, xmmword [eax + 0x30]
psrld xmm5, xmm2
psubd xmm5, xmm3
movdqu xmmword [eax + 0x30], xmm5
movdqu xmm0, xmmword [eax + 0x40]
psrld xmm0, xmm2
psubd xmm0, xmm3
movdqa xmmword [esp + 0xe0], xmm0
movdqu xmmword [eax + 0x40], xmm0
movdqu xmm6, xmmword [eax + 0x50]
psrld xmm6, xmm2
psubd xmm6, xmm3
movdqu xmmword [eax + 0x50], xmm6
movdqu xmm0, xmmword [eax + 0x60]
psrld xmm0, xmm2
psubd xmm0, xmm3
movdqa xmmword [esp + 0xf0], xmm0
movdqu xmmword [eax + 0x60], xmm0
movdqu xmm0, xmmword [eax + 0x70]
psrld xmm0, xmm2
psubd xmm0, xmm3
movdqa xmmword [esp + 0x100], xmm0
movdqu xmmword [eax + 0x70], xmm0
movdqu xmm1, xmmword [eax + 0x80]
psrld xmm1, xmm2
psubd xmm1, xmm3
pcmpeqd xmm0, xmm0
movdqu xmmword [eax + 0x80], xmm1
movdqu xmm7, xmmword [eax + 0x90]
psrld xmm7, xmm2
psubd xmm7, xmm0
movdqu xmmword [eax + 0x90], xmm7
movdqu xmm4, xmmword [eax + 0xa0]
psrld xmm4, xmm2
psubd xmm4, xmm0
movdqu xmmword [eax + 0xa0], xmm4
movdqu xmm3, xmmword [eax + 0xb0]
psrld xmm3, xmm2
psubd xmm3, xmm0
movdqu xmmword [eax + 0xb0], xmm3
movdqu xmm0, xmmword [eax + 0xc0]
psrld xmm0, xmm2
psubd xmm0, xmmword [0x688380]
movdqa xmm2, xmmword [esp + 0xa0]
paddd xmm2, xmmword [esp + 0x50]
paddd xmm5, xmmword [esp + 0xc0]
paddd xmm5, xmm2
paddd xmm6, xmmword [esp + 0xe0]
paddd xmm6, xmmword [esp + 0xf0]
paddd xmm6, xmm5
paddd xmm1, xmmword [esp + 0x100]
paddd xmm1, xmm7
paddd xmm1, xmm4
paddd xmm1, xmm6
movdqu xmmword [eax + 0xc0], xmm0
paddd xmm0, xmm3
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
mov edx, dword [eax + 0xd0]
shr edx, cl
movd ecx, xmm0
lea esi, [edx + 1]
mov dword [eax + 0xd0], esi
add ecx, edx
add ecx, 1
mov dword [edi + 0x80], ecx
mov eax, dword [edi + 0x6c]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x50], edx
add edx, ecx
mov esi, dword [eax + 8]
mov dword [esp + 0xa0], esi
add edx, esi
mov esi, dword [eax + 0xc]
mov dword [esp + 0xc0], esi
add edx, esi
mov esi, dword [eax + 0x10]
mov dword [esp + 0xe0], esi
add edx, esi
mov esi, dword [eax + 0x14]
mov dword [esp + 0xf0], esi
add edx, esi
mov esi, dword [eax + 0x18]
mov dword [esp + 0x100], esi
add edx, esi
mov esi, dword [eax + 0x1c]
mov dword [esp + 0x1c], esi
add edx, esi
mov esi, dword [eax + 0x20]
mov dword [esp + 0x24], esi
add edx, esi
mov esi, dword [eax + 0x24]
mov dword [esp + 0x2c], esi
add edx, esi
mov esi, dword [eax + 0x28]
mov dword [esp + 0x28], esi
add edx, esi
mov esi, dword [eax + 0x2c]
mov dword [esp + 0x80], esi
add edx, esi
mov esi, dword [eax + 0x30]
mov dword [esp + 0x48], esi
add edx, esi
mov edi, dword [eax + 0x34]
mov dword [esp + 0x20], edi
add edx, edi
mov edi, dword [eax + 0x38]
mov dword [esp + 0x7c], edi
add edx, edi
mov edi, dword [eax + 0x3c]
mov dword [esp + 0x9c], edi
add edx, edi
mov edi, dword [eax + 0x40]
mov dword [esp + 0x4c], edi
add edx, edi
mov edi, dword [eax + 0x44]
mov dword [esp + 0x14], edi
add edx, edi
mov edi, dword [eax + 0x48]
mov dword [esp + 0x34], edi
add edx, edi
mov ebx, dword [eax + 0x4c]
mov dword [esp + 0x98], ebx
add edx, ebx
mov esi, dword [eax + 0x50]
mov dword [esp + 0x70], esi
add edx, esi
mov edi, dword [eax + 0x54]
mov dword [esp + 0x94], edi
add edx, edi
mov edi, dword [eax + 0x58]
mov dword [esp + 0x78], edi
add edx, edi
mov edi, dword [eax + 0x5c]
mov dword [esp + 0x8c], edi
add edx, edi
mov edi, dword [eax + 0x60]
mov dword [esp + 0x30], edi
add edx, edi
mov edi, dword [eax + 0x64]
mov dword [esp + 0x88], edi
add edx, edi
mov edi, dword [eax + 0x68]
mov dword [esp + 0x84], edi
add edx, edi
mov edi, dword [eax + 0x6c]
mov dword [esp + 0xbc], edi
add edx, edi
mov edi, dword [eax + 0x70]
mov dword [esp + 0x74], edi
add edx, edi
mov edi, dword [eax + 0x74]
mov dword [esp + 0xdc], edi
add edx, edi
mov edi, dword [eax + 0x78]
mov dword [esp + 0xd8], edi
add edx, edi
mov edi, dword [eax + 0x7c]
mov dword [esp + 0x6c], edi
add edx, edi
cmp edx, 0x1000
jb 0x55c400
shr edx, 0xb
mov edi, ecx
bsr ecx, edx
shr edi, cl
mov dword [esp + 0x118], edi
mov esi, dword [esp + 0x50]
shr esi, cl
mov dword [esp + 0x50], esi
lea edx, [edi + 1]
mov dword [eax], edx
mov edi, dword [esp + 0xa0]
shr edi, cl
mov dword [esp + 0xa0], edi
lea edx, [esi + 1]
mov dword [eax + 4], edx
lea edx, [edi + 1]
mov dword [eax + 8], edx
mov edx, dword [esp + 0xc0]
shr edx, cl
mov dword [esp + 0xc0], edx
add edx, 1
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0xe0]
shr edx, cl
mov dword [esp + 0xe0], edx
mov edi, dword [esp + 0xf0]
shr edi, cl
mov dword [esp + 0xf0], edi
add edx, 1
mov dword [eax + 0x10], edx
mov esi, dword [esp + 0x100]
shr esi, cl
mov dword [esp + 0x100], esi
lea edx, [edi + 1]
mov dword [eax + 0x14], edx
lea edx, [esi + 1]
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0x1c]
shr edx, cl
mov dword [esp + 0x1c], edx
add edx, 1
mov dword [eax + 0x1c], edx
mov edx, dword [esp + 0x24]
shr edx, cl
mov dword [esp + 0x24], edx
mov edi, dword [esp + 0x2c]
shr edi, cl
mov dword [esp + 0x2c], edi
add edx, 1
mov dword [eax + 0x20], edx
mov esi, dword [esp + 0x28]
shr esi, cl
mov dword [esp + 0x28], esi
lea edx, [edi + 1]
mov dword [eax + 0x24], edx
lea edx, [esi + 1]
mov dword [eax + 0x28], edx
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x80]
shr edx, cl
mov dword [esp + 0x80], edx
add edx, 1
mov dword [eax + 0x2c], edx
shr esi, cl
mov dword [esp + 0x48], esi
mov edi, dword [esp + 0x20]
shr edi, cl
mov dword [esp + 0x20], edi
lea edx, [esi + 1]
mov dword [eax + 0x30], edx
mov ebx, dword [esp + 0x9c]
mov esi, dword [esp + 0x7c]
shr esi, cl
mov dword [esp + 0x7c], esi
lea edx, [edi + 1]
mov dword [eax + 0x34], edx
lea edx, [esi + 1]
mov dword [eax + 0x38], edx
shr ebx, cl
mov dword [esp + 0x9c], ebx
lea edx, [ebx + 1]
mov dword [eax + 0x3c], edx
mov edx, dword [esp + 0x4c]
shr edx, cl
mov dword [esp + 0x4c], edx
mov edi, dword [esp + 0x14]
shr edi, cl
mov dword [esp + 0x14], edi
add edx, 1
mov dword [eax + 0x40], edx
mov esi, dword [esp + 0x34]
shr esi, cl
mov dword [esp + 0x34], esi
lea edx, [edi + 1]
mov dword [eax + 0x44], edx
lea edx, [esi + 1]
mov dword [eax + 0x48], edx
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x98]
shr edx, cl
mov dword [esp + 0x98], edx
add edx, 1
mov dword [eax + 0x4c], edx
mov ebx, dword [esp + 0x70]
shr ebx, cl
mov dword [esp + 0x70], ebx
mov edi, dword [esp + 0x94]
shr edi, cl
mov dword [esp + 0x94], edi
lea edx, [ebx + 1]
mov dword [eax + 0x50], edx
shr esi, cl
mov dword [esp + 0x78], esi
lea edx, [edi + 1]
mov dword [eax + 0x54], edx
lea edx, [esi + 1]
mov dword [eax + 0x58], edx
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x8c]
shr edx, cl
mov dword [esp + 0x8c], edx
add edx, 1
mov dword [eax + 0x5c], edx
mov edx, dword [esp + 0x30]
shr edx, cl
mov dword [esp + 0x30], edx
mov edi, dword [esp + 0x88]
shr edi, cl
mov dword [esp + 0x88], edi
add edx, 1
mov dword [eax + 0x60], edx
shr esi, cl
mov dword [esp + 0x84], esi
lea edx, [edi + 1]
mov dword [eax + 0x64], edx
lea edx, [esi + 1]
mov dword [eax + 0x68], edx
mov esi, dword [esp + 0xd8]
mov ebx, dword [esp + 0xbc]
shr ebx, cl
lea edx, [ebx + 1]
mov dword [eax + 0x6c], edx
mov edx, dword [esp + 0x74]
shr edx, cl
mov dword [esp + 0x74], edx
mov edi, dword [esp + 0xdc]
shr edi, cl
add edx, 1
mov dword [eax + 0x70], edx
shr esi, cl
lea edx, [edi + 1]
mov dword [eax + 0x74], edx
lea edx, [esi + 1]
mov dword [eax + 0x78], edx
mov edx, dword [esp + 0x6c]
shr edx, cl
lea ecx, [edx + 1]
mov dword [eax + 0x7c], ecx
mov eax, dword [esp + 0x118]
mov ecx, dword [esp + 0x50]
lea eax, [ecx + eax + 2]
mov ecx, dword [esp + 0xa0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xc0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xe0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0xf0]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x100]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x1c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x24]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x28]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x80]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x48]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x20]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x9c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x4c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x34]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x98]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x70]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x94]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x78]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x8c]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x30]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x88]
lea eax, [ecx + eax + 1]
mov ecx, dword [esp + 0x84]
lea eax, [ecx + eax + 1]
lea eax, [ebx + eax + 1]
mov ecx, dword [esp + 0x74]
add eax, ecx
add eax, 1
add eax, edi
add eax, 1
add eax, esi
add eax, 1
add edx, eax
add edx, 1
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov ebx, dword [ebp + 0x10]
jmp 0x55c821
cmp ebx, 0x400
ja 0x55c422
mov dword [ecx + 0x98], 1
mov edx, dword [ecx + 0x9c]
cmp dword [edx + 0x404], 2
jne 0x55c650
mov dword [ecx + 0x98], 0
mov dword [esp + 0xe0], eax
cmp eax, 2
mov ebx, edx
je 0x55c4ac
mov dword [ecx + 0x78], 0
mov eax, dword [ecx + 0x60]
xor edx, edx
mov esi, 1
nop
mov ch, byte [ebx + edx*4 + 4]
mov cl, 0xb
sub cl, ch
mov edi, 1
shl edi, cl
test ch, ch
cmove edi, esi
mov dword [eax + edx*4], edi
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x78], edi
mov ch, byte [ebx + edx*4 + 8]
mov cl, 0xb
sub cl, ch
mov edi, 1
shl edi, cl
test ch, ch
cmove edi, esi
mov dword [eax + edx*4 + 4], edi
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x78], edi
mov ecx, dword [esp + 0xc]
add edx, 2
cmp edx, 0x100
jne 0x55c460
movzx eax, word [ebx + 0xcb8]
mov edi, ecx
mov ecx, eax
add cl, 0xff
mov esi, 1
mov edx, 1
shl edx, cl
test ax, ax
cmove edx, esi
mov dword [edi + 0x7c], 0
mov eax, dword [edi + 0x64]
mov dword [esp + 0x50], eax
mov dword [esp + 0xc0], ebx
lea eax, [ebx + edx*4]
add eax, 0xcc8
mov dword [esp + 0xa0], eax
xor eax, eax
mov edi, dword [esp + 0x50]
nop word cs:[eax + eax]
mov ebx, dword [esp + 0xa0]
mov esi, dword [ebx + eax*8 - 8]
mov ecx, 0xffff
add esi, ecx
mov edx, esi
shr edx, 0x10
mov cl, 0xa
sub cl, dl
mov edx, 1
shl edx, cl
cmp esi, 0x10000
mov ecx, 1
cmovb edx, ecx
mov dword [edi + eax*4], edx
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x7c], edx
mov edx, dword [ebx + eax*8]
mov ecx, 0xffff
add edx, ecx
mov ebx, edx
shr ebx, 0x10
mov cl, 0xa
sub cl, bl
mov esi, 1
shl esi, cl
cmp edx, 0x10000
mov ecx, 1
cmovb esi, ecx
mov dword [edi + eax*4 + 4], esi
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x7c], esi
add eax, 2
cmp eax, 0x24
jne 0x55c500
mov esi, dword [esp + 0xc0]
movzx eax, word [esi + 0x70c]
mov ecx, eax
add cl, 0xff
mov ebx, 1
mov edx, 1
shl edx, cl
test ax, ax
cmove edx, ebx
mov eax, dword [esp + 0xc]
mov dword [eax + 0x80], 0
mov eax, dword [eax + 0x68]
mov dword [esp + 0x50], eax
lea eax, [esi + edx*4]
add eax, 0x714
mov dword [esp + 0xa0], eax
mov edi, 0xffff
mov edx, 1
nop dword [eax + eax]
mov eax, dword [esp + 0xa0]
mov esi, dword [eax + edx*8 - 8]
add esi, edi
mov eax, esi
shr eax, 0x10
mov cl, 0xa
sub cl, al
mov eax, 1
shl eax, cl
cmp esi, 0x10000
cmovb eax, ebx
mov ecx, dword [esp + 0x50]
mov dword [ecx + edx*4 - 4], eax
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x80], eax
cmp edx, 0x35
je 0x55dec8
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + edx*8]
add eax, edi
mov ebx, eax
shr ebx, 0x10
mov cl, 0xa
sub cl, bl
mov ebx, 1
mov esi, 1
shl esi, cl
cmp eax, 0x10000
cmovb esi, ebx
mov eax, dword [esp + 0x50]
mov dword [eax + edx*4], esi
mov eax, dword [esp + 0xc]
add dword [eax + 0x80], esi
add edx, 2
jmp 0x55c5d0
cmp eax, 2
je 0x55c73c
mov esi, dword [ecx + 0x60]
push 0x400
push 0
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
test ebx, ebx
mov edx, dword [esp + 0x114]
jle 0x55c68e
mov eax, dword [ebp + 0xc]
nop word [eax + eax]
movzx ecx, byte [eax]
add eax, 1
add dword [esi + ecx*4], 1
cmp eax, edx
jb 0x55c680
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x60]
pxor xmm0, xmm0
xor ecx, ecx
pcmpeqd xmm2, xmm2
pxor xmm1, xmm1
nop word cs:[eax + eax]
nop dword [eax]
movdqu xmm4, xmmword [eax + ecx*4]
movdqu xmm3, xmmword [eax + ecx*4 + 0x10]
psrld xmm4, 8
psrld xmm3, 8
psubd xmm4, xmm2
psubd xmm3, xmm2
movdqu xmmword [eax + ecx*4], xmm4
movdqu xmmword [eax + ecx*4 + 0x10], xmm3
paddd xmm4, xmm0
paddd xmm3, xmm1
movdqu xmm0, xmmword [eax + ecx*4 + 0x20]
movdqu xmm1, xmmword [eax + ecx*4 + 0x30]
psrld xmm0, 8
psrld xmm1, 8
psubd xmm0, xmm2
psubd xmm1, xmm2
movdqu xmmword [eax + ecx*4 + 0x20], xmm0
movdqu xmmword [eax + ecx*4 + 0x30], xmm1
paddd xmm0, xmm4
paddd xmm1, xmm3
add ecx, 0x10
cmp ecx, 0x100
jne 0x55c6b0
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
mov ecx, dword [esp + 0xc]
movd dword [ecx + 0x78], xmm1
push 0x90
push 0x68ae18
push dword [ecx + 0x64]
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov dword [ecx + 0x7c], 0x28
mov eax, dword [ecx + 0x68]
movaps xmm0, xmmword [0x688370]
movups xmmword [eax], xmm0
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax + 0x20], xmm0
movups xmmword [eax + 0x30], xmm0
movups xmmword [eax + 0x40], xmm0
movups xmmword [eax + 0x50], xmm0
movups xmmword [eax + 0x60], xmm0
movups xmmword [eax + 0x70], xmm0
movups xmmword [eax + 0x80], xmm0
movups xmmword [eax + 0x90], xmm0
movups xmmword [eax + 0xa0], xmm0
movups xmmword [eax + 0xb0], xmm0
movups xmmword [eax + 0xc0], xmm0
mov dword [eax + 0xd0], 1
mov dword [ecx + 0x80], 0x35
mov eax, dword [ecx + 0x6c]
movups xmm0, xmmword [0x68af18]
movups xmmword [eax + 0x70], xmm0
movups xmm0, xmmword [0x68af08]
movups xmmword [eax + 0x60], xmm0
movups xmm0, xmmword [0x68aef8]
movups xmmword [eax + 0x50], xmm0
movups xmm0, xmmword [0x68aee8]
movups xmmword [eax + 0x40], xmm0
movups xmm0, xmmword [0x68aed8]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [0x68aec8]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [0x68aeb8]
movups xmmword [eax + 0x10], xmm0
movdqu xmm0, xmmword [0x68aea8]
movdqu xmmword [eax], xmm0
mov edx, 0x35
mov esi, dword [esp + 0x10]
mov dword [ecx + 0x84], edx
mov edi, dword [ecx + 0xa0]
mov eax, dword [ebp + 0xc]
add eax, ebx
add eax, 0xfffffff8
mov dword [esp + 0x48], eax
cmp edi, 2
je 0x55c856
mov eax, dword [ecx + 0x78]
add eax, 1
bsr eax, eax
xor eax, 0x1f
xor eax, 0x1f
shl eax, 8
mov dword [ecx + 0x88], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x80]
add ecx, 1
bsr ecx, ecx
xor ecx, 0x1f
xor ecx, 0x1f
shl ecx, 8
mov ebx, dword [esp + 0xc]
mov dword [ebx + 0x8c], ecx
mov ecx, dword [esp + 0xc]
add eax, 1
bsr eax, eax
xor eax, 0x1f
xor eax, 0x1f
shl eax, 8
mov dword [ecx + 0x90], eax
add edx, 1
bsr eax, edx
xor eax, 0x1f
xor eax, 0x1f
shl eax, 8
mov dword [ecx + 0x94], eax
xor eax, eax
mov ecx, dword [ebp + 0xc]
cmp dword [esp + 0x18], ecx
sete al
add eax, ecx
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x48]
mov eax, dword [esp + 0x114]
jae 0x55debe
mov ecx, dword [ebp + 0x14]
shl ecx, 4
xor ebx, ebx
mov dl, byte [esp + 0x120]
mov bl, dl
mov edx, 4
sub edx, ebx
mov edi, dword [esp + 0x11c]
mov ecx, dword [ecx + edi*4 + 0x68ade8]
mov dword [esp + 0xbc], ecx
lea edi, [edx - 1]
mov ebx, edi
and ebx, 3
and edi, 0xfffffffc
neg edi
lea ecx, [ebx + ebx*8]
lea ecx, [ecx + ecx*2]
mov dword [esp + 0x120], ebx
add ecx, ebx
mov ebx, ecx
lea ecx, [eax - 0x20]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x34], edx
lea ecx, [edx - 2]
mov dword [esp + 0xd8], ecx
lea ecx, [esi + 0x70]
mov dword [esp + 0x4c], ecx
lea ecx, [esi + 0xc]
mov dword [esp + 0x74], ecx
lea ecx, [esi + 0x1c]
mov edx, ebx
mov dword [esp + 0x7c], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x20], ecx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x11c], edx
jmp 0x55c9d3
mov eax, dword [esi + 0x7c]
mov ecx, dword [esi + 0x80]
add eax, 1
bsr eax, eax
xor eax, 0x1f
xor eax, 0x1f
shl eax, 8
add ecx, 1
bsr ecx, ecx
xor ecx, 0x1f
xor ecx, 0x1f
shl ecx, 8
mov edx, dword [esi + 0x84]
add edx, 1
bsr edx, edx
xor edx, 0x1f
xor edx, 0x1f
shl edx, 8
mov dword [esi + 0x8c], eax
mov dword [esi + 0x90], ecx
mov dword [esi + 0x94], edx
mov ebx, dword [esp + 0x14]
cmp ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x114]
jae 0x55deba
xor ecx, ecx
mov edx, ebx
sub edx, dword [esp + 0x20]
mov dword [esp + 0x18], edx
sete cl
push dword [esp + 0x34]
push ecx
mov edi, dword [ebp + 8]
push edi
push eax
push ebx
lea ecx, [esp + 0x140]
push ecx
push dword [esp + 0x24]
mov edi, dword [esp + 0xac]
push edi
mov esi, eax
call dword [esp + 0xdc]
add esp, 0x20
mov dword [esp + 0x38], eax
mov eax, ebx
sub eax, dword [ebp + 0xc]
sub esi, ebx
lea ecx, [esp + 0x150]
mov edx, edi
push esi
push eax
lea eax, [esp + 0x40]
push eax
call fcn.00585760
add esp, 0xc
mov edi, dword [esp + 0x38]
test edi, edi
je 0x55cad0
mov dword [esp + 0x14], ebx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
mov edx, dword [esp + 0x10]
mov dword [edx + 0x10], eax
mov eax, dword [ecx + 4]
mov dword [edx + 0x14], eax
mov eax, dword [ecx + 8]
mov dword [edx + 0x18], eax
mov dword [edx + 8], 0
mov ecx, dword [esp + 0x18]
mov dword [edx + 0xc], ecx
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0x98]
mov dword [esp + 0x24], eax
cmp eax, 1
jne 0x55caf0
lea eax, [ecx + 1]
bsr ecx, eax
xor ecx, 0x1f
xor ecx, 0x1f
shl ecx, 8
mov dword [edx], ecx
mov eax, dword [esp + 0x90]
mov edx, dword [eax + edi*8 - 4]
xor eax, eax
mov dword [esp + 0x50], edx
cmp edx, dword [esp + 0x124]
mov ebx, dword [esp + 0x6c]
ja 0x55cb89
mov dword [esp + 0x1c], edi
mov edx, 1
cmp dword [esp + 0xd8], 3
jae 0x55cbc5
jmp 0x55cbfc
add ebx, 1
cmp ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x114]
jb 0x55c9d3
jmp 0x55deba
cmp ecx, 0x20000
jne 0x55cb23
mov eax, esi
mov esi, dword [esi + 0x64]
mov eax, dword [eax + 0x8c]
mov ecx, dword [esi + 0x8c]
add ecx, 1
bsr ecx, ecx
xor ecx, 0x1f
shl ecx, 8
add ecx, eax
add ecx, 0xfffff200
mov ebx, dword [esp + 0x6c]
jmp 0x55cb6b
cmp ecx, 0x40
jb 0x55cb33
bsr ecx, ecx
xor ecx, 0xffffffe0
add ecx, 0x33
jmp 0x55cb3a
movzx ecx, byte [ecx + 0x689a02]
mov ebx, dword [esp + 0x6c]
movzx edx, byte [ecx + 0x6893bc]
mov eax, dword [esp + 0xc]
mov esi, dword [eax + 0x64]
mov eax, dword [eax + 0x8c]
mov ecx, dword [esi + ecx*4]
add ecx, 1
bsr ecx, ecx
xor ecx, 0x1f
add ecx, edx
shl ecx, 8
add ecx, eax
add ecx, 0xffffe100
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
mov edx, dword [esp + 0x90]
mov edx, dword [edx + edi*8 - 4]
mov dword [esp + 0x50], edx
cmp edx, dword [esp + 0x124]
jbe 0x55cb9d
add edi, 0xffffffff
mov eax, dword [esp + 0x90]
mov eax, dword [eax + edi*8]
xor ebx, ebx
jmp 0x55d767
mov edx, dword [esi]
add edx, 1
bsr edx, edx
xor edx, 0x1f
shl edx, 8
add eax, edx
add eax, 0xffffe100
mov dword [esp + 0x1c], edi
mov edx, 1
cmp dword [esp + 0xd8], 3
jb 0x55cbfc
mov edx, 1
mov esi, dword [esp + 0x4c]
nop
mov dword [esi - 0x54], 0x40000000
mov dword [esi - 0x38], 0x40000000
mov dword [esi - 0x1c], 0x40000000
mov dword [esi], 0x40000000
add esi, 0x70
lea edi, [ebx + edx]
add edi, 4
add edx, 4
cmp edi, 1
jne 0x55cbd0
cmp dword [esp + 0x120], 0
mov edi, dword [esp + 0x11c]
je 0x55cc2e
lea esi, [edx + edx*8]
lea esi, [esi + esi*2]
add esi, edx
add esi, dword [esp + 0x10]
xor edx, edx
nop dword [eax + eax]
mov dword [esi + edx], 0x40000000
add edx, 0x1c
cmp edi, edx
jne 0x55cc20
mov esi, dword [esp + 0x1c]
cmp esi, 2
mov edx, 1
cmovb esi, edx
mov dword [esp + 0x1c], esi
lea edx, [eax + ecx - 0x3e00]
mov dword [esp + 0x2c], edx
add eax, ecx
add eax, 0x1000
mov dword [esp + 0x28], eax
xor ecx, ecx
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
jmp 0x55cc84
mov ecx, dword [esp + 0x100]
add ecx, 1
cmp ecx, dword [esp + 0x1c]
je 0x55cde0
mov eax, dword [esp + 0x90]
mov esi, dword [eax + ecx*8 + 4]
cmp ebx, esi
mov dword [esp + 0x100], ecx
ja 0x55cc70
mov eax, dword [eax + ecx*8]
mov dword [esp + 0xa0], eax
bsr ecx, eax
cmp dword [esp + 0x24], 1
mov dword [esp + 0x50], esi
jne 0x55cd00
shl ecx, 8
add ecx, dword [esp + 0x28]
lea eax, [ebx + ebx*8]
lea eax, [eax + eax*2]
add eax, ebx
add eax, dword [esp + 0x74]
mov edi, dword [esp + 0xa0]
nop dword [eax]
lea esi, [ebx - 2]
bsr esi, esi
xor esi, 0x1f
xor esi, 0x1f
shl esi, 8
add esi, ecx
mov dword [eax - 4], ebx
mov dword [eax - 8], edi
mov dword [eax], edx
mov dword [eax - 0xc], esi
add ebx, 1
add eax, 0x1c
cmp ebx, dword [esp + 0x50]
jbe 0x55ccd0
jmp 0x55cc70
mov edx, ecx
shl edx, 9
add edx, 0xffffda33
cmp ecx, 0x14
mov eax, 0x33
cmovb edx, eax
mov eax, dword [esp + 0xc]
mov esi, dword [eax + 0x68]
mov dword [esp + 0xe0], esi
mov esi, dword [eax + 0x6c]
mov dword [esp + 0xf0], esi
add edx, dword [esp + 0x2c]
add edx, dword [eax + 0x94]
add edx, dword [eax + 0x90]
mov dword [esp + 0xc0], edx
lea eax, [ebx + ebx*8]
lea edi, [eax + eax*2]
add edi, ebx
add edi, dword [esp + 0x74]
jmp 0x55cdb7
movzx esi, byte [ebx + 0x689a3f]
movzx edx, byte [esi + 0x6892f4]
add eax, ecx
add eax, edx
mov edx, dword [esp + 0xe0]
mov edx, dword [edx + esi*4]
add edx, 1
bsr edx, edx
xor edx, 0x1f
add eax, edx
shl eax, 8
add eax, dword [esp + 0xc0]
mov dword [edi - 4], ebx
mov edx, dword [esp + 0xa0]
mov dword [edi - 8], edx
mov edx, dword [esp + 0x18]
mov dword [edi], edx
mov dword [edi - 0xc], eax
add ebx, 1
add edi, 0x1c
cmp ebx, dword [esp + 0x50]
ja 0x55cc70
lea esi, [ebx - 3]
mov eax, dword [esp + 0xf0]
mov eax, dword [eax + ecx*4]
add eax, 1
bsr eax, eax
xor eax, 0x1f
cmp esi, 0x80
jb 0x55cd60
bsr esi, esi
xor esi, 0xffffffe0
add esi, 0x44
jmp 0x55cd67
add ebx, 0xffffffff
je 0x55d700
mov esi, 1
jmp 0x55cdff
add edi, 1
mov eax, edi
mov esi, eax
cmp eax, ebx
ja 0x55d706
lea edx, [esi - 1]
lea eax, [edx + edx*8]
lea edi, [eax + eax*2]
lea ecx, [esi + edi]
add ecx, 0xffffffff
mov eax, dword [esp + 0x10]
cmp dword [eax + ecx + 8], 0
mov eax, 1
jne 0x55ce2c
lea ecx, [edi + edx]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + ecx + 0xc]
add eax, 1
mov ecx, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0xc0], esi
add edx, esi
mov dword [esp + 0x50], edx
mov dword [esp + 0x78], ecx
add edi, ecx
mov dword [esp + 0x18], edi
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx + edi]
mov edi, dword [esp + 0xc]
mov edx, dword [edi + 0x98]
cmp dword [edi + 0xa0], 2
mov dword [esp + 0xa0], eax
jne 0x55cec0
add esi, 0x800
cmp edx, 1
mov edi, dword [esp + 0xc0]
je 0x55ced2
cmp eax, 0x20000
jne 0x55cf54
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 0x64]
mov ecx, dword [edx + 0x8c]
mov edx, dword [eax + 0x8c]
add edx, 1
bsr edx, edx
xor edx, 0x1f
shl edx, 8
add esi, ecx
add edx, esi
add edx, 0xfffff200
mov esi, 0x1ffff
jmp 0x55cfe0
cmp edx, 1
jne 0x55cf00
add esi, 0x600
mov edi, dword [esp + 0xc0]
lea edx, [eax + 1]
bsr edx, edx
xor edx, 0x1f
xor edx, 0x1f
shl edx, 8
add edx, esi
bsr esi, eax
xor esi, 0x1f
xor esi, 0x1f
shl esi, 8
jmp 0x55d010
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 0x60]
mov dword [esp + 0xe0], ecx
mov edx, dword [edx + 0x88]
mov ecx, dword [esp + 0x50]
movzx edi, byte [ecx - 1]
mov ecx, dword [esp + 0xe0]
mov edi, dword [ecx + edi*4]
lea ecx, [edx - 0x100]
add edi, 1
bsr edi, edi
xor edi, 0x1f
xor edi, 0x1f
shl edi, 8
sub edx, edi
cmp edi, ecx
mov edi, pe_nt_image_headers32
cmova edx, edi
add esi, edx
cmp eax, 0x20000
je 0x55ce87
cmp eax, 0x40
jb 0x55cf64
bsr edx, eax
xor edx, 0xffffffe0
add edx, 0x33
jmp 0x55cf6b
movzx edx, byte [eax + 0x689a02]
mov edi, dword [esp + 0xc]
movzx ecx, byte [edx + 0x6893bc]
mov dword [esp + 0xe0], ecx
mov ecx, dword [edi + 0x64]
mov edx, dword [ecx + edx*4]
add edx, 1
bsr edx, edx
xor edx, 0x1f
add edx, dword [esp + 0xe0]
mov edi, dword [edi + 0x8c]
shl edx, 8
add esi, edi
add edx, esi
add edx, 0xffffe100
lea esi, [eax - 1]
cmp esi, 0x20000
jne 0x55cfcd
mov esi, dword [ecx + 0x8c]
add esi, 1
bsr esi, esi
xor esi, 0x1f
shl esi, 8
add esi, edi
add esi, 0xfffff200
jmp 0x55d009
cmp esi, 0x40
jb 0x55d132
mov eax, ecx
mov ecx, edi
nop word [eax + eax]
bsr esi, esi
xor esi, 0xffffffe0
add esi, 0x33
movzx edi, byte [esi + 0x6893bc]
mov esi, dword [eax + esi*4]
add esi, 1
bsr esi, esi
xor esi, 0x1f
add esi, edi
shl esi, 8
add esi, ecx
add esi, 0xffffe100
mov edi, dword [esp + 0xc0]
sub edx, esi
lea esi, [edi + edi*8]
lea esi, [esi + esi*2]
add esi, edi
mov edi, dword [esp + 0x10]
mov ecx, dword [edi + esi]
lea eax, [edi + esi]
add eax, 8
cmp edx, ecx
mov dword [esp + 0xe0], eax
jle 0x55d0a0
mov dword [esp + 0xa0], ecx
mov ecx, dword [eax]
test ecx, ecx
je 0x55d0c4
mov eax, dword [esp + 0xc0]
sub eax, ecx
lea ecx, [eax + eax*8]
lea edx, [ecx + ecx*2]
add edx, eax
mov edi, dword [esp + 0x10]
mov eax, dword [edi + esi + 4]
mov ecx, dword [edi + esi + 0xc]
mov dword [esp + 0x18], ecx
mov ecx, dword [edi + edx + 0x18]
mov dword [esp + 0x40], ecx
movsd xmm0, qword [edi + edx + 0x10]
movsd qword [esp + 0x38], xmm0
cmp eax, 4
jb 0x55d109
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], ecx
add eax, 0xfffffffd
mov ecx, eax
jmp 0x55d162
mov dword [eax], 0
mov dword [edi + esi + 4], 0
mov eax, dword [esp + 0xa0]
mov dword [edi + esi + 0xc], eax
lea ecx, [edi + esi]
mov dword [ecx], edx
mov eax, dword [esp + 0x18]
jmp 0x55d0d3
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0xa0]
mov ecx, dword [edi + eax + 0x18]
mov dword [edi + esi + 0x18], ecx
movq xmm0, qword [edi + eax + 0x10]
movq qword [edi + esi + 0x10], xmm0
xor ecx, ecx
mov al, 1
mov dword [esp + 0x18], eax
mov edi, dword [esp + 0xc0]
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x48]
ja 0x55cdf0
jmp 0x55d1a7
cmp dword [esp + 0x18], 1
adc eax, 0
add eax, 0xffffffff
mov edi, dword [esp + 0xc0]
mov edx, dword [esp + 0xa0]
je 0x55d174
cmp eax, 3
jne 0x55d142
mov edx, dword [esp + 0x38]
lea ecx, [edx - 1]
jmp 0x55d14a
movzx esi, byte [esi + 0x689a02]
mov eax, ecx
mov ecx, edi
jmp 0x55cfe9
mov ecx, dword [esp + eax*4 + 0x38]
mov edx, dword [esp + 0x38]
cmp eax, 2
lea eax, [esp + 0x40]
lea edi, [esp + 0x3c]
cmovae eax, edi
mov eax, dword [eax]
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], edx
mov edi, dword [esp + 0xc0]
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
mov dword [ecx + esi + 0x18], eax
movq xmm0, qword [esp + 0x38]
movq qword [ecx + esi + 0x10], xmm0
mov ecx, 1
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x48]
ja 0x55cdf0
cmp edi, ebx
je 0x55d704
mov dword [esp + 0xf0], ecx
lea eax, [edi + 1]
mov dword [esp + 0x70], eax
mov ecx, edx
lea edx, [eax + eax*8]
lea edx, [edx + edx*2]
lea edx, [edi + edx + 1]
mov dword [esp + 0xa0], ecx
lea eax, [ecx + 0x80]
mov edi, dword [esp + 0x10]
cmp dword [edi + edx], eax
jle 0x55d6f0
mov dword [esp + 0x30], 0
mov eax, 0
cmp byte [esp + 0x18], 0
je 0x55d1ff
mov eax, dword [esp + 0x10]
mov eax, dword [eax + esi + 0xc]
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0xc]
cmp dword [edx + 0x98], 1
mov ecx, dword [esp + 0xf0]
je 0x55d240
mov eax, dword [edx + 0x64]
mov ecx, dword [edx + 0x8c]
mov eax, dword [eax]
add eax, 1
bsr eax, eax
xor eax, 0x1f
shl eax, 8
add eax, ecx
add eax, 0xffffe100
mov ecx, dword [esp + 0xf0]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x10]
add eax, esi
add eax, 0x10
push dword [esp + 0x34]
push ecx
push eax
push dword [esp + 0x120]
mov edi, dword [esp + 0x60]
push edi
lea eax, [esp + 0x140]
push eax
push edx
push dword [esp + 0xac]
call dword [esp + 0xdc]
add esp, 0x20
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x114]
sub eax, edi
sub edi, dword [ebp + 0xc]
lea ecx, [esp + 0x150]
mov edx, dword [esp + 0x90]
push eax
push edi
lea eax, [esp + 0x40]
push eax
call fcn.00585760
add esp, 0xc
mov edx, dword [esp + 0x38]
test edx, edx
je 0x55d6f0
mov edi, dword [esp + 0x90]
mov ecx, dword [edi + edx*8 - 4]
cmp ecx, dword [esp + 0x124]
ja 0x55de4c
mov eax, dword [esp + 0xc0]
add eax, ecx
cmp eax, 0xfff
ja 0x55de4c
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0xa0]
lea ecx, [eax - 0x3e00]
mov dword [esp + 0x84], ecx
add eax, 0x1000
mov dword [esp + 0x30], eax
xor ecx, ecx
mov dword [esp + 0x8c], edx
jmp 0x55d329
mov ecx, dword [esp + 0x94]
add ecx, 1
mov edx, dword [esp + 0x8c]
cmp ecx, edx
je 0x55d6f0
mov edx, dword [esp + 0x34]
test ecx, ecx
mov eax, dword [esp + 0x90]
je 0x55d33f
mov edx, dword [eax + ecx*8 - 4]
add edx, 1
mov edi, dword [eax + ecx*8 + 4]
mov dword [esp + 0x50], edi
cmp edi, edx
mov dword [esp + 0x94], ecx
jb 0x55d310
mov dword [esp + 0xe0], edx
mov eax, dword [eax + ecx*8]
mov dword [esp + 0xf0], eax
bsr ecx, eax
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x98], 1
mov esi, dword [esp + 0xc0]
jne 0x55d4f0
shl ecx, 8
add ecx, dword [esp + 0x30]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x50]
lea edx, [esi + ecx]
mov eax, dword [esp + 0x78]
add eax, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x100], 0
mov dword [esp + 0x2c], edx
mov eax, edx
mov byte [esp + 0x1c], dl
jmp 0x55d420
lea eax, [ecx + ecx*8]
lea eax, [eax + eax*2]
add eax, ecx
mov edx, dword [esp + 0x10]
cmp edi, dword [edx + eax]
jge 0x55d310
lea eax, [ecx + ecx*8]
lea eax, [eax + eax*2]
add eax, ecx
mov edx, dword [esp + 0x50]
mov esi, dword [esp + 0x10]
mov dword [esi + eax + 8], edx
mov ecx, dword [esp + 0xf0]
mov dword [esi + eax + 4], ecx
mov ecx, dword [esp + 0x18]
mov dword [esi + eax + 0xc], ecx
mov dword [esi + eax], edi
add edx, 0xffffffff
add dword [esp + 0x100], 1
add byte [esp + 0x1c], 3
mov dword [esp + 0x50], edx
cmp edx, dword [esp + 0xe0]
jb 0x55d310
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x50]
lea ecx, [edx + eax]
lea eax, [edx - 2]
bsr edi, eax
xor edi, 0x1f
xor edi, 0x1f
shl edi, 8
add edi, dword [esp + 0xa0]
cmp ecx, ebx
jbe 0x55d3c0
mov eax, dword [esp + 0x100]
add eax, ebx
mov edx, dword [esp + 0x2c]
sub edx, eax
mov esi, dword [esp + 0x28]
sub esi, eax
mov dword [esp + 0x24], esi
test dl, 3
je 0x55d4a2
lea eax, [ebx + ebx*8]
lea edx, [eax + eax*2]
add edx, ebx
add edx, dword [esp + 0x7c]
mov al, byte [esp + 0x1c]
sub al, bl
movzx esi, al
and esi, 3
neg esi
xor eax, eax
nop word cs:[eax + eax]
mov dword [edx], 0x40000000
add eax, 0xffffffff
add edx, 0x1c
cmp esi, eax
jne 0x55d490
sub ebx, eax
mov eax, dword [esp + 0x24]
cmp eax, 3
jb 0x55d3d5
lea eax, [ebx + ebx*8]
lea edx, [eax + eax*2]
add edx, ebx
add edx, dword [esp + 0x4c]
nop dword [eax + eax]
mov dword [edx - 0x54], 0x40000000
mov dword [edx - 0x38], 0x40000000
mov dword [edx - 0x1c], 0x40000000
add ebx, 4
mov dword [edx], 0x40000000
add edx, 0x70
cmp ebx, ecx
jb 0x55d4c0
jmp 0x55d3d5
mov edx, ecx
shl edx, 9
add edx, 0xffffda33
mov edi, ecx
mov dword [esp + 0xa0], ecx
cmp ecx, 0x14
mov ecx, 0x33
cmovb edx, ecx
mov ecx, dword [eax + 0x68]
mov dword [esp + 0x2c], ecx
add edx, dword [esp + 0x84]
add edx, dword [eax + 0x94]
add edx, dword [eax + 0x90]
mov dword [esp + 0x24], edx
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x50]
lea edx, [esi + ecx]
mov eax, dword [esp + 0x78]
add eax, ecx
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
mov eax, edx
mov byte [esp + 0x1c], dl
mov dword [esp + 0x100], 0
jmp 0x55d5d0
lea eax, [edx + edx*8]
lea eax, [eax + eax*2]
add eax, edx
mov ecx, dword [esp + 0x10]
cmp edi, dword [ecx + eax]
jge 0x55d310
lea eax, [edx + edx*8]
lea eax, [eax + eax*2]
add eax, edx
mov edx, dword [esp + 0x50]
mov esi, dword [esp + 0x10]
mov dword [esi + eax + 8], edx
mov ecx, dword [esp + 0xf0]
mov dword [esi + eax + 4], ecx
mov ecx, dword [esp + 0x18]
mov dword [esi + eax + 0xc], ecx
mov dword [esi + eax], edi
add edx, 0xffffffff
add dword [esp + 0x100], 1
add byte [esp + 0x1c], 3
mov dword [esp + 0x50], edx
cmp edx, dword [esp + 0xe0]
jb 0x55d310
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x50]
lea edx, [ecx + eax]
lea eax, [ecx - 3]
mov ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x28]
mov ecx, dword [edi + ecx*4]
add ecx, 1
bsr edi, ecx
xor edi, 0x1f
cmp eax, 0x80
jb 0x55d610
bsr ecx, eax
xor ecx, 0xffffffe0
add ecx, 0x44
jmp 0x55d617
movzx ecx, byte [eax + 0x689a42]
movzx eax, byte [ecx + 0x6892f4]
add edi, dword [esp + 0xa0]
add edi, eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + ecx*4]
add eax, 1
bsr eax, eax
xor eax, 0x1f
add edi, eax
shl edi, 8
add edi, dword [esp + 0x24]
cmp edx, ebx
jbe 0x55d570
mov eax, dword [esp + 0x100]
add eax, ebx
mov ecx, dword [esp + 0x9c]
sub ecx, eax
mov esi, dword [esp + 0x98]
sub esi, eax
mov dword [esp + 0x80], esi
test cl, 3
je 0x55d6a2
lea eax, [ebx + ebx*8]
lea ecx, [eax + eax*2]
add ecx, ebx
add ecx, dword [esp + 0x7c]
mov al, byte [esp + 0x1c]
sub al, bl
movzx esi, al
and esi, 3
neg esi
xor eax, eax
nop dword [eax + eax]
mov dword [ecx], 0x40000000
add eax, 0xffffffff
add ecx, 0x1c
cmp esi, eax
jne 0x55d690
sub ebx, eax
mov eax, dword [esp + 0x80]
cmp eax, 3
jb 0x55d585
lea eax, [ebx + ebx*8]
lea ecx, [eax + eax*2]
add ecx, ebx
add ecx, dword [esp + 0x4c]
nop
mov dword [ecx - 0x54], 0x40000000
mov dword [ecx - 0x38], 0x40000000
mov dword [ecx - 0x1c], 0x40000000
add ebx, 4
mov dword [ecx], 0x40000000
add ecx, 0x70
cmp ebx, edx
jb 0x55d6c0
jmp 0x55d585
mov eax, dword [esp + 0x70]
mov esi, eax
cmp eax, ebx
jbe 0x55cdff
jmp 0x55d706
xor ebx, ebx
jmp 0x55d706
mov ebx, edi
lea eax, [ebx + ebx*8]
lea ecx, [eax + eax*2]
add ecx, ebx
mov esi, dword [esp + 0x10]
mov eax, dword [esi + ecx]
mov dword [esp + 0xdc], eax
mov eax, dword [esi + ecx + 4]
mov edx, dword [esi + ecx + 8]
mov edi, dword [esi + ecx + 0xc]
mov esi, dword [esp + 0x10]
mov esi, dword [esi + ecx + 0x18]
mov dword [esp + 0x148], esi
mov esi, dword [esp + 0x10]
movq xmm0, qword [esi + ecx + 0x10]
mov dword [esp + 0x18], edi
lea ecx, [edi + edx]
sub ebx, ecx
movq qword [esp + 0x140], xmm0
mov ecx, 0
cmovb ebx, ecx
test edx, edx
je 0x55de91
mov dword [esp + 0x50], edx
lea ecx, [ebx + ebx*8]
lea ecx, [ecx + ecx*2]
add ecx, ebx
mov esi, dword [esp + 0x10]
mov esi, dword [esi + ecx + 0x18]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x10]
movsd xmm0, qword [esi + ecx + 0x10]
movsd qword [esp + 0x38], xmm0
cmp eax, 4
jb 0x55d7b0
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], ecx
lea esi, [eax - 3]
jmp 0x55d7ed
cmp dword [esp + 0x18], 1
mov ecx, eax
adc ecx, 0
add ecx, 0xffffffff
je 0x55d7f5
cmp ecx, 3
jne 0x55d7cd
mov edx, dword [esp + 0x38]
lea esi, [edx - 1]
jmp 0x55d7d5
mov esi, dword [esp + ecx*4 + 0x38]
mov edx, dword [esp + 0x38]
cmp ecx, 2
lea ecx, [esp + 0x40]
lea edi, [esp + 0x3c]
cmovae ecx, edi
mov ecx, dword [ecx]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
mov edi, dword [ebp + 8]
mov dword [edi + 8], ecx
movsd xmm0, qword [esp + 0x38]
movsd qword [edi], xmm0
lea edx, [ebx + 1]
lea ecx, [edx + edx*8]
lea ecx, [ecx + ecx*2]
add ecx, ebx
add ecx, 1
mov edi, dword [esp + 0xdc]
mov dword [esi + ecx], edi
mov dword [esi + ecx + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esi + ecx + 8], eax
mov eax, dword [esp + 0x18]
mov dword [esi + ecx + 0xc], eax
movq xmm0, qword [esp + 0x140]
movq qword [esi + ecx + 0x10], xmm0
mov eax, dword [esp + 0x148]
mov dword [esi + ecx + 0x18], eax
test ebx, ebx
mov dword [esp + 0xe0], edx
je 0x55d900
lea eax, [ebx + ebx*8]
lea eax, [eax + eax*2]
add eax, ebx
add eax, esi
mov ecx, edx
nop word [eax + eax]
lea edx, [ebx + ebx*8]
lea edx, [edx + edx*2]
add edx, ebx
mov esi, dword [esp + 0x10]
mov esi, dword [esi + edx + 0xc]
mov edi, dword [esp + 0x10]
add esi, dword [edi + edx + 8]
mov edi, dword [esp + 0x10]
movdqu xmm0, xmmword [edi + edx]
mov edi, dword [esp + 0x10]
movdqu xmm1, xmmword [edi + edx + 0xc]
add ecx, 0xffffffff
movdqu xmmword [eax + 0xc], xmm1
movdqu xmmword [eax], xmm0
add eax, 0xffffffe4
sub ebx, esi
mov edx, 0
cmovb ebx, edx
ja 0x55d870
cmp ecx, dword [esp + 0xe0]
mov esi, dword [esp + 0xc]
jbe 0x55d909
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
cmp dword [esi + 0xa0], 2
je 0x55c970
mov eax, dword [esi + 0x78]
add eax, 1
bsr eax, eax
xor eax, 0x1f
xor eax, 0x1f
shl eax, 8
mov dword [esi + 0x88], eax
jmp 0x55c970
mov ecx, 1
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x128]
jmp 0x55d940
mov word [eax + 6], dx
add eax, 8
mov dword [edi + 4], eax
mov eax, dword [esp + 0x20]
add eax, ebx
mov dword [esp + 0x20], eax
add ecx, 1
cmp ecx, dword [esp + 0xe0]
ja 0x55d8c7
lea eax, [ecx + ecx*8]
lea eax, [eax + eax*2]
mov dword [esp + 0xa0], ecx
add eax, ecx
mov edx, dword [esp + 0x10]
mov ebx, dword [edx + eax + 0xc]
mov ecx, dword [edx + eax + 8]
mov dword [esp + 0x50], ecx
test ecx, ecx
je 0x55da30
mov dword [esp + 0x14], ebx
mov ebx, dword [edx + eax + 4]
cmp dword [esi + 0xa0], 2
mov dword [esp + 0x18], ebx
je 0x55da17
cmp dword [esp + 0x14], 0
je 0x55d9ff
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x60]
mov edx, dword [esp + 0x14]
lea edi, [edx - 1]
and edx, 3
xor esi, esi
cmp edi, 3
mov ecx, dword [esp + 0x20]
jb 0x55d9da
mov edi, dword [esp + 0x14]
and edi, 0xfffffffc
xor esi, esi
movzx ebx, byte [ecx + esi]
add dword [eax + ebx*4], 2
movzx ebx, byte [ecx + esi + 1]
add dword [eax + ebx*4], 2
movzx ebx, byte [ecx + esi + 2]
add dword [eax + ebx*4], 2
movzx ebx, byte [ecx + esi + 3]
add dword [eax + ebx*4], 2
add esi, 4
cmp edi, esi
jne 0x55d9b0
test edx, edx
je 0x55d9ff
add esi, dword [esp + 0x20]
xor edi, edi
nop word cs:[eax + eax]
nop
movzx ebx, byte [esi + edi]
add dword [eax + ebx*4], 2
add edi, 1
cmp edx, edi
jne 0x55d9f0
mov eax, dword [esp + 0x14]
add eax, eax
mov esi, dword [esp + 0xc]
add dword [esi + 0x78], eax
mov edi, dword [esp + 0x128]
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
cmp eax, 0x40
jb 0x55da60
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x33
jmp 0x55da67
add ebx, dword [esp + 0x20]
mov eax, ebx
mov ecx, dword [esp + 0xa0]
add ecx, 1
cmp ecx, dword [esp + 0xe0]
jbe 0x55d940
jmp 0x55d8c7
movzx eax, byte [eax + 0x689a02]
mov ecx, dword [esp + 0x50]
mov edx, dword [esi + 0x64]
add dword [edx + eax*4], 1
add dword [esi + 0x7c], 1
bsr eax, ebx
mov edx, dword [esi + 0x6c]
add dword [edx + eax*4], 1
add dword [esi + 0x84], 1
lea eax, [ecx - 3]
cmp eax, 0x80
mov dword [esp + 0xc0], eax
jb 0x55dab0
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x44
jmp 0x55dab7
movzx eax, byte [eax + 0x689a42]
mov edx, dword [esi + 0x68]
add dword [edx + eax*4], 1
add dword [esi + 0x80], 1
mov eax, dword [esp + 0x14]
mov ebx, esi
mov ecx, dword [esp + 0x20]
lea esi, [ecx + eax]
mov edx, dword [esp + 0x88]
cmp esi, edx
jbe 0x55db00
mov dword [esp + 0x100], esi
mov eax, dword [edi + 0xc]
mov esi, edx
sub esi, ecx
jae 0x55db6b
mov ebx, ecx
mov edx, eax
jmp 0x55dbb1
mov edx, eax
mov eax, dword [edi + 0xc]
movdqu xmm0, xmmword [ecx]
movdqu xmmword [eax], xmm0
mov eax, dword [edi + 0xc]
cmp edx, 0x10
jbe 0x55dcad
movdqu xmm0, xmmword [ecx + 0x10]
movdqu xmmword [eax + 0x10], xmm0
cmp edx, 0x21
jl 0x55dc70
mov edx, dword [esp + 0x14]
add edx, eax
add eax, 0x20
xor esi, esi
nop word [eax + eax]
mov ecx, dword [esp + 0x20]
movups xmm0, xmmword [ecx + esi + 0x20]
movups xmmword [eax + esi], xmm0
movdqu xmm0, xmmword [ecx + esi + 0x30]
movdqu xmmword [eax + esi + 0x10], xmm0
lea edi, [eax + esi]
add edi, 0x20
add esi, 0x20
cmp edi, edx
jb 0x55db40
jmp 0x55dc70
mov ebx, edx
lea edx, [eax + esi]
movdqu xmm0, xmmword [ecx]
movdqu xmmword [eax], xmm0
cmp esi, 0x11
jl 0x55dbb1
mov esi, 0x10
nop word cs:[eax + eax]
nop dword [eax]
movups xmm0, xmmword [ecx + esi]
movups xmmword [eax + esi], xmm0
movdqu xmm0, xmmword [ecx + esi + 0x10]
movdqu xmmword [eax + esi + 0x10], xmm0
lea edi, [eax + esi]
add edi, 0x20
add esi, 0x20
cmp edi, edx
jb 0x55db90
mov ecx, dword [esp + 0x100]
cmp ebx, ecx
jae 0x55dc70
mov eax, ecx
sub eax, ebx
cmp eax, 8
jb 0x55dbdf
cmp edx, ecx
jae 0x55dcfe
mov esi, eax
add eax, edx
cmp ebx, eax
mov eax, esi
jae 0x55dcfe
mov eax, edx
mov esi, ebx
mov edi, ecx
sub edi, esi
lea edx, [edi - 1]
and edi, 7
je 0x55dc00
nop
movzx ebx, byte [esi]
add esi, 1
mov byte [eax], bl
add eax, 1
add edi, 0xffffffff
jne 0x55dbf0
cmp edx, 7
jb 0x55dc70
xor edx, edx
nop word [eax + eax]
movzx ebx, byte [esi + edx]
mov byte [eax + edx], bl
movzx ebx, byte [esi + edx + 1]
mov byte [eax + edx + 1], bl
movzx ebx, byte [esi + edx + 2]
mov byte [eax + edx + 2], bl
movzx ebx, byte [esi + edx + 3]
mov byte [eax + edx + 3], bl
movzx ebx, byte [esi + edx + 4]
mov byte [eax + edx + 4], bl
movzx ebx, byte [esi + edx + 5]
mov byte [eax + edx + 5], bl
movzx ebx, byte [esi + edx + 6]
mov byte [eax + edx + 6], bl
movzx ebx, byte [esi + edx + 7]
mov byte [eax + edx + 7], bl
lea edi, [esi + edx]
add edi, 8
add edx, 8
cmp edi, ecx
jne 0x55dc10
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [esp + 0x128]
mov edx, dword [esp + 0x14]
add dword [edi + 0xc], edx
cmp edx, 0x10000
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x50]
jb 0x55dcbf
mov dword [edi + 0x24], 1
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 3
mov dword [edi + 0x28], eax
mov edx, dword [esp + 0x14]
jmp 0x55dcbf
add eax, edx
mov dword [edi + 0xc], eax
mov esi, ebx
mov ecx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x50]
add ebx, edx
mov eax, dword [edi + 4]
mov word [eax + 4], dx
mov edx, dword [esp + 0x18]
mov dword [eax], edx
mov edx, dword [esp + 0xc0]
cmp edx, 0x10000
jb 0x55d920
mov dword [edi + 0x24], 2
mov edx, eax
sub edx, dword [edi]
sar edx, 3
mov dword [edi + 0x28], edx
mov edx, dword [esp + 0xc0]
jmp 0x55d920
xor edi, edi
cmp eax, 0x20
mov dword [esp + 0x24], eax
jb 0x55ddfd
mov edi, eax
and edi, 0xffffffe0
lea ecx, [edi - 0x20]
mov esi, ecx
shr esi, 5
add esi, 1
mov eax, esi
and eax, 3
mov dword [esp + 0xf0], eax
xor eax, eax
cmp ecx, 0x60
jb 0x55dd9a
and esi, 0xfffffffc
xor eax, eax
nop word cs:[eax + eax]
nop
movups xmm0, xmmword [ebx + eax]
movups xmm1, xmmword [ebx + eax + 0x10]
movups xmmword [edx + eax], xmm0
movups xmmword [edx + eax + 0x10], xmm1
movups xmm0, xmmword [ebx + eax + 0x20]
movups xmm1, xmmword [ebx + eax + 0x30]
movups xmmword [edx + eax + 0x20], xmm0
movups xmmword [edx + eax + 0x30], xmm1
movups xmm0, xmmword [ebx + eax + 0x40]
movups xmm1, xmmword [ebx + eax + 0x50]
movups xmmword [edx + eax + 0x40], xmm0
movups xmmword [edx + eax + 0x50], xmm1
movdqu xmm0, xmmword [ebx + eax + 0x60]
movdqu xmm1, xmmword [ebx + eax + 0x70]
movdqu xmmword [edx + eax + 0x60], xmm0
movdqu xmmword [edx + eax + 0x70], xmm1
sub eax, 0xffffff80
add esi, 0xfffffffc
jne 0x55dd40
cmp dword [esp + 0xf0], 0
je 0x55dde6
lea esi, [ebx + eax]
add esi, 0x10
mov dword [esp + 0x1c], esi
add eax, edx
add eax, 0x10
shl dword [esp + 0xf0], 5
xor esi, esi
nop dword [eax]
mov ecx, dword [esp + 0x1c]
movdqu xmm0, xmmword [ecx + esi - 0x10]
movdqu xmm1, xmmword [ecx + esi]
movdqu xmmword [eax + esi - 0x10], xmm0
movdqu xmmword [eax + esi], xmm1
add esi, 0x20
cmp dword [esp + 0xf0], esi
jne 0x55ddc0
mov eax, dword [esp + 0x24]
cmp eax, edi
mov ecx, dword [esp + 0x100]
je 0x55dc70
test al, 0x18
je 0x55de43
mov esi, eax
and esi, 0xfffffff8
lea eax, [edx + esi]
mov dword [esp + 0xf0], esi
add esi, ebx
nop
movq xmm0, qword [ebx + edi]
movq qword [edx + edi], xmm0
add edi, 8
cmp dword [esp + 0xf0], edi
jne 0x55de10
mov ecx, dword [esp + 0xf0]
cmp dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x100]
jne 0x55dbe3
jmp 0x55dc70
add ebx, edi
add edx, edi
jmp 0x55dbdf
mov dword [esp + 0x50], ecx
xor ecx, ecx
mov eax, dword [esp + 0xe0]
cmp dword [eax], 0
jne 0x55de66
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + esi + 0xc]
mov eax, dword [edi + edx*8 - 8]
mov ebx, dword [esp + 0xc0]
sub ebx, ecx
cmp ebx, 0x1001
mov ecx, 0
cmovae ebx, ecx
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
test edx, edx
jne 0x55d763
lea ecx, [ebx + ebx*8]
lea ecx, [ecx + ecx*2]
add ecx, ebx
mov edx, dword [esi + ecx + 0x18]
mov edi, dword [ebp + 8]
mov dword [edi + 8], edx
movsd xmm0, qword [esi + ecx + 0x10]
movsd qword [edi], xmm0
mov dword [esp + 0x50], 0
jmp 0x55d809
mov ecx, dword [esp + 0x20]
sub eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [esp + 0xc0]
movzx eax, word [esi + 0x408]
mov ecx, eax
add cl, 0xff
mov ebx, 1
mov edx, 1
shl edx, cl
test ax, ax
cmove edx, ebx
mov eax, dword [esp + 0xc]
mov dword [eax + 0x84], 0
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x50], eax
lea eax, [esi + edx*4]
add eax, 0x418
mov dword [esp + 0xa0], eax
xor eax, eax
mov edi, dword [esp + 0xa0]
mov esi, dword [esp + 0xc]
nop
mov edx, dword [edi + eax*8 - 8]
mov ecx, 0xffff
add edx, ecx
mov ebx, edx
shr ebx, 0x10
mov cl, 0xa
sub cl, bl
mov ebx, 1
shl ebx, cl
cmp edx, 0x10000
mov ecx, 1
cmovb ebx, ecx
mov ecx, dword [esp + 0x50]
mov dword [ecx + eax*4], ebx
add dword [esi + 0x84], ebx
mov ebx, dword [edi + eax*8]
mov ecx, 0xffff
add ebx, ecx
mov edx, ebx
shr edx, 0x10
mov cl, 0xa
sub cl, dl
mov edx, 1
shl edx, cl
cmp ebx, 0x10000
mov ecx, 1
cmovb edx, ecx
mov ecx, dword [esp + 0x50]
mov dword [ecx + eax*4 + 4], edx
add edx, dword [esi + 0x84]
mov dword [esi + 0x84], edx
add eax, 2
cmp eax, 0x20
jne 0x55df20
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov ebx, dword [ebp + 0x10]
mov edi, dword [esp + 0xe0]
jmp 0x55c82d