Function at 0x4a6ed0
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 0x4a6ee7
pop eax
mov esi, edx
mov ebx, ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x28]
test eax, eax
je 0x4a6f47
mov edx, dword [esi]
lea edi, [esp + 0x198]
mov ecx, edi
push eax
push dword [esi + 4]
call fcn.004aa1f0
add esp, 8
lea ecx, [esp + 0xf8]
mov edx, edi
call fcn.004ab0f0
movzx eax, byte [esp + 0xf8]
cmp al, 0x4b
jne 0x4a7230
mov ecx, dword [esp + 0xfc]
mov esi, dword [esp + 0x2c]
mov edi, dword [ebp + 8]
mov dword [esp + 0x90], ebx
jmp 0x4a6f66
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x4a727c
mov dword [esp + 0x90], ebx
lock inc dword [ecx - 8]
jle 0x4a9107
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.004a5af0
movzx eax, byte [esp + 0xf8]
mov ebx, dword [esp + 0x90]
cmp al, 0x4b
jne 0x4a7142
lea esi, [esp + 0xf8]
lea edi, [esp + 0xb0]
nop dword [eax + eax]
cmp byte [esp + 0xf9], 0
mov eax, dword [esp + 0xc0]
je 0x4a72e1
test eax, eax
jne 0x4a72e9
mov ecx, esi
mov edx, edi
call fcn.004a5af0
movzx eax, byte [esp + 0xf8]
cmp al, 0x4b
je 0x4a7110
movzx ecx, byte [esp + 0xf9]
mov byte [ebx + 8], al
movzx esi, word [esp + 0xfa]
mov edx, dword [esp + 0x100]
mov byte [ebx + 9], cl
mov ecx, dword [esp + 0xfc]
mov word [ebx + 0xa], si
mov dword [ebx + 0xc], ecx
mov ecx, dword [esp + 0x104]
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x14], ecx
mov dword [ebx + 4], 0
mov dword [ebx], 2
mov eax, dword [esp + 0x288]
lock dec dword [eax]
jne 0x4a719f
mov ecx, dword [esp + 0x288]
call fcn.0049eca0
mov eax, dword [esp + 0x1a8]
xor eax, 0x2f
or eax, dword [esp + 0x1ac]
je 0x4a7274
cmp dword [esp + 0x1f8], 0
je 0x4a71d4
push dword [esp + 0x1fc]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x204], 0
je 0x4a71f2
push dword [esp + 0x208]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x210], 0
je 0x4a7210
push dword [esp + 0x214]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x21c], 0
je 0x4a7274
push dword [esp + 0x220]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
jmp 0x4a7274
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
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [esi]
lea ecx, [esp + 0x198]
push 0
push dword [esi + 4]
call fcn.004aa1f0
add esp, 8
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x198]
call fcn.004ab0f0
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
jne 0x4a7304
mov ecx, dword [esp + 0xb4]
xor eax, eax
lea edx, [ecx + 8]
lock cmpxchg dword [esi + 0x6c], edx
mov dword [esp + 0x90], ebx
jne 0x4a78cb
lock inc dword [ecx]
mov esi, dword [esp + 0x2c]
jg 0x4a6f66
jmp 0x4a9107
test eax, eax
je 0x4a78bb
mov edi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc4]
cmp dword [edi], 0
je 0x4a733d
mov ebx, dword [edi + 0xc]
mov edi, dword [edi + 8]
jmp 0x4a734c
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 0x4a7245
mov ebx, dword [edi + 4]
cmp ebx, 6
jae 0x4a84da
add edi, 8
mov dword [esp + 0x160], eax
lea eax, [esp + 0xc0]
mov dword [esp + 0x164], ecx
mov dword [esp + 0x168], edi
mov dword [esp + 0x16c], ebx
movaps xmm0, xmmword [0x56e980]
add edi, 0x10
dec ebx
mov dword [esp + 0x94], 0
mov dword [esp + 0x15c], 0x2e
mov dword [esp + 0x158], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x170], eax
mov eax, dword [esp + 0x198]
movaps xmmword [esp + 0x2b0], xmm0
movaps xmmword [esp + 0x70], xmm0
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x19c]
mov dword [esp + 4], eax
jmp 0x4a73f4
add edi, 0x10
dec ebx
cmp ebx, 0xffffffff
je 0x4a76fc
lea eax, [edi - 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 esi, [esp + 0x38]
lea edx, [esp + 0x160]
push esi
push dword [eax + 0x20]
call fcn.0049f9e0
add esp, 8
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xfc]
mov edx, eax
xor edx, 0x2e
or edx, ecx
je 0x4a7744
lea edx, [esp + 0x100]
mov dword [esp + 0x168], edi
mov dword [esp + 0x16c], ebx
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 0x4a7510
cmp eax, 0x2130
jg 0x4a7570
add eax, 0xffffff8e
cmp eax, 0x1a
ja 0x4a73f0
mov eax, dword [eax*4 + 0x4a92a4]
add eax, dword [esp + 0x34]
jmp eax
add eax, 0xfffffffd
cmp eax, 0x18
ja 0x4a73f0
mov eax, dword [eax*4 + 0x4a9240]
add eax, dword [esp + 0x34]
jmp eax
cmp eax, 0x2131
je 0x4a7683
cmp eax, 0x2132
je 0x4a75be
cmp eax, 0x2133
jne 0x4a73f0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.004a15d0
mov eax, dword [esp + 0x38]
xor eax, 0xb
or eax, dword [esp + 0x3c]
jne 0x4a73f0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x290], eax
jmp 0x4a73f0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.004a15d0
mov eax, dword [esp + 0x38]
xor eax, 0x17
or eax, dword [esp + 0x3c]
jne 0x4a73f0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x298], eax
jmp 0x4a73f0
mov eax, dword [esp + 0x6c]
or eax, dword [esp + 4]
jne 0x4a73f0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.004a15d0
mov eax, dword [esp + 0x38]
mov dword [esp + 4], 0
xor eax, 0x2d
or eax, dword [esp + 0x3c]
jne 0x4a76ef
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 0x4a73f0
mov dword [esp + 0x6c], 0
jmp 0x4a73f0
mov eax, dword [esp + 0x170]
cmp dword [eax + 0x14], 0
jne 0x4a771c
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 + 0x90]
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
jne 0x4a7789
xor eax, eax
jmp 0x4a77d7
lea eax, [esp + 0x100]
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
mov eax, dword [esp + 0x90]
movq qword [esp + 0x180], xmm0
movq qword [esp + 0x188], xmm1
movq qword [eax + 0x10], xmm1
movq qword [eax + 8], xmm0
mov dword [eax + 4], 0
mov dword [eax], 2
jmp 0x4a7187
movzx eax, byte [esp + 0x261]
movdqu xmmword [esp + 0x2e8], xmm1
mov edx, dword [esp + 0x2c]
lea esi, [esp + 0x2e8]
lea ecx, [esp + 0xb0]
push esi
push dword [esp + 0x290]
push eax
call fcn.0049ea80
add esp, 0xc
xor eax, eax
cmp byte [esp + 0xb0], 0x4b
jne 0x4a77d0
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb8]
movdqa xmm1, xmmword [esp + 0x2b0]
mov dword [esp + 0x270], eax
mov dword [esp + 4], ecx
mov dword [esp + 0x274], ecx
mov dword [esp + 0x70], eax
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
jne 0x4a7824
xor ecx, ecx
cmp dword [esp + 0x28], 0
mov dword [esp + 0x278], 0
je 0x4a7908
jmp 0x4a7897
movzx eax, byte [esp + 0x261]
movdqu xmmword [esp + 0x2f8], xmm1
mov edx, dword [esp + 0x2c]
lea edi, [esp + 0x2f8]
lea ecx, [esp + 0xb0]
push edi
push dword [esp + 0x290]
push eax
call fcn.0049ea80
add esp, 0xc
xor esi, esi
cmp byte [esp + 0xb0], 0x4b
mov eax, dword [esp + 0xb8]
mov ecx, 0
jne 0x4a7877
mov ecx, dword [esp + 0xb4]
cmp dword [esp + 0x28], 0
mov dword [esp + 0x278], ecx
mov dword [esp + 0x2b0], eax
mov dword [esp + 0x27c], eax
je 0x4a791d
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x20]
mov edx, dword [ecx + 0x24]
mov ecx, dword [esp + 0xa8]
sub edx, ecx
jae 0x4a78ef
xor edi, edi
mov bl, 0x13
mov edx, eax
jmp 0x4a7c7a
mov byte [ebx + 8], 0x42
mov dword [ebx + 0xc], 0
jmp 0x4a717a
lock dec dword [ecx]
mov esi, eax
jne 0x4a78d7
call fcn.0049eca0
lock inc dword [esi - 8]
jle 0x4a9107
add esi, 0xfffffff8
mov ecx, esi
mov esi, dword [esp + 0x2c]
jmp 0x4a6f66
add eax, ecx
cmp edx, 4
jae 0x4a7c2f
mov ecx, eax
xor edi, edi
mov bl, 0x13
shr ecx, 8
jmp 0x4a7c5c
mov edi, 0x2f
xor esi, esi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x28], 0
jmp 0x4a7926
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 0x4a79d8
cmp dword [esp + 0x1f8], 0
je 0x4a7969
push dword [esp + 0x1fc]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x204], 0
je 0x4a798e
push dword [esp + 0x208]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x210], 0
je 0x4a79b3
push dword [esp + 0x214]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x21c], 0
je 0x4a79d8
push dword [esp + 0x220]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x70]
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 + 4]
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 + 0x28]
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 + 0x30]
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 0x4a7bfb
lea eax, [esp + 0x198]
push 0x108
push eax
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x4a7274
mov eax, ecx
and al, 0x3f
cmp al, 0xc
je 0x4a7cc1
and ecx, 0x3f
jne 0x4a7cec
mov edi, dword [esp + 0x8c]
shr edi, 8
xor esi, esi
mov cl, 1
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x34], 0
jmp 0x4a7d66
movzx ecx, byte [esp + 0x260]
lea edi, [edx - 4]
lea ebx, [eax + 4]
mov byte [esp + 0x27], 4
mov byte [esp + 0x26], cl
mov ecx, dword [eax]
cmp ecx, 0xffffffef
jbe 0x4a7cab
cmp ecx, 0xffffffff
je 0x4a7ddf
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
shr eax, 0x10
mov byte [esp + 0x5f], al
mov edx, dword [esp + 0x58]
shl esi, 8
movzx eax, bl
mov ecx, dword [esp + 0x90]
or eax, esi
mov esi, dword [esp + 0x14]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], esi
mov dword [ecx + 0x10], edx
mov dword [ecx + 0x14], edi
mov dword [ecx + 4], 0
mov dword [ecx], 2
jmp 0x4a7187
mov eax, ecx
cmp edi, eax
jae 0x4a7ec2
mov edx, ebx
xor edi, edi
mov bl, 0x13
mov dword [esp + 0x14], edx
jmp 0x4a7c7a
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x290]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
sub esi, ebx
jae 0x4a7d05
mov al, 0x13
mov dword [esp + 0xb7], ecx
mov dword [esp + 0xbb], 0
jmp 0x4a7d25
mov dword [esp + 0x8c], eax
xor esi, esi
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x34], 0
xor edx, edx
jmp 0x4a7d66
movzx eax, byte [esp + 0x260]
mov byte [esp + 0x2c], al
movzx edi, al
mov eax, dword [esp + 0x8c]
mul edi
jno 0x4a7e48
mov al, 0x35
mov dword [esp + 0x2c], 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 + 0x8c], eax
or edi, ecx
mov ecx, dword [esp + 0xbb]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0x2c]
mov eax, edx
movzx ecx, cl
shl edi, 8
shl eax, 8
or ecx, eax
movzx eax, byte [esp + 0x8c]
or eax, edi
or esi, ebx
je 0x4a7db5
mov esi, dword [esp + 0x90]
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
mov dword [esi + 4], 0
mov dword [esi], 2
jmp 0x4a7187
mov ebx, dword [esp + 0x90]
cmp ecx, 1
jne 0x4a7be0
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x280], eax
mov dword [esp + 0x284], ecx
jmp 0x4a7be0
cmp edi, 8
jae 0x4a7ea1
mov dword [esp + 0x3f], ebx
xor edi, edi
mov bl, 0x13
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 + 0x14], eax
mov eax, dword [esp + 0xb7]
mov ecx, eax
shr ecx, 8
jmp 0x4a7c5c
mov edx, esi
add ecx, ebx
sub edx, eax
jb 0x4a7cd6
dec edi
cmp edi, 7
ja 0x4a7ffa
mov ebx, dword [esp + 0x34]
add ecx, eax
add ebx, dword [edi*4 + 0x4a936c]
jmp ebx
cmp dword [ebx + 4], 0
jne 0x4a7f25
mov edi, dword [ebx]
add eax, 0xc
add edx, 0xfffffff4
mov byte [esp + 0x27], 8
mov ebx, eax
mov eax, edi
mov edi, edx
cmp edi, eax
jb 0x4a7cb5
cmp eax, 2
mov edx, ebx
jae 0x4a7ed2
mov bl, 0x13
xor edi, edi
jmp 0x4a78b6
movzx edi, word [edx]
mov dword [esp + 0x12c], eax
mov eax, edi
add eax, 0xfffffffa
cmp ax, 0xfffc
jae 0x4a7ef3
movzx edx, di
mov bl, 0x11
xor edi, edi
jmp 0x4a78b6
mov eax, dword [esp + 0x12c]
mov esi, edx
cmp di, 4
lea edx, [eax - 2]
lea eax, [esi + 2]
jbe 0x4a8059
test edx, edx
je 0x4a820f
cmp dword [esp + 0x12c], 3
jne 0x4a7f30
mov edx, ebx
add edx, 3
jmp 0x4a7ec9
xor ecx, ecx
mov bl, 0x35
xor edi, edi
jmp 0x4a7c5c
movzx eax, byte [ebx + 2]
mov byte [esp + 0x26], al
lea eax, [ebx + 4]
mov dword [esp + 0x1c], eax
cmp byte [ebx + 3], 0
je 0x4a804f
mov bl, 0x41
jmp 0x4a78b6
movzx eax, byte [esp + 0x2c]
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 + 0x2c], eax
jmp 0x4a7d29
mov edx, dword [esp + 0x12c]
add edx, 0xfffffffc
cmp ecx, 0xfffffff0
jb 0x4a80ac
cmp edx, 8
jae 0x4a80c0
mov dword [esp + 0xb7], eax
and eax, 0xffffff00
mov bl, 0x13
movq xmm0, qword [esp + 0xb0]
movdqa xmmword [esp + 0x2d0], xmm0
movdqa xmm1, xmm0
movd ecx, xmm0
movzx edx, byte [esp + 0x2d7]
shufps xmm1, xmm0, 0x55
movd esi, xmm1
shld esi, ecx, 8
mov ecx, eax
mov dword [esp + 0x14], esi
mov eax, edx
jmp 0x4a81a5
cmp edx, 4
jae 0x4a80dc
mov ecx, eax
mov bl, 0x13
and ecx, 0xffffff00
jmp 0x4a81a5
cmp dword [eax + 4], 0
jne 0x4a81a1
mov esi, dword [eax]
mov ecx, edx
add eax, 8
mov dword [esp + 0x68], eax
add ecx, 0xfffffff8
mov eax, esi
jmp 0x4a80f2
mov ecx, edx
lea edx, [eax + 4]
add ecx, 0xfffffffc
mov dword [esp + 0x1c], edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x20], ecx
mov eax, dword [eax]
sub ecx, eax
jb 0x4a8194
test eax, eax
mov dword [esp + 0x194], ecx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x128], eax
je 0x4a8194
mov eax, dword [esp + 0x68]
movzx eax, byte [eax]
test al, al
mov byte [esp + 0xaf], al
je 0x4a81b5
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 0x4a8179
test ecx, ecx
je 0x4a820f
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 0x4a8205
mov eax, dword [esp + 0x68]
add eax, 2
test ecx, ecx
je 0x4a820f
lea esi, [eax + 1]
cmp ecx, 1
mov dword [esp + 0x1c], esi
jne 0x4a81bc
mov edx, esi
jmp 0x4a7ec9
mov edx, dword [esp + 0x68]
mov bl, 0x13
xor edi, edi
jmp 0x4a78b6
mov bl, 0x35
xor ecx, ecx
movzx edx, al
movd esi, xmm0
xor edi, edi
or edx, ecx
jmp 0x4a7c7a
mov bl, 0x1a
jmp 0x4a78b6
movzx edx, byte [eax]
mov edi, ecx
add edi, 0xfffffffe
mov dword [esp + 0x20], edi
je 0x4a820c
mov dh, byte [eax + 1]
lea esi, [eax + 3]
mov dword [esp + 0x1c], esi
mov byte [esp + 0xae], dh
mov dh, byte [eax + 2]
test dh, dh
mov byte [esp + 0xad], dh
je 0x4a8218
test dl, dl
setne byte [esp + 0xac]
cmp ecx, 3
jne 0x4a821f
mov ebx, esi
xor edi, edi
mov edx, ebx
mov bl, 0x13
jmp 0x4a7c7a
mov bl, 0x1b
jmp 0x4a78b6
add eax, 2
mov bl, 0x13
xor edi, edi
jmp 0x4a78b4
mov bl, 0x1c
jmp 0x4a78b6
movzx edx, byte [eax + 3]
test dl, dl
mov byte [esp + 0x56], dl
je 0x4a8265
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 0x4a826c
mov eax, dword [esp + 0x140]
mov bl, 0x13
xor edi, edi
mov edx, eax
mov dword [esp + 0x14], eax
jmp 0x4a7c7a
mov bl, 0x1d
jmp 0x4a78b6
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 esi, [edi + ebx]
mov dword [esp + 0x1c], esi
mov dword [esp], esi
mov dword [esp + 0x20], edx
ja 0x4a8373
test edx, edx
je 0x4a84ac
add eax, ecx
xor esi, esi
mov dword [esp + 0x50], 8
mov dword [esp + 0x14], edi
mov edi, dword [esp]
xor ebx, ebx
cmp byte [edi + ebx], 0
je 0x4a82e6
lea ecx, [edi + ebx + 1]
inc ebx
cmp ecx, eax
jne 0x4a82d2
jmp 0x4a846a
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 0x4a8794
cmp esi, dword [esp + 0x130]
jne 0x4a8329
lea ecx, [esp + 0x130]
mov edx, esi
call fcn.00474740
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 + 0x14], 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 0x4a82c9
jmp 0x4a84ac
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
call fcn.004ab2b0
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
mov dword [esp + 0x18], eax
jne 0x4a846f
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 0x4a84f3
mov eax, ecx
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x88], 0
mov ebx, 0
mov dword [esp + 0x124], ecx
lea ecx, [esi + eax]
dec eax
inc esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
xor ecx, ecx
movzx eax, byte [esi - 1]
cmp ecx, 0x3f
mov edx, esi
mov byte [esp + 0x28], al
jne 0x4a8417
cmp byte [esp + 0x28], 2
jae 0x4a84fb
movzx eax, byte [esp + 0x28]
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 + 0x88], edi
or dword [esp + 0x4c], edx
test al, al
jns 0x4a856f
add ecx, 7
inc esi
add dword [esp + 0x14], 0xffffffff
jb 0x4a83fd
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
mov dword [esp], eax
jmp 0x4a84f3
mov dword [esp], edi
jmp 0x4a84ac
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 + 0x14], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x58], eax
mov dword [esp], eax
mov dword [esp + 0x5c], edi
jmp 0x4a8525
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 + 0x18], eax
jmp 0x4a8525
mov edx, 5
mov ecx, ebx
push 0x579f94
call fcn.0046a750
add esp, 4
jmp 0x4a9107
mov al, 0x13
mov dword [esp + 0x18], eax
jmp 0x4a850d
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], eax
mov al, 6
mov dword [esp + 0x18], eax
mov eax, dword [esp]
movzx esi, byte [esp + 0x28]
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 0
cmp dword [esp + 0x130], 0
je 0x4a8543
push dword [esp + 0x134]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0xf4], 0
sete al
or bl, al
jne 0x4a8563
push dword [esp + 0x50]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
mov edx, dword [esp]
mov ebx, dword [esp + 0x18]
jmp 0x4a7c7a
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
or ecx, dword [esp + 0x88]
mov dword [esp + 0x20], eax
je 0x4a876f
cmp dword [esp + 0x124], 0
je 0x4a90d7
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 + 0x28], 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.004ab640
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 + 0x18], ecx
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x14], eax
mov dword [esp], ecx
jne 0x4a8756
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x30]
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 + 0x30], ecx
mov ecx, dword [esp + 0x28]
cmove edx, dword [esp + 0x14]
cmove ecx, dword [esp + 0x18]
add esi, 4
cmp dword [esp + 0xc], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], ecx
jne 0x4a860b
mov eax, dword [esp + 0x28]
xor eax, 0x2e
or eax, dword [esp + 0x10]
je 0x4a90d7
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x130]
jne 0x4a86f2
mov edx, dword [esp + 8]
lea ecx, [esp + 0x130]
call fcn.00474740
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 + 0x28]
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 + 0x30]
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 + 0x88]
jb 0x4a85e9
mov dword [esp + 0x28], 0
jmp 0x4a87b2
mov esi, dword [esp + 0x18]
mov eax, dword [esp]
mov dword [esp + 0x5c], edi
xor ebx, ebx
shr esi, 8
mov dword [esp + 0x58], eax
jmp 0x4a8525
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], 0
mov dword [esp + 0x28], 0
jmp 0x4a89c8
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 0x4a89c8
cmp dword [esp + 0x70], 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 0x4a9020
mov ecx, dword [esp]
xor esi, esi
mov dword [esp + 0x30], 0
mov dword [esp + 0x64], 8
add ecx, eax
mov edx, dword [esp + 0x10]
mov edi, dword [esp]
xor ebx, ebx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov edx, dword [esp + 0x10]
cmp byte [edx + ebx], 0
je 0x4a8843
mov edx, dword [esp + 0x10]
lea edx, [edx + ebx + 1]
inc ebx
cmp edx, ecx
jne 0x4a8827
jmp 0x4a8afe
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 0x4a909b
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
push ebx
push dword [esp + 0x14]
call fcn.0049dbe0
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 + 0x88], eax
xor eax, 0x2e
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], edx
or eax, ecx
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x18], eax
mov dword [esp], ecx
je 0x4a90b8
lea eax, [esp + 0xc8]
mov ecx, dword [esp + 0x30]
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 0x4a8929
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x38]
call fcn.0049df00
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x64], eax
mov dword [esp + 0x30], ecx
mov edx, dword [esp + 0x30]
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 + 0x88]
mov dword [esp + 0x30], edx
mov dword [ebx + eax], ecx
mov ecx, dword [esp + 0x18]
mov dword [ebx + eax + 8], ecx
mov ecx, dword [esp + 0x14]
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 + 0x14], edx
mov dword [esp], ecx
add ecx, eax
test eax, eax
jne 0x4a8816
jmp 0x4a9020
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
call fcn.004ab2b0
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
mov dword [esp + 0x18], eax
jne 0x4a8ab6
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 + 0x30], eax
mov dword [esp + 0x10], edx
test ecx, ecx
je 0x4a8af6
mov eax, ecx
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x88], 0
mov ebx, 0
mov dword [esp + 0x64], ecx
lea ecx, [esi + eax]
dec eax
inc esi
mov dword [esp + 0x14], 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 0x4a8a66
cmp byte [esp + 0x70], 2
jae 0x4a8b0a
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 + 0x88], edi
or dword [esp + 0x4c], edx
test al, al
jns 0x4a8b39
add ecx, 7
inc esi
add dword [esp + 4], 0xffffffff
jb 0x4a8a4c
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
mov dword [esp], eax
jmp 0x4a8af6
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 + 0x14], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x58], eax
mov dword [esp], eax
mov dword [esp + 0x5c], edi
jmp 0x4a905f
mov al, 0x13
mov dword [esp + 0x18], eax
jmp 0x4a8b1c
mov eax, dword [esp + 0x10]
mov dword [esp], eax
jmp 0x4a9020
mov eax, dword [esp + 4]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], eax
mov al, 6
mov dword [esp + 0x18], 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 0x4a905f
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 4]
mov dword [esp + 0x1c], esi
or ecx, dword [esp + 0x88]
mov dword [esp + 0x20], eax
je 0x4a8f9f
cmp dword [esp + 0x64], 0
je 0x4a90f0
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 esi, [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 ebx, ebx
jmp 0x4a8c66
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x70], eax
mov dword [esp + 4], ecx
add ebx, 4
cmp dword [esp + 0x120], ebx
je 0x4a8ea3
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 + ebx + 2]
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
push eax
push esi
call fcn.004ab640
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 + 0x18], ecx
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x14], eax
mov dword [esp], ecx
jne 0x4a904b
mov eax, dword [esp + 0x10]
movzx ecx, word [eax + ebx]
dec ecx
cmp ecx, 4
ja 0x4a8c46
mov ecx, dword [ecx*4 + 0x4a9310]
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 0x4a90f0
mov eax, dword [esp + 0x11c]
cmp eax, dword [esp + 0x38]
jne 0x4a8eed
mov edx, dword [esp + 0x11c]
lea ecx, [esp + 0x38]
call fcn.0049df00
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 edi, dword [esp + 0xec]
movdqa xmm0, xmmword [esp + 0x2c0]
imul eax, ecx, 0x38
inc ecx
mov dword [edx + eax + 4], edi
mov edi, dword [esp + 0xf0]
mov dword [esp + 0x11c], ecx
mov dword [edx + eax], edi
mov edi, dword [esp + 0x190]
mov dword [edx + eax + 8], edi
mov edi, dword [esp + 0x150]
mov dword [edx + eax + 0xc], edi
mov edi, dword [esp + 0x70]
mov dword [edx + eax + 0x10], edi
mov edi, dword [esp + 4]
mov dword [edx + eax + 0x14], edi
mov edi, dword [esp + 0x98]
mov dword [edx + eax + 0x1c], edi
mov edi, dword [esp + 0x9c]
mov dword [edx + eax + 0x18], edi
mov edi, dword [esp + 0xa0]
mov dword [edx + eax + 0x24], edi
mov edi, dword [esp + 0xa4]
mov dword [edx + eax + 0x20], edi
mov edi, dword [esp + 0x14c]
movdqu xmmword [edx + eax + 0x28], xmm0
mov edx, dword [esp + 0x148]
mov dword [esp + 0x40], ecx
cmp edi, dword [esp + 0x4c]
sbb edx, dword [esp + 0x88]
jb 0x4a8bb3
xor esi, esi
mov dword [esp + 0x4c], 0x2e
mov dword [esp + 4], 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 + 0x90]
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 0x4a7926
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 + 0x18], eax
mov dword [esp + 0x30], 0
xor ebx, ebx
jmp 0x4a905f
mov esi, dword [esp + 0x18]
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 0x4a9077
push dword [esp + 0x3c]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x30], 0
sete al
or bl, al
jne 0x4a9094
push dword [esp + 0x10]
push 0
push dword [0x5920d8]
call sub.KERNEL32.dll_HeapFree
xor ebx, ebx
jmp 0x4a8525
mov dword [esp + 0x10], 2
mov dword [esp + 0x30], 0
mov dword [esp + 0x64], 0
jmp 0x4a8fb1
mov esi, dword [esp + 0x18]
mov eax, dword [esp]
mov dword [esp + 0x10], 2
shr esi, 8
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edi
jmp 0x4a903f
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value_home_rafalh_.cargo_registry_src_index.crates.io_6f17d22bba15001f_serde_json_1.0.81_src_read.rs
push 0x57ce88
call fcn.0046b100
add esp, 4
jmp 0x4a9107
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value_home_rafalh_.cargo_registry_src_index.crates.io_6f17d22bba15001f_serde_json_1.0.81_src_read.rs
push 0x57ce78
call fcn.0046b100
add esp, 4
ud2