Function at 0x53abb0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x310
mov edi, dword [ebp + 8]
call 0x53abc7
pop eax
mov esi, edx
mov ebx, ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x28]
test eax, eax
je 0x53ac24
mov edx, dword [esi]
lea edi, [esp + 0x198]
mov ecx, edi
push eax
push dword [esi + 4]
call fcn.0053de00
add esp, 8
lea ecx, [esp + 0xf8]
mov edx, edi
call fcn.0053ec80
movzx eax, byte [esp + 0xf8]
cmp al, 0x4b
jne 0x53ae60
mov ecx, dword [esp + 0xfc]
mov esi, dword [esp + 0x30]
mov edi, dword [ebp + 8]
mov dword [esp + 0x48], ebx
jmp 0x53ac40
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x53aea9
lock inc dword [ecx - 8]
jle 0x53cd94
mov dword [esp + 0x48], ebx
add ecx, 0xfffffff8
mov edx, dword [edi + 0x20]
cmp byte [esi + 0x70], 0
movq xmm0, qword [edi + 0x10]
movq xmm1, qword [edi + 0x28]
movsd xmm2, qword [edi + 0x20]
movsd xmm3, qword [edi + 0x18]
movsd xmm4, qword [edi]
movsd xmm5, qword [edi + 8]
mov eax, edx
setne bl
movq qword [esp + 0x268], xmm1
movsd qword [esp + 0x260], xmm2
movsd qword [esp + 0x258], xmm3
movq qword [esp + 0x250], xmm0
movsd qword [esp + 0x248], xmm5
movsd qword [esp + 0x240], xmm4
mov dword [esp + 0x288], ecx
mov dword [esp + 0x270], 0
mov dword [esp + 0x278], 0
mov dword [esp + 0x280], 0
mov dword [esp + 0x284], 0
shr eax, 0x10
cmp ax, 5
setae bh
and edx, 0xff00
xor eax, eax
cmp edx, 0x800
sete al
xor esi, esi
test bl, bh
lea edx, [eax*8 + 8]
lea eax, [eax*8 + 0xc]
cmove edx, esi
cmove eax, esi
mov esi, dword [edi + 8]
xor ebx, ebx
mov dword [esp + 0x28c], edx
mov dword [esp + 0x290], 0
mov dword [esp + 0x294], eax
mov dword [esp + 0x298], eax
mov dword [esp + 0x1a8], 0x2f
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x19c], 0
add esi, 0xfffffffd
cmp esi, 2
lea esi, [esp + 0x240]
setb bl
add ecx, 8
mov dword [esp + 0x198], ebx
movq qword [esp + 0x1a0], xmm0
mov eax, dword [esp + 0x258]
mov edi, dword [esp + 0x25c]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb8], esi
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xc0], 0
mov dword [esp + 0xdc], 0
lea ecx, [esp + 0xf8]
lea edx, [esp + 0xb0]
call fcn.005397f0
movzx eax, byte [esp + 0xf8]
cmp al, 0x4b
jne 0x53ae12
lea esi, [esp + 0xf8]
lea edi, [esp + 0xb0]
nop dword [eax + eax]
cmp byte [esp + 0xf9], 0
mov ebx, dword [esp + 0xc0]
je 0x53af0f
test ebx, ebx
jne 0x53af17
mov ecx, esi
mov edx, edi
call fcn.005397f0
movzx eax, byte [esp + 0xf8]
cmp al, 0x4b
je 0x53ade0
mov edx, dword [esp + 0x48]
movzx ecx, byte [esp + 0xf9]
movzx edi, word [esp + 0xfa]
mov esi, dword [esp + 0x100]
mov byte [edx + 8], al
mov byte [edx + 9], cl
mov ecx, dword [esp + 0xfc]
mov word [edx + 0xa], di
mov dword [edx + 0xc], ecx
mov ecx, dword [esp + 0x104]
mov dword [edx + 0x10], esi
mov dword [edx + 0x14], ecx
mov dword [edx + 4], 0
mov dword [edx], 2
jmp 0x53b8cb
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0x100]
mov esi, dword [esp + 0x104]
movzx edi, word [esp + 0xf9]
mov ah, byte [esp + 0xfb]
mov word [ebx + 9], di
mov byte [ebx + 0xb], ah
mov byte [ebx + 8], al
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x14], esi
mov dword [ebx + 0x10], edx
mov dword [ebx + 4], 0
mov dword [ebx], 2
jmp 0x53b962
mov edx, dword [esi]
lea ecx, [esp + 0x198]
push 0
push dword [esi + 4]
call fcn.0053de00
add esp, 8
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x198]
call fcn.0053ec80
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
jne 0x53b366
mov ecx, dword [esp + 0xb4]
xor eax, eax
lea edx, [ecx + 8]
lock cmpxchg dword [esi + 0x6c], edx
mov dword [esp + 0x48], ebx
jne 0x53b4f2
lock inc dword [ecx]
mov esi, dword [esp + 0x30]
jg 0x53ac40
jmp 0x53cd94
test ebx, ebx
je 0x53b4d1
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x18], eax
call fcn.00449fa0
mov esi, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x160], ebx
movaps xmm0, xmmword [0x593560]
mov edi, edx
mov dword [esp + 0x94], 0
mov dword [esp + 0x15c], 0x2e
mov dword [esp + 0x158], 0
mov dword [esp + 0x18], 0
dec edi
mov dword [esp + 0x164], eax
lea eax, [esp + 0xc0]
mov dword [esp + 0x168], esi
mov dword [esp + 0x16c], edx
add esi, 0x10
movaps xmmword [esp + 0x2b0], xmm0
movaps xmmword [esp + 0x70], xmm0
mov dword [esp + 0x170], eax
mov eax, dword [esp + 0x198]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x19c]
mov dword [esp + 4], eax
jmp 0x53afe4
add esi, 0x10
dec edi
cmp edi, 0xffffffff
je 0x53b2ec
lea eax, [esi - 0x10]
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
mov eax, dword [esp + 0x170]
movsd qword [esp + 0x40], xmm1
movsd qword [esp + 0x38], xmm0
mov eax, dword [eax + 0xc]
lea ecx, [esp + 0xf8]
lea ebx, [esp + 0x38]
lea edx, [esp + 0x160]
push ebx
push dword [eax + 0x20]
call fcn.00533840
add esp, 8
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xfc]
mov edx, eax
xor edx, 0x2e
or edx, ecx
je 0x53b331
lea edx, [esp + 0x100]
mov dword [esp + 0x168], esi
mov dword [esp + 0x16c], edi
movsd xmm0, qword [edx]
movq xmm1, qword [edx + 8]
mov dword [esp + 0xfc], ecx
mov dword [esp + 0xf8], eax
movq qword [edx + 8], xmm1
movsd qword [edx], xmm0
movsd qword [esp + 0x180], xmm0
movq qword [esp + 0x188], xmm1
movzx eax, word [esp + 0x108]
cmp eax, 0x71
jle 0x53b100
cmp eax, 0x2130
jg 0x53b160
add eax, 0xffffff8e
cmp eax, 0x1a
ja 0x53afe0
mov eax, dword [eax*4 + 0x53ceec]
add eax, dword [esp + 0x34]
jmp eax
add eax, 0xfffffffd
cmp eax, 0x18
ja 0x53afe0
mov eax, dword [eax*4 + 0x53ce88]
add eax, dword [esp + 0x34]
jmp eax
cmp eax, 0x2131
je 0x53b273
cmp eax, 0x2132
je 0x53b1ae
cmp eax, 0x2133
jne 0x53afe0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.005353c0
mov eax, dword [esp + 0x38]
xor eax, 0xb
or eax, dword [esp + 0x3c]
jne 0x53afe0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x290], eax
jmp 0x53afe0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.005353c0
mov eax, dword [esp + 0x38]
xor eax, 0x17
or eax, dword [esp + 0x3c]
jne 0x53afe0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x298], eax
jmp 0x53afe0
mov eax, dword [esp + 0x6c]
or eax, dword [esp + 4]
jne 0x53afe0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.005353c0
mov eax, dword [esp + 0x38]
mov dword [esp + 4], 0
xor eax, 0x2d
or eax, dword [esp + 0x3c]
jne 0x53b2df
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x19c], 0
mov dword [esp + 0x198], 1
mov dword [esp + 0x6c], 1
mov dword [esp + 0x1a4], ecx
mov dword [esp + 0x1a0], eax
jmp 0x53afe0
mov dword [esp + 0x6c], 0
jmp 0x53afe0
mov eax, dword [esp + 0x170]
cmp dword [eax + 0x14], 0
jne 0x53b30c
mov ecx, dword [esp + 0x160]
sub ecx, dword [eax]
mov dword [eax + 0x14], 1
mov dword [eax + 0x18], ecx
movdqa xmm1, xmmword [esp + 0x70]
mov ebx, dword [esp + 0x48]
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
jne 0x53b39f
xor ecx, ecx
jmp 0x53b3ed
lea eax, [esp + 0x100]
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
mov eax, dword [esp + 0x48]
movq qword [esp + 0x180], xmm0
movq qword [esp + 0x188], xmm1
movq qword [eax + 0x10], xmm1
movq qword [eax + 8], xmm0
jmp 0x53b4e0
movzx ecx, byte [esp + 0xb3]
mov esi, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov byte [esp + 0xfb], cl
movzx ecx, word [esp + 0xb1]
mov word [esp + 0xf9], cx
mov ecx, dword [esp + 0xb4]
jmp 0x53ae75
movzx eax, byte [esp + 0x261]
movdqu xmmword [esp + 0x2e8], xmm1
mov edx, dword [esp + 0x30]
lea esi, [esp + 0x2e8]
lea ecx, [esp + 0xb0]
push esi
push dword [esp + 0x290]
push eax
call fcn.00532970
add esp, 0xc
xor ecx, ecx
cmp byte [esp + 0xb0], 0x4b
jne 0x53b3e6
mov ecx, dword [esp + 0xb4]
mov eax, dword [esp + 0xb8]
movdqa xmm1, xmmword [esp + 0x2b0]
mov dword [esp + 0x270], ecx
mov dword [esp + 4], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x274], eax
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
jne 0x53b43a
xor ecx, ecx
cmp dword [esp + 0x18], 0
mov dword [esp + 0x278], 0
je 0x53b52f
jmp 0x53b4ad
movzx eax, byte [esp + 0x261]
movdqu xmmword [esp + 0x2f8], xmm1
mov edx, dword [esp + 0x30]
lea edi, [esp + 0x2f8]
lea ecx, [esp + 0xb0]
push edi
push dword [esp + 0x290]
push eax
call fcn.00532970
add esp, 0xc
xor esi, esi
cmp byte [esp + 0xb0], 0x4b
mov eax, dword [esp + 0xb8]
mov ecx, 0
jne 0x53b48d
mov ecx, dword [esp + 0xb4]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x278], ecx
mov dword [esp + 0x2b0], eax
mov dword [esp + 0x27c], eax
je 0x53b544
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x20]
mov edx, dword [ecx + 0x24]
mov ecx, dword [esp + 0xa8]
sub edx, ecx
jae 0x53b516
xor edi, edi
mov cl, 0x13
mov edx, eax
jmp 0x53b8a6
mov eax, dword [esp + 0x48]
mov byte [eax + 8], 0x42
mov dword [eax + 0xc], 0
mov dword [eax + 4], 0
mov dword [eax], 2
jmp 0x53b8cb
lock dec dword [ecx]
mov esi, eax
jne 0x53b4fe
call fcn.00532b90
lock inc dword [esi - 8]
jle 0x53cd94
add esi, 0xfffffff8
mov ecx, esi
mov esi, dword [esp + 0x30]
jmp 0x53ac40
add eax, ecx
cmp edx, 4
jae 0x53b84e
mov ecx, eax
xor edi, edi
mov bl, 0x13
shr ecx, 8
jmp 0x53b882
mov edi, 0x2f
xor esi, esi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x18], 0
jmp 0x53b54d
mov dword [esp + 0x6c], eax
mov edi, 0x2f
mov eax, dword [esp + 0x1a8]
mov ecx, dword [esp + 0xa8]
xor eax, 0x2f
or eax, dword [esp + 0x1ac]
je 0x53b5f3
cmp dword [esp + 0x1f8], 0
je 0x53b58d
mov ecx, dword [esp + 0x1fc]
mov edx, 2
call fcn.004256e0
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x204], 0
je 0x53b5af
mov ecx, dword [esp + 0x208]
mov edx, 8
call fcn.004256e0
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x210], 0
je 0x53b5d1
mov ecx, dword [esp + 0x214]
mov edx, 2
call fcn.004256e0
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x21c], 0
je 0x53b5f3
mov ecx, dword [esp + 0x220]
mov edx, 8
call fcn.004256e0
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 4]
mov dword [esp + 0x1a8], edi
mov dword [esp + 0x1ac], esi
movsd xmm0, qword [esp + 0x160]
movq xmm1, qword [esp + 0x168]
mov dword [esp + 0x1b0], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x1b4], eax
mov dword [esp + 0x1bc], 0
mov dword [esp + 0x1b8], 0
movsd qword [esp + 0x1c0], xmm0
movsd xmm0, qword [esp + 0x170]
mov eax, dword [esp + 0x140]
movq qword [esp + 0x1c8], xmm1
movsd qword [esp + 0x1d0], xmm0
movsd xmm0, qword [esp + 0x178]
movsd qword [esp + 0x1d8], xmm0
mov dword [esp + 0x1e0], eax
mov eax, dword [esp + 0x154]
movsd xmm0, qword [esp + 0x180]
mov dword [esp + 0x1e4], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1e8], eax
mov eax, dword [esp + 0x194]
mov dword [esp + 0x1ec], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1f0], eax
mov eax, dword [esp + 0x2b0]
mov dword [esp + 0x1f4], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x1f8], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x1fc], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x188]
movsd qword [esp + 0x204], xmm0
movsd xmm0, qword [esp + 0x2a0]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x210], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x214], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x218], eax
mov eax, dword [esp + 0x2a8]
movsd qword [esp + 0x21c], xmm0
mov dword [esp + 0x224], eax
movzx eax, byte [esp + 0x26]
mov byte [esp + 0x228], al
movzx eax, byte [esp + 0x27]
mov byte [esp + 0x229], al
mov eax, dword [esp + 0x6c]
mov word [esp + 0x22a], ax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x22c], ecx
mov ecx, dword [esp + 0x15c]
mov dword [esp + 0x230], eax
mov eax, dword [esp + 0x128]
mov edx, ecx
xor edx, 0x2e
or edx, dword [esp + 0x158]
mov dword [esp + 0x234], eax
movzx eax, byte [esp + 0xac]
mov byte [esp + 0x238], al
movzx eax, byte [esp + 0xaf]
mov byte [esp + 0x239], al
movzx eax, byte [esp + 0x57]
mov byte [esp + 0x23a], al
movzx eax, byte [esp + 0xae]
mov byte [esp + 0x23b], al
movzx eax, byte [esp + 0xad]
mov byte [esp + 0x23c], al
movzx eax, byte [esp + 0x56]
mov byte [esp + 0x23d], al
jne 0x53b816
lea eax, [esp + 0x198]
push 0x108
push eax
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x53b962
mov eax, ecx
mov dword [esp + 0x48], ebx
and al, 0x3f
cmp al, 0xc
je 0x53b982
and ecx, 0x3f
jne 0x53b9ad
mov edi, dword [esp + 0x90]
shr edi, 8
xor esi, esi
mov cl, 1
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x34], 0
jmp 0x53ba27
movzx ecx, byte [esp + 0x260]
lea edi, [edx - 4]
mov byte [esp + 0x27], 4
mov byte [esp + 0x26], cl
lea ecx, [eax + 4]
mov dword [esp], ecx
mov ecx, dword [eax]
cmp ecx, 0xffffffef
jbe 0x53b96a
cmp ecx, 0xffffffff
je 0x53ba8d
xor ecx, ecx
mov bl, 0x10
xor edi, edi
mov byte [esp + 0x58], al
mov eax, edi
mov word [esp + 0x5d], di
mov dword [esp + 0x59], ecx
shld edi, ecx, 8
mov ecx, ebx
mov ebx, dword [esp + 0x28]
shr eax, 0x10
mov byte [esp + 0x5f], al
mov edx, dword [esp + 0x58]
shl esi, 8
movzx eax, cl
or eax, esi
mov esi, dword [esp + 0x48]
mov dword [esi + 8], eax
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], edx
mov dword [esi + 0x14], edi
mov dword [esi + 4], 0
mov dword [esi], 2
mov eax, dword [esp + 0x288]
lock dec dword [eax]
jne 0x53b8e3
mov ecx, dword [esp + 0x288]
call fcn.00532b90
mov eax, dword [esp + 0x1a8]
xor eax, 0x2f
or eax, dword [esp + 0x1ac]
je 0x53b962
cmp dword [esp + 0x1f8], 0
je 0x53b911
mov ecx, dword [esp + 0x1fc]
mov edx, 2
call fcn.004256e0
cmp dword [esp + 0x204], 0
je 0x53b92c
mov ecx, dword [esp + 0x208]
mov edx, 8
call fcn.004256e0
cmp dword [esp + 0x210], 0
je 0x53b947
mov ecx, dword [esp + 0x214]
mov edx, 2
call fcn.004256e0
cmp dword [esp + 0x21c], 0
je 0x53b962
mov ecx, dword [esp + 0x220]
mov edx, 8
call fcn.004256e0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ecx
cmp edi, eax
jae 0x53bb77
mov edx, dword [esp]
mov cl, 0x13
xor edi, edi
mov ebx, edx
jmp 0x53b8a6
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x290]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
sub esi, ebx
jae 0x53b9c6
mov al, 0x13
mov dword [esp + 0xb7], ecx
mov dword [esp + 0xbb], 0
jmp 0x53b9e6
mov dword [esp + 0x90], eax
xor esi, esi
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x34], 0
xor edx, edx
jmp 0x53ba27
movzx eax, byte [esp + 0x260]
mov byte [esp + 0x30], al
movzx edi, al
mov eax, dword [esp + 0x90]
mul edi
jno 0x53baf9
mov al, 0x35
mov dword [esp + 0x30], eax
movzx ecx, byte [esp + 0xba]
movzx edi, word [esp + 0xb8]
movzx eax, byte [esp + 0xb7]
xor ebx, ebx
mov esi, 1
shl ecx, 0x10
mov dword [esp + 0x90], eax
or edi, ecx
mov ecx, dword [esp + 0xbb]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0x30]
mov eax, edx
movzx ecx, cl
shl edi, 8
shl eax, 8
or ecx, eax
movzx eax, byte [esp + 0x90]
or eax, edi
or esi, ebx
je 0x53ba66
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x34]
mov dword [esi + 8], ecx
mov ecx, dword [esp + 0x94]
shld edi, edx, 8
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
jmp 0x53b8be
mov ebx, dword [esp + 0x48]
cmp ecx, 1
jne 0x53b7fb
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x280], eax
mov dword [esp + 0x284], ecx
jmp 0x53b7fb
cmp edi, 8
jae 0x53bb52
mov eax, dword [esp]
xor edi, edi
mov bl, 0x13
mov dword [esp + 0x3f], eax
movzx eax, byte [esp + 0x42]
movq xmm0, qword [esp + 0x38]
mov byte [esp + 0xba], al
movzx eax, word [esp + 0x40]
movd esi, xmm0
mov word [esp + 0xb8], ax
movq qword [esp + 0xb0], xmm0
shufps xmm0, xmm0, 0x55
mov dword [esp + 0xbb], 0
movd eax, xmm0
shld eax, esi, 8
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xb7]
mov ecx, eax
shr ecx, 8
jmp 0x53b882
mov edx, esi
add ecx, ebx
sub edx, eax
jb 0x53b997
dec edi
cmp edi, 7
ja 0x53bcad
mov ebx, dword [esp + 0x34]
add ecx, eax
add ebx, dword [edi*4 + 0x53cfb4]
jmp ebx
mov edi, dword [esp]
cmp dword [edi + 4], 0
jne 0x53bbd1
mov edi, dword [edi]
add eax, 0xc
add edx, 0xfffffff4
mov byte [esp + 0x27], 8
mov dword [esp], eax
mov eax, edi
mov edi, edx
cmp edi, eax
jb 0x53b974
mov edx, dword [esp]
cmp eax, 2
jae 0x53bb83
mov cl, 0x13
jmp 0x53bb9d
movzx edi, word [edx]
mov dword [esp + 0x12c], eax
mov eax, edi
add eax, 0xfffffffa
cmp ax, 0xfffc
jae 0x53bba4
movzx edx, di
mov cl, 0x11
xor edi, edi
jmp 0x53b4cc
mov eax, dword [esp + 0x12c]
lea esi, [edx + 2]
cmp di, 4
lea eax, [eax - 2]
jbe 0x53bd12
test eax, eax
je 0x53bbdc
cmp dword [esp + 0x12c], 3
jne 0x53bbe0
mov edx, dword [esp]
add edx, 3
jmp 0x53bb7f
xor ecx, ecx
mov bl, 0x35
xor edi, edi
jmp 0x53b882
mov edx, esi
jmp 0x53bb7f
mov edx, dword [esp]
movzx eax, byte [edx + 2]
mov byte [esp + 0x26], al
lea eax, [edx + 4]
mov dword [esp + 0x1c], eax
cmp byte [edx + 3], 0
je 0x53bd02
mov cl, 0x41
jmp 0x53be6d
movzx eax, byte [esp + 0x30]
movzx ecx, word [esp + 0xb4]
mov byte [esp + 0xb0], al
movzx eax, byte [esp + 0xb6]
mov edx, dword [esp + 0xb0]
shl eax, 0x10
or ecx, eax
mov al, 0x17
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x53b9ea
mov edx, dword [esp + 0x12c]
mov ebx, dword [esp + 0x48]
mov esi, eax
lea eax, [edx - 4]
cmp ecx, 0xfffffff0
mov dword [esp + 0x48], ebx
jb 0x53bd64
cmp eax, 8
jae 0x53bd7a
mov dword [esp + 0xb7], esi
and esi, 0xffffff00
mov al, 0x13
movq xmm0, qword [esp + 0xb0]
movdqa xmm1, xmm0
movdqa xmmword [esp + 0x2d0], xmm0
movd ecx, xmm0
shufps xmm1, xmm0, 0x55
movzx edx, byte [esp + 0x2d7]
movd ebx, xmm1
shld ebx, ecx, 8
mov ecx, esi
jmp 0x53be59
cmp eax, 4
jae 0x53bd94
mov ecx, esi
mov edx, esi
mov al, 0x13
and ecx, 0xffffff00
jmp 0x53be59
cmp dword [esi + 4], 0
jne 0x53be55
mov ecx, eax
mov eax, dword [esi]
add esi, 8
add ecx, 0xfffffff8
mov dword [esp + 0x68], esi
jmp 0x53bdaa
mov ecx, eax
lea edx, [esi + 4]
add ecx, 0xfffffffc
mov dword [esp + 0x1c], edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x20], ecx
mov eax, dword [esi]
sub ecx, eax
jb 0x53be4c
test eax, eax
mov dword [esp + 0x194], ecx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x128], eax
je 0x53be4c
mov eax, dword [esp + 0x68]
movzx eax, byte [eax]
test al, al
mov byte [esp + 0xaf], al
je 0x53be6b
mov eax, dword [esp + 0x128]
cmp word [esp + 0x6c], 4
mov byte [esp + 0x57], 1
lea ecx, [eax - 1]
mov eax, dword [esp + 0x68]
lea eax, [eax + 1]
jb 0x53be31
test ecx, ecx
je 0x53bec4
mov eax, dword [esp + 0x128]
lea ecx, [eax - 2]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x20], ecx
movzx eax, byte [eax + 1]
test al, al
mov byte [esp + 0x57], al
je 0x53bebd
mov eax, dword [esp + 0x68]
add eax, 2
test ecx, ecx
je 0x53bec4
lea edi, [eax + 1]
cmp ecx, 1
mov dword [esp + 0x1c], edi
jne 0x53be72
mov edx, edi
jmp 0x53bb7f
mov edx, dword [esp + 0x68]
jmp 0x53bb7f
mov al, 0x35
xor ecx, ecx
movzx edx, dl
movd esi, xmm0
xor edi, edi
or edx, ecx
mov ecx, eax
jmp 0x53b8a6
mov cl, 0x1a
jmp 0x53b4cc
movzx edx, byte [eax]
mov edi, ecx
add edi, 0xfffffffe
mov dword [esp + 0x20], edi
je 0x53bec1
mov dh, byte [eax + 1]
lea ebx, [eax + 3]
mov dword [esp + 0x1c], ebx
mov dword [esp], ebx
mov byte [esp + 0xae], dh
mov dh, byte [eax + 2]
test dh, dh
mov byte [esp + 0xad], dh
je 0x53becd
test dl, dl
setne byte [esp + 0xac]
cmp ecx, 3
jne 0x53bed1
mov edx, dword [esp]
mov cl, 0x13
xor edi, edi
jmp 0x53b4cc
mov cl, 0x1b
jmp 0x53be6d
add eax, 2
mov cl, 0x13
xor edi, edi
jmp 0x53b4ca
mov cl, 0x1c
jmp 0x53be6d
movzx edx, byte [eax + 3]
test dl, dl
mov byte [esp + 0x56], dl
je 0x53bf15
movzx ebx, byte [esp + 0x56]
lea edx, [ecx - 4]
lea edi, [eax + 4]
mov dword [esp + 0x140], edi
dec bl
movzx ebx, bl
sub edx, ebx
mov edi, ebx
mov dword [esp + 0x154], ebx
jae 0x53bf1c
mov eax, dword [esp + 0x140]
mov cl, 0x13
xor edi, edi
mov edx, eax
mov ebx, eax
jmp 0x53b8a6
mov cl, 0x1d
jmp 0x53be6d
mov edi, dword [esp + 0x140]
mov ebx, dword [esp + 0x154]
cmp word [esp + 0x6c], 4
mov dword [esp + 0x130], 0
mov dword [esp + 0x134], 8
mov dword [esp + 0x138], 0
lea edi, [edi + ebx]
mov dword [esp + 0x1c], edi
mov dword [esp], edi
mov dword [esp + 0x20], edx
ja 0x53c023
test edx, edx
je 0x53c15a
add eax, ecx
xor esi, esi
mov dword [esp + 0x50], 8
mov dword [esp + 0x28], edi
mov edi, dword [esp]
xor ebx, ebx
cmp byte [edi + ebx], 0
je 0x53bf96
lea ecx, [edi + ebx + 1]
inc ebx
cmp ecx, eax
jne 0x53bf82
jmp 0x53c118
mov eax, ebx
lea ecx, [edi + ebx + 1]
not eax
mov dword [esp + 0x1c], ecx
add edx, eax
test ebx, ebx
mov dword [esp + 0x20], edx
je 0x53c427
cmp esi, dword [esp + 0x130]
jne 0x53bfd9
lea ecx, [esp + 0x130]
mov edx, esi
call fcn.00449f00
mov eax, dword [esp + 0x134]
mov esi, dword [esp + 0x138]
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x50]
mov eax, esi
mov ecx, esi
mov dword [esp + 0x28], edi
shl eax, 4
inc ecx
mov esi, ecx
mov dword [edx + eax + 4], 0
mov dword [edx + eax], 0x1f
mov dword [edx + eax + 8], edi
mov dword [edx + eax + 0xc], ebx
mov dword [esp + 0x138], ecx
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp], eax
add eax, edx
test edx, edx
jne 0x53bf79
jmp 0x53c15a
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
call fcn.0053ee10
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
mov dword [esp + 0x14], eax
jne 0x53c11d
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xb8]
mov dword [esp], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0xf4], eax
mov dword [esp + 0x50], edx
test ecx, ecx
je 0x53c188
mov eax, ecx
mov ecx, dword [esp + 0xbc]
mov ebx, dword [esp]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x8c], 0
mov esi, 0
mov dword [esp + 0x124], ecx
mov ecx, eax
add eax, ebx
inc ebx
dec ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x10], ecx
xor ecx, ecx
movzx eax, byte [ebx - 1]
cmp ecx, 0x3f
mov edx, ebx
mov byte [esp + 0x18], al
jne 0x53c0c8
cmp byte [esp + 0x18], 2
jae 0x53c190
movzx eax, byte [esp + 0x18]
xor edi, edi
mov edx, eax
and dl, 0x7f
movzx edx, dl
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
cmovne edx, esi
or dword [esp + 0x8c], edi
or dword [esp + 0x4c], edx
test al, al
jns 0x53c202
add ecx, 7
inc ebx
add dword [esp + 0x10], 0xffffffff
jb 0x53c0ae
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
mov dword [esp], eax
jmp 0x53c188
mov dword [esp], edi
jmp 0x53c15a
movzx eax, byte [esp + 0xb3]
movzx esi, word [esp + 0xb1]
mov edi, dword [esp + 0xbc]
mov bl, 1
shl eax, 0x10
or esi, eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x58], eax
mov dword [esp], eax
mov dword [esp + 0x5c], edi
jmp 0x53c1ba
mov eax, dword [esp]
mov dword [esp + 0x50], 2
xor edi, edi
mov dword [esp + 0xf4], 0
xor ebx, ebx
mov dword [esp + 0x58], eax
mov al, 0x13
mov dword [esp + 0x5c], 0
mov dword [esp + 0x14], eax
jmp 0x53c1ba
mov al, 0x13
mov dword [esp + 0x14], eax
jmp 0x53c1a2
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], eax
mov al, 6
mov dword [esp + 0x14], eax
mov eax, dword [esp]
movzx esi, byte [esp + 0x18]
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 0
cmp dword [esp + 0x130], 0
je 0x53c1d5
mov ecx, dword [esp + 0x134]
mov edx, 8
call fcn.004256e0
cmp dword [esp + 0xf4], 0
sete al
or bl, al
jne 0x53c1f2
mov ecx, dword [esp + 0x50]
mov edx, 2
call fcn.004256e0
mov edx, dword [esp]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
jmp 0x53b8a6
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
or ecx, dword [esp + 0x8c]
mov dword [esp + 0x20], eax
je 0x53c402
cmp dword [esp + 0x124], 0
je 0x53cd64
movzx eax, byte [esp + 0x27]
movzx ecx, byte [esp + 0x26]
mov dword [esp + 8], 0
mov dword [esp + 0xec], 8
mov dword [esp + 0x120], 0
mov dword [esp + 0xf0], 0
shl eax, 8
lea ebx, [eax + ecx + 0x50000]
mov eax, dword [esp + 0x124]
lea eax, [eax*4]
mov dword [esp + 0xc], eax
add dword [esp + 0x120], 1
mov dword [esp + 0x18], 0x2e
mov dword [esp + 0x10], 0
adc dword [esp + 0xf0], 0
xor esi, esi
mov eax, dword [esp + 0x50]
movzx eax, word [eax + esi + 2]
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
push eax
push ebx
call fcn.0053f1a0
add esp, 8
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb8]
mov edi, dword [esp + 0xc4]
or eax, dword [esp + 0xb4]
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x28], eax
mov dword [esp], ecx
jne 0x53c3e9
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x64]
cmp word [eax + esi], 1
cmove ecx, dword [esp]
cmove edx, edi
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x18]
cmove edx, dword [esp + 0x28]
cmove ecx, dword [esp + 0x14]
add esi, 4
cmp dword [esp + 0xc], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
jne 0x53c29e
mov eax, dword [esp + 0x18]
xor eax, 0x2e
or eax, dword [esp + 0x10]
je 0x53cd64
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x130]
jne 0x53c385
mov edx, dword [esp + 8]
lea ecx, [esp + 0x130]
call fcn.00449f00
mov eax, dword [esp + 0x134]
mov ecx, dword [esp + 0x138]
mov dword [esp + 0xec], eax
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xec]
mov esi, dword [esp + 0x18]
mov eax, ecx
inc ecx
shl eax, 4
mov dword [esp + 8], ecx
mov dword [edx + eax], esi
mov esi, dword [esp + 0x10]
mov dword [edx + eax + 4], esi
mov esi, dword [esp + 0x2c]
mov dword [edx + eax + 8], esi
mov esi, dword [esp + 0x64]
mov dword [edx + eax + 0xc], esi
mov esi, dword [esp + 0x120]
mov edx, dword [esp + 0xf0]
mov dword [esp + 0x138], ecx
cmp esi, dword [esp + 0x4c]
sbb edx, dword [esp + 0x8c]
jb 0x53c27c
mov dword [esp + 0x18], 0
jmp 0x53c445
mov esi, dword [esp + 0x14]
mov eax, dword [esp]
mov dword [esp + 0x5c], edi
xor ebx, ebx
shr esi, 8
mov dword [esp + 0x58], eax
jmp 0x53c1ba
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], 0
mov dword [esp + 0x18], 0
jmp 0x53c65b
mov dword [esp + 0x50], 2
mov dword [esp + 0x124], 0
mov dword [esp + 0xf4], 0
cmp word [esp + 0x6c], 5
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], 0
jae 0x53c65b
cmp dword [esp + 4], 0
mov eax, 0x2e
mov ecx, 0x1f
cmove ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x4c], ecx
mov dword [esp], eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x53ccb3
mov ecx, dword [esp]
xor esi, esi
mov dword [esp + 0x2c], 0
mov dword [esp + 0x64], 8
add ecx, eax
mov edx, dword [esp + 0x10]
mov edi, dword [esp]
xor ebx, ebx
mov dword [esp + 0x28], edx
mov dword [esp + 0x10], edi
mov edx, dword [esp + 0x10]
cmp byte [edx + ebx], 0
je 0x53c4d6
mov edx, dword [esp + 0x10]
lea edx, [edx + ebx + 1]
inc ebx
cmp edx, ecx
jne 0x53c4ba
jmp 0x53c791
mov ecx, ebx
not ecx
add eax, ecx
mov ecx, dword [esp + 0x10]
test ebx, ebx
lea ecx, [ecx + ebx + 1]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
je 0x53cd28
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
push ebx
push dword [esp + 0x14]
call fcn.00531bd0
add esp, 8
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xbc]
mov edi, dword [esp + 0xc4]
mov dword [esp + 0x8c], eax
xor eax, 0x2e
mov dword [esp + 0xc], ecx
mov dword [esp + 0x28], edx
or eax, ecx
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x14], eax
mov dword [esp], ecx
je 0x53cd45
lea eax, [esp + 0xc8]
mov ecx, dword [esp + 0x2c]
movsd xmm1, qword [eax + 0x10]
movq xmm0, qword [eax + 0x18]
movsd xmm2, qword [eax]
cmp ecx, dword [esp + 0x38]
movsd qword [esp + 0x108], xmm1
movq xmm1, qword [eax + 8]
movq qword [esp + 0x110], xmm0
movsd qword [esp + 0xf8], xmm2
movq qword [esp + 0x100], xmm1
jne 0x53c5bc
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x38]
call fcn.00531ef0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x64], eax
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x64]
mov ecx, dword [esp + 0xc]
imul eax, edx, 0x38
inc edx
mov dword [ebx + eax + 4], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x2c], edx
mov dword [ebx + eax], ecx
mov ecx, dword [esp + 0x14]
mov dword [ebx + eax + 8], ecx
mov ecx, dword [esp + 0x28]
mov dword [ebx + eax + 0xc], ecx
mov ecx, dword [esp]
mov dword [ebx + eax + 0x10], ecx
mov dword [ebx + eax + 0x14], edi
movsd xmm0, qword [esp + 0xf8]
movq xmm1, qword [esp + 0x100]
movsd qword [ebx + eax + 0x18], xmm0
movq qword [ebx + eax + 0x20], xmm1
movsd xmm0, qword [esp + 0x108]
movsd qword [ebx + eax + 0x28], xmm0
movq xmm0, qword [esp + 0x110]
movq qword [ebx + eax + 0x30], xmm0
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], edx
mov dword [esp], ecx
add ecx, eax
test eax, eax
jne 0x53c4a9
jmp 0x53ccb3
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
call fcn.0053ee10
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
mov dword [esp + 0x14], eax
jne 0x53c749
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xb8]
mov dword [esp], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x10], edx
test ecx, ecx
je 0x53c789
mov eax, ecx
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x8c], 0
mov ebx, 0
mov dword [esp + 0x64], ecx
lea ecx, [esi + eax]
dec eax
inc esi
mov dword [esp + 0x28], ecx
mov dword [esp + 4], eax
xor ecx, ecx
movzx eax, byte [esi - 1]
cmp ecx, 0x3f
mov edx, esi
mov byte [esp + 0x70], al
jne 0x53c6f9
cmp byte [esp + 0x70], 2
jae 0x53c79d
movzx eax, byte [esp + 0x70]
xor edi, edi
mov edx, eax
and dl, 0x7f
movzx edx, dl
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
cmovne edx, ebx
or dword [esp + 0x8c], edi
or dword [esp + 0x4c], edx
test al, al
jns 0x53c7cc
add ecx, 7
inc esi
add dword [esp + 4], 0xffffffff
jb 0x53c6df
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
mov dword [esp], eax
jmp 0x53c789
movzx eax, byte [esp + 0xb3]
movzx esi, word [esp + 0xb1]
mov edi, dword [esp + 0xbc]
mov bl, 1
shl eax, 0x10
or esi, eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x58], eax
mov dword [esp], eax
mov dword [esp + 0x5c], edi
jmp 0x53ccf2
mov al, 0x13
mov dword [esp + 0x14], eax
jmp 0x53c7af
mov eax, dword [esp + 0x10]
mov dword [esp], eax
jmp 0x53ccb3
mov eax, dword [esp + 4]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], eax
mov al, 6
mov dword [esp + 0x14], eax
mov eax, dword [esp]
movzx esi, byte [esp + 0x70]
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 0
jmp 0x53ccf2
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 4]
mov dword [esp + 0x1c], esi
or ecx, dword [esp + 0x8c]
mov dword [esp + 0x20], eax
je 0x53cc35
cmp dword [esp + 0x64], 0
je 0x53cd7d
movzx eax, byte [esp + 0x27]
movzx ecx, byte [esp + 0x26]
mov dword [esp + 0x11c], 0
mov dword [esp + 0x144], 8
mov dword [esp + 0x14c], 0
mov dword [esp + 0x148], 0
shl eax, 8
lea ebx, [eax + ecx + 0x50000]
mov eax, dword [esp + 0x64]
lea eax, [eax*4]
mov dword [esp + 0x120], eax
add dword [esp + 0x14c], 1
pxor xmm0, xmm0
mov dword [esp + 0xf0], 0x2e
mov dword [esp + 0xec], 0
mov dword [esp + 0x150], 0
mov dword [esp + 0x70], 0
mov dword [esp + 4], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
movdqa xmmword [esp + 0x2c0], xmm0
adc dword [esp + 0x148], 0
xor esi, esi
jmp 0x53c8f9
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x70], eax
mov dword [esp + 4], ecx
add esi, 4
cmp dword [esp + 0x120], esi
je 0x53cb39
mov eax, dword [esp + 4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
movzx eax, word [eax + esi + 2]
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
push eax
push ebx
call fcn.0053f1a0
add esp, 8
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb8]
mov edi, dword [esp + 0xc4]
or eax, dword [esp + 0xb4]
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x28], eax
mov dword [esp], ecx
jne 0x53ccde
mov eax, dword [esp + 0x10]
movzx ecx, word [eax + esi]
dec ecx
cmp ecx, 4
ja 0x53c8d9
mov ecx, dword [ecx*4 + 0x53cf58]
mov eax, dword [esp]
add ecx, dword [esp + 0x34]
shr eax, 8
jmp ecx
mov eax, dword [esp + 0xf0]
xor eax, 0x2e
or eax, dword [esp + 0xec]
je 0x53cd7d
mov eax, dword [esp + 0x11c]
cmp eax, dword [esp + 0x38]
jne 0x53cb83
mov edx, dword [esp + 0x11c]
lea ecx, [esp + 0x38]
call fcn.00531ef0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x144], eax
mov dword [esp + 0x11c], ecx
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x144]
mov esi, dword [esp + 0xec]
movdqa xmm0, xmmword [esp + 0x2c0]
imul eax, ecx, 0x38
inc ecx
mov dword [edx + eax + 4], esi
mov esi, dword [esp + 0xf0]
mov dword [esp + 0x11c], ecx
mov dword [edx + eax], esi
mov esi, dword [esp + 0x190]
mov dword [edx + eax + 8], esi
mov esi, dword [esp + 0x150]
mov dword [edx + eax + 0xc], esi
mov esi, dword [esp + 0x70]
mov dword [edx + eax + 0x10], esi
mov esi, dword [esp + 4]
mov dword [edx + eax + 0x14], esi
mov esi, dword [esp + 0x98]
mov dword [edx + eax + 0x1c], esi
mov esi, dword [esp + 0x9c]
mov dword [edx + eax + 0x18], esi
mov esi, dword [esp + 0xa0]
mov dword [edx + eax + 0x24], esi
mov esi, dword [esp + 0xa4]
mov dword [edx + eax + 0x20], esi
mov esi, dword [esp + 0x14c]
movdqu xmmword [edx + eax + 0x28], xmm0
mov edx, dword [esp + 0x148]
mov dword [esp + 0x40], ecx
cmp esi, dword [esp + 0x4c]
sbb edx, dword [esp + 0x8c]
jb 0x53c846
xor esi, esi
mov dword [esp + 0x4c], 0x2e
mov dword [esp + 0x70], 0
movsd xmm0, qword [esp + 0x130]
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x138]
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
movsd qword [esp + 0x180], xmm0
movq xmm0, qword [esp + 0x38]
add eax, dword [esp + 0x128]
mov dword [esp + 0x188], edx
mov dword [esp + 0x2a8], ecx
movq qword [esp + 0x2a0], xmm0
pxor xmm0, xmm0
mov dword [esp + 0x68], eax
movdqa xmmword [esp + 0x160], xmm0
movdqa xmmword [esp + 0x170], xmm0
jmp 0x53b54d
mov eax, dword [esp]
mov dword [esp + 0x10], 2
xor edi, edi
mov dword [esp + 0x58], eax
mov al, 0x13
mov dword [esp + 0x5c], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], 0
xor ebx, ebx
jmp 0x53ccf2
mov esi, dword [esp + 0x14]
mov eax, dword [esp]
xor ebx, ebx
mov dword [esp + 0x58], eax
shr esi, 8
mov dword [esp + 0x5c], edi
cmp dword [esp + 0x38], 0
je 0x53cd07
mov ecx, dword [esp + 0x3c]
mov edx, 8
call fcn.004256e0
cmp dword [esp + 0x2c], 0
sete al
or bl, al
jne 0x53cd21
mov ecx, dword [esp + 0x10]
mov edx, 2
call fcn.004256e0
xor ebx, ebx
jmp 0x53c1ba
mov dword [esp + 0x10], 2
mov dword [esp + 0x2c], 0
mov dword [esp + 0x64], 0
jmp 0x53cc47
mov esi, dword [esp + 0x14]
mov eax, dword [esp]
mov dword [esp + 0x10], 2
shr esi, 8
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edi
jmp 0x53ccd2
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x69be54
call fcn.0043a9e0
add esp, 4
jmp 0x53cd94
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x69be44
call fcn.0043a9e0
add esp, 4
ud2