Function at 0x4a6ae0
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 0x4a6af7
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 0x4a6b57
mov edx, dword [esi]
lea edi, [esp + 0x198]
mov ecx, edi
push eax
push dword [esi + 4]
call fcn.004a9e00
add esp, 8
lea ecx, [esp + 0xf8]
mov edx, edi
call fcn.004aad00
movzx eax, byte [esp + 0xf8]
cmp al, 0x4b
jne 0x4a6e40
mov ecx, dword [esp + 0xfc]
mov esi, dword [esp + 0x2c]
mov edi, dword [ebp + 8]
mov dword [esp + 0x90], ebx
jmp 0x4a6b76
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x4a6e8c
mov dword [esp + 0x90], ebx
lock inc dword [ecx - 8]
jle 0x4a8d17
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.004a5700
movzx eax, byte [esp + 0xf8]
mov ebx, dword [esp + 0x90]
cmp al, 0x4b
jne 0x4a6d52
lea esi, [esp + 0xf8]
lea edi, [esp + 0xb0]
nop dword [eax + eax]
cmp byte [esp + 0xf9], 0
mov eax, dword [esp + 0xc0]
je 0x4a6ef1
test eax, eax
jne 0x4a6ef9
mov ecx, esi
mov edx, edi
call fcn.004a5700
movzx eax, byte [esp + 0xf8]
cmp al, 0x4b
je 0x4a6d20
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 0x4a6daf
mov ecx, dword [esp + 0x288]
call fcn.0049e8b0
mov eax, dword [esp + 0x1a8]
xor eax, 0x2f
or eax, dword [esp + 0x1ac]
je 0x4a6e84
cmp dword [esp + 0x1f8], 0
je 0x4a6de4
push dword [esp + 0x1fc]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x204], 0
je 0x4a6e02
push dword [esp + 0x208]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x210], 0
je 0x4a6e20
push dword [esp + 0x214]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x21c], 0
je 0x4a6e84
push dword [esp + 0x220]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
jmp 0x4a6e84
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.004a9e00
add esp, 8
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x198]
call fcn.004aad00
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
jne 0x4a6f14
mov ecx, dword [esp + 0xb4]
xor eax, eax
lea edx, [ecx + 8]
lock cmpxchg dword [esi + 0x6c], edx
mov dword [esp + 0x90], ebx
jne 0x4a74db
lock inc dword [ecx]
mov esi, dword [esp + 0x2c]
jg 0x4a6b76
jmp 0x4a8d17
test eax, eax
je 0x4a74cb
mov edi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc4]
cmp dword [edi], 0
je 0x4a6f4d
mov ebx, dword [edi + 0xc]
mov edi, dword [edi + 8]
jmp 0x4a6f5c
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 0x4a6e55
mov ebx, dword [edi + 4]
cmp ebx, 6
jae 0x4a80ea
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 [0x573980]
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 0x4a7004
add edi, 0x10
dec ebx
cmp ebx, 0xffffffff
je 0x4a730c
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.0049f5f0
add esp, 8
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xfc]
mov edx, eax
xor edx, 0x2e
or edx, ecx
je 0x4a7354
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 0x4a7120
cmp eax, 0x2130
jg 0x4a7180
add eax, 0xffffff8e
cmp eax, 0x1a
ja 0x4a7000
mov eax, dword [eax*4 + 0x4a8eb4]
add eax, dword [esp + 0x34]
jmp eax
add eax, 0xfffffffd
cmp eax, 0x18
ja 0x4a7000
mov eax, dword [eax*4 + 0x4a8e50]
add eax, dword [esp + 0x34]
jmp eax
cmp eax, 0x2131
je 0x4a7293
cmp eax, 0x2132
je 0x4a71ce
cmp eax, 0x2133
jne 0x4a7000
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.004a11e0
mov eax, dword [esp + 0x38]
xor eax, 0xb
or eax, dword [esp + 0x3c]
jne 0x4a7000
mov eax, dword [esp + 0x40]
mov dword [esp + 0x290], eax
jmp 0x4a7000
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.004a11e0
mov eax, dword [esp + 0x38]
xor eax, 0x17
or eax, dword [esp + 0x3c]
jne 0x4a7000
mov eax, dword [esp + 0x40]
mov dword [esp + 0x298], eax
jmp 0x4a7000
mov eax, dword [esp + 0x6c]
or eax, dword [esp + 4]
jne 0x4a7000
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf8]
call fcn.004a11e0
mov eax, dword [esp + 0x38]
mov dword [esp + 4], 0
xor eax, 0x2d
or eax, dword [esp + 0x3c]
jne 0x4a72ff
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 0x4a7000
mov dword [esp + 0x6c], 0
jmp 0x4a7000
mov eax, dword [esp + 0x170]
cmp dword [eax + 0x14], 0
jne 0x4a732c
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 0x4a7399
xor eax, eax
jmp 0x4a73e7
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 0x4a6d97
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.0049e690
add esp, 0xc
xor eax, eax
cmp byte [esp + 0xb0], 0x4b
jne 0x4a73e0
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 0x4a7434
xor ecx, ecx
cmp dword [esp + 0x28], 0
mov dword [esp + 0x278], 0
je 0x4a7518
jmp 0x4a74a7
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.0049e690
add esp, 0xc
xor esi, esi
cmp byte [esp + 0xb0], 0x4b
mov eax, dword [esp + 0xb8]
mov ecx, 0
jne 0x4a7487
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 0x4a752d
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 0x4a74ff
xor edi, edi
mov bl, 0x13
mov edx, eax
jmp 0x4a788a
mov byte [ebx + 8], 0x42
mov dword [ebx + 0xc], 0
jmp 0x4a6d8a
lock dec dword [ecx]
mov esi, eax
jne 0x4a74e7
call fcn.0049e8b0
lock inc dword [esi - 8]
jle 0x4a8d17
add esi, 0xfffffff8
mov ecx, esi
mov esi, dword [esp + 0x2c]
jmp 0x4a6b76
add eax, ecx
cmp edx, 4
jae 0x4a783f
mov ecx, eax
xor edi, edi
mov bl, 0x13
shr ecx, 8
jmp 0x4a786c
mov edi, 0x2f
xor esi, esi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x28], 0
jmp 0x4a7536
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 0x4a75e8
cmp dword [esp + 0x1f8], 0
je 0x4a7579
push dword [esp + 0x1fc]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x204], 0
je 0x4a759e
push dword [esp + 0x208]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x210], 0
je 0x4a75c3
push dword [esp + 0x214]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [esp + 0xa8]
cmp dword [esp + 0x21c], 0
je 0x4a75e8
push dword [esp + 0x220]
push 0
push dword [0x5970d8]
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 0x4a780b
lea eax, [esp + 0x198]
push 0x108
push eax
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x4a6e84
mov eax, ecx
and al, 0x3f
cmp al, 0xc
je 0x4a78d1
and ecx, 0x3f
jne 0x4a78fc
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 0x4a7976
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 0x4a78bb
cmp ecx, 0xffffffff
je 0x4a79ef
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 0x4a6d97
mov eax, ecx
cmp edi, eax
jae 0x4a7ad2
mov edx, ebx
xor edi, edi
mov bl, 0x13
mov dword [esp + 0x14], edx
jmp 0x4a788a
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x290]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
sub esi, ebx
jae 0x4a7915
mov al, 0x13
mov dword [esp + 0xb7], ecx
mov dword [esp + 0xbb], 0
jmp 0x4a7935
mov dword [esp + 0x8c], eax
xor esi, esi
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x34], 0
xor edx, edx
jmp 0x4a7976
movzx eax, byte [esp + 0x260]
mov byte [esp + 0x2c], al
movzx edi, al
mov eax, dword [esp + 0x8c]
mul edi
jno 0x4a7a58
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 0x4a79c5
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 0x4a6d97
mov ebx, dword [esp + 0x90]
cmp ecx, 1
jne 0x4a77f0
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x280], eax
mov dword [esp + 0x284], ecx
jmp 0x4a77f0
cmp edi, 8
jae 0x4a7ab1
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 0x4a786c
mov edx, esi
add ecx, ebx
sub edx, eax
jb 0x4a78e6
dec edi
cmp edi, 7
ja 0x4a7c0a
mov ebx, dword [esp + 0x34]
add ecx, eax
add ebx, dword [edi*4 + 0x4a8f7c]
jmp ebx
cmp dword [ebx + 4], 0
jne 0x4a7b35
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 0x4a78c5
cmp eax, 2
mov edx, ebx
jae 0x4a7ae2
mov bl, 0x13
xor edi, edi
jmp 0x4a74c6
movzx edi, word [edx]
mov dword [esp + 0x12c], eax
mov eax, edi
add eax, 0xfffffffa
cmp ax, 0xfffc
jae 0x4a7b03
movzx edx, di
mov bl, 0x11
xor edi, edi
jmp 0x4a74c6
mov eax, dword [esp + 0x12c]
mov esi, edx
cmp di, 4
lea edx, [eax - 2]
lea eax, [esi + 2]
jbe 0x4a7c69
test edx, edx
je 0x4a7e1f
cmp dword [esp + 0x12c], 3
jne 0x4a7b40
mov edx, ebx
add edx, 3
jmp 0x4a7ad9
xor ecx, ecx
mov bl, 0x35
xor edi, edi
jmp 0x4a786c
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 0x4a7c5f
mov bl, 0x41
jmp 0x4a74c6
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 0x4a7939
mov edx, dword [esp + 0x12c]
add edx, 0xfffffffc
cmp ecx, 0xfffffff0
jb 0x4a7cbc
cmp edx, 8
jae 0x4a7cd0
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 0x4a7db5
cmp edx, 4
jae 0x4a7cec
mov ecx, eax
mov bl, 0x13
and ecx, 0xffffff00
jmp 0x4a7db5
cmp dword [eax + 4], 0
jne 0x4a7db1
mov esi, dword [eax]
mov ecx, edx
add eax, 8
mov dword [esp + 0x68], eax
add ecx, 0xfffffff8
mov eax, esi
jmp 0x4a7d02
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 0x4a7da4
test eax, eax
mov dword [esp + 0x194], ecx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x128], eax
je 0x4a7da4
mov eax, dword [esp + 0x68]
movzx eax, byte [eax]
test al, al
mov byte [esp + 0xaf], al
je 0x4a7dc5
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 0x4a7d89
test ecx, ecx
je 0x4a7e1f
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 0x4a7e15
mov eax, dword [esp + 0x68]
add eax, 2
test ecx, ecx
je 0x4a7e1f
lea esi, [eax + 1]
cmp ecx, 1
mov dword [esp + 0x1c], esi
jne 0x4a7dcc
mov edx, esi
jmp 0x4a7ad9
mov edx, dword [esp + 0x68]
mov bl, 0x13
xor edi, edi
jmp 0x4a74c6
mov bl, 0x35
xor ecx, ecx
movzx edx, al
movd esi, xmm0
xor edi, edi
or edx, ecx
jmp 0x4a788a
mov bl, 0x1a
jmp 0x4a74c6
movzx edx, byte [eax]
mov edi, ecx
add edi, 0xfffffffe
mov dword [esp + 0x20], edi
je 0x4a7e1c
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 0x4a7e28
test dl, dl
setne byte [esp + 0xac]
cmp ecx, 3
jne 0x4a7e2f
mov ebx, esi
xor edi, edi
mov edx, ebx
mov bl, 0x13
jmp 0x4a788a
mov bl, 0x1b
jmp 0x4a74c6
add eax, 2
mov bl, 0x13
xor edi, edi
jmp 0x4a74c4
mov bl, 0x1c
jmp 0x4a74c6
movzx edx, byte [eax + 3]
test dl, dl
mov byte [esp + 0x56], dl
je 0x4a7e75
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 0x4a7e7c
mov eax, dword [esp + 0x140]
mov bl, 0x13
xor edi, edi
mov edx, eax
mov dword [esp + 0x14], eax
jmp 0x4a788a
mov bl, 0x1d
jmp 0x4a74c6
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 0x4a7f83
test edx, edx
je 0x4a80bc
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 0x4a7ef6
lea ecx, [edi + ebx + 1]
inc ebx
cmp ecx, eax
jne 0x4a7ee2
jmp 0x4a807a
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 0x4a83a4
cmp esi, dword [esp + 0x130]
jne 0x4a7f39
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 0x4a7ed9
jmp 0x4a80bc
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
call fcn.004aaec0
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
mov dword [esp + 0x18], eax
jne 0x4a807f
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 0x4a8103
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 0x4a8027
cmp byte [esp + 0x28], 2
jae 0x4a810b
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 0x4a817f
add ecx, 7
inc esi
add dword [esp + 0x14], 0xffffffff
jb 0x4a800d
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
mov dword [esp], eax
jmp 0x4a8103
mov dword [esp], edi
jmp 0x4a80bc
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 0x4a8135
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 0x4a8135
mov edx, 5
mov ecx, ebx
push 0x57f01c
call fcn.0046a7e0
add esp, 4
jmp 0x4a8d17
mov al, 0x13
mov dword [esp + 0x18], eax
jmp 0x4a811d
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 0x4a8153
push dword [esp + 0x134]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0xf4], 0
sete al
or bl, al
jne 0x4a8173
push dword [esp + 0x50]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
mov edx, dword [esp]
mov ebx, dword [esp + 0x18]
jmp 0x4a788a
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 0x4a837f
cmp dword [esp + 0x124], 0
je 0x4a8ce7
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.004ab250
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 0x4a8366
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 0x4a821b
mov eax, dword [esp + 0x28]
xor eax, 0x2e
or eax, dword [esp + 0x10]
je 0x4a8ce7
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x130]
jne 0x4a8302
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 0x4a81f9
mov dword [esp + 0x28], 0
jmp 0x4a83c2
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 0x4a8135
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], 0
mov dword [esp + 0x28], 0
jmp 0x4a85d8
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 0x4a85d8
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 0x4a8c30
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 0x4a8453
mov edx, dword [esp + 0x10]
lea edx, [edx + ebx + 1]
inc ebx
cmp edx, ecx
jne 0x4a8437
jmp 0x4a870e
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 0x4a8cab
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
push ebx
push dword [esp + 0x14]
call fcn.0049d7f0
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 0x4a8cc8
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 0x4a8539
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x38]
call fcn.0049db10
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 0x4a8426
jmp 0x4a8c30
lea ecx, [esp + 0xb0]
lea edx, [esp + 0x1c]
call fcn.004aaec0
movzx eax, byte [esp + 0xb0]
cmp al, 0x4b
mov dword [esp + 0x18], eax
jne 0x4a86c6
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 0x4a8706
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 0x4a8676
cmp byte [esp + 0x70], 2
jae 0x4a871a
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 0x4a8749
add ecx, 7
inc esi
add dword [esp + 4], 0xffffffff
jb 0x4a865c
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
mov dword [esp], eax
jmp 0x4a8706
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 0x4a8c6f
mov al, 0x13
mov dword [esp + 0x18], eax
jmp 0x4a872c
mov eax, dword [esp + 0x10]
mov dword [esp], eax
jmp 0x4a8c30
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 0x4a8c6f
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 0x4a8baf
cmp dword [esp + 0x64], 0
je 0x4a8d00
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 0x4a8876
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 0x4a8ab3
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.004ab250
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 0x4a8c5b
mov eax, dword [esp + 0x10]
movzx ecx, word [eax + ebx]
dec ecx
cmp ecx, 4
ja 0x4a8856
mov ecx, dword [ecx*4 + 0x4a8f20]
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 0x4a8d00
mov eax, dword [esp + 0x11c]
cmp eax, dword [esp + 0x38]
jne 0x4a8afd
mov edx, dword [esp + 0x11c]
lea ecx, [esp + 0x38]
call fcn.0049db10
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 0x4a87c3
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 0x4a7536
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 0x4a8c6f
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 0x4a8c87
push dword [esp + 0x3c]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x30], 0
sete al
or bl, al
jne 0x4a8ca4
push dword [esp + 0x10]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
xor ebx, ebx
jmp 0x4a8135
mov dword [esp + 0x10], 2
mov dword [esp + 0x30], 0
mov dword [esp + 0x64], 0
jmp 0x4a8bc1
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 0x4a8c4f
mov edx, 0x2b
mov ecx, 0x586c6b
push 0x581eac
call fcn.0046b190
add esp, 4
jmp 0x4a8d17
mov edx, 0x2b
mov ecx, 0x586c6b
push 0x581e9c
call fcn.0046b190
add esp, 4
ud2