Function at 0x4e66f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x4c
mov edi, dword [ebp + 8]
mov esi, dword [edi]
test esi, esi
je 0x4e73d6
mov ecx, dword [edi + 8]
movzx ebx, byte [ebp + 0xc]
test ecx, ecx
mov dword [ebp - 0x24], ecx
je 0x4e69a7
mov eax, esi
mov eax, dword [esi + 8]
cmp ecx, 1
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x28], eax
je 0x4e689d
mov eax, dword [ebp - 0x24]
xor edx, edx
lea edi, [eax + 0xfffffff]
mov eax, dword [ebp - 0x28]
mov ecx, edi
and ecx, 0xfffffff
cmp ecx, 8
jb 0x4e6881
movd xmm0, dword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
and edi, 7
mov edx, ecx
sub edx, edi
mov esi, edx
pshufd xmm1, xmm0, 0
movdqa xmm0, xmmword [0x5b1b10]
add eax, 0x88
movdqa xmm2, xmm1
nop word cs:[eax + eax]
nop dword [eax]
movd xmm3, dword [eax - 0x40]
movd xmm5, dword [eax - 0x50]
movd xmm4, dword [eax - 0x70]
movd xmm6, dword [eax - 0x20]
movdqa xmm7, xmm1
pxor xmm1, xmm0
punpckldq xmm5, xmm3
movd xmm3, dword [eax - 0x60]
punpckldq xmm4, xmm3
movd xmm3, dword [eax]
punpcklqdq xmm4, xmm5
movd xmm5, dword [eax - 0x10]
punpckldq xmm5, xmm3
movd xmm3, dword [eax - 0x30]
sub eax, 0xffffff80
add esi, 0xfffffff8
punpckldq xmm3, xmm6
movdqa xmm6, xmm4
pxor xmm6, xmm0
punpcklqdq xmm3, xmm5
pcmpgtd xmm6, xmm1
pand xmm7, xmm6
pandn xmm6, xmm4
movdqa xmm4, xmm2
pxor xmm2, xmm0
movdqa xmm1, xmm6
movdqa xmm6, xmm3
pxor xmm6, xmm0
por xmm1, xmm7
pcmpgtd xmm6, xmm2
pand xmm4, xmm6
pandn xmm6, xmm3
movdqa xmm2, xmm6
por xmm2, xmm4
jne 0x4e6780
movdqa xmm4, xmm1
movdqa xmm3, xmm2
test edi, edi
pxor xmm4, xmm0
pxor xmm3, xmm0
pcmpgtd xmm3, xmm4
pand xmm1, xmm3
pandn xmm3, xmm2
por xmm3, xmm1
pshufd xmm2, xmm3, 0xee
movdqa xmm4, xmm3
movdqa xmm1, xmm2
pxor xmm4, xmm0
pxor xmm1, xmm0
pcmpgtd xmm1, xmm4
pand xmm3, xmm1
pandn xmm1, xmm2
por xmm1, xmm3
movdqa xmm3, xmm1
pshufd xmm2, xmm1, 0x55
pxor xmm3, xmm0
pxor xmm0, xmm2
pcmpgtd xmm0, xmm3
pand xmm1, xmm0
pandn xmm0, xmm2
por xmm0, xmm1
movd eax, xmm0
je 0x4e689d
mov esi, dword [ebp - 0x10]
sub ecx, edx
shl edx, 4
lea edx, [edx + esi + 0x18]
nop dword [eax]
mov esi, dword [edx]
cmp eax, esi
cmovae eax, esi
add edx, 0x10
dec ecx
jne 0x4e6890
test eax, eax
je 0x4e6a88
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x10]
test bl, bl
jne 0x4e69b1
mov ecx, dword [ebp - 0x24]
mov eax, dword [esi]
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x1c], esi
shl ecx, 4
mov dword [ebp - 0x14], eax
add eax, edx
mov edi, edx
add ecx, esi
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebp - 0x2c], ecx
mov ecx, 1
jmp 0x4e68f9
mov edi, dword [ebp - 0x40]
mov esi, dword [ebp - 0x10]
movzx ebx, byte [ebp + 0xc]
mov edx, dword [ebp - 0x28]
xor ecx, ecx
mov al, 1
test edi, edi
je 0x4e6b59
test al, 1
je 0x4e6910
mov ebx, dword [ebp - 0x1c]
cmp ebx, dword [ebp - 0x2c]
jne 0x4e6928
jmp 0x4e6ad9
mov eax, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x1c]
sub eax, ebx
shr eax, 4
cmp eax, ecx
jbe 0x4e6ad9
shl ecx, 4
add ebx, ecx
mov eax, edx
sub eax, edi
jb 0x4e747e
mov esi, dword [ebx + 8]
test esi, esi
je 0x4e6b52
mov edx, dword [ebx]
add eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
add ebx, 0x10
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x1c], ebx
xor ebx, ebx
add edx, esi
sub ecx, eax
neg esi
mov eax, 0xffffffff
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x40], ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
lea edx, [edi + eax]
cmp edx, 0xffffffff
je 0x4e68e0
mov edx, dword [ebp - 0x20]
mov ecx, edi
mov edi, dword [ebp - 0x18]
movzx edx, byte [edx + eax]
cmp dl, byte [edi + eax]
jne 0x4e69a0
inc ebx
mov edx, esi
dec eax
mov edi, ecx
add edx, ebx
jne 0x4e6970
mov edi, dword [ebp - 0x3c]
jmp 0x4e68e3
mov edi, ebx
jmp 0x4e68e3
xor edx, edx
test bl, bl
je 0x4e6d1e
push 1
push edi
call fcn.004e74f0
add esp, 8
mov esi, dword [edi]
mov edx, dword [edi + 8]
test esi, esi
je 0x4e6bb7
test edx, edx
je 0x4e6bb7
mov eax, dword [esi + 8]
mov ecx, dword [esi]
mov dword [ebp - 0x1c], edx
shl edx, 4
mov dword [ebp - 0x10], esi
add edx, esi
mov dword [ebp - 0x18], edx
xor edx, edx
mov dword [ebp - 0x14], ecx
mov ecx, 1
mov edi, eax
mov dword [ebp - 0x20], eax
jmp 0x4e6a15
mov edi, ebx
xor ecx, ecx
test ebx, ebx
movzx ebx, byte [ebp + 0xc]
mov eax, dword [ebp - 0x20]
mov dl, 1
je 0x4e6b6c
test dl, 1
je 0x4e6a30
cmp esi, dword [ebp - 0x18]
jne 0x4e6a45
jmp 0x4e6af2
mov edx, dword [ebp - 0x18]
sub edx, esi
shr edx, 4
cmp edx, ecx
jbe 0x4e6af2
shl ecx, 4
add esi, ecx
cmp edi, eax
ja 0x4e748f
mov ecx, dword [esi + 8]
cmp ecx, edi
cmovb edi, ecx
test edi, edi
je 0x4e6b60
mov ecx, dword [esi]
add esi, 0x10
xor ebx, ebx
nop word cs:[eax + eax]
nop
movzx edx, byte [ecx + ebx]
mov eax, dword [ebp - 0x14]
cmp dl, byte [eax + ebx]
jne 0x4e6a00
inc ebx
cmp edi, ebx
jne 0x4e6a70
mov ebx, edi
jmp 0x4e6a02
mov eax, dword [ebp - 0x10]
mov esi, dword [0x6074a0]
mov ebx, dword [ebp - 0x24]
lea edi, [eax + 4]
jmp 0x4e6aa6
add edi, 0x10
dec ebx
je 0x4e6ab9
cmp dword [edi], 0
je 0x4e6aa0
push dword [edi - 4]
push 0
push dword [esi]
call sub.KERNEL32.dll_HeapFree
jmp 0x4e6aa0
mov edi, dword [ebp + 8]
cmp dword [edi + 4], 0
je 0x4e6ace
push dword [ebp - 0x10]
push 0
push dword [esi]
call sub.KERNEL32.dll_HeapFree
mov dword [edi], 0
jmp 0x4e73d6
mov eax, edx
sub eax, edi
jb 0x4e74bb
mov ecx, dword [ebp - 0x24]
movzx ebx, byte [ebp + 0xc]
add dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], ecx
jmp 0x4e6b00
cmp edi, eax
ja 0x4e74c2
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x24]
cmp ecx, 2
jb 0x4e6b4d
test bl, bl
je 0x4e6b4d
test edi, edi
je 0x4e6b4d
cmp edi, 4
jae 0x4e6b4d
mov ecx, dword [ebp - 0x14]
movzx ecx, byte [ecx]
cmp byte [ecx + str.743210_._g], 0xc8
jae 0x4e6b4d
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp + 8]
add esi, 8
shl eax, 4
jmp 0x4e6b3c
add esi, 0x10
add eax, 0xfffffff0
je 0x4e6e6d
cmp dword [esi], 2
jb 0x4e6b30
mov byte [esi + 4], 0
mov dword [esi], 1
jmp 0x4e6b30
mov eax, dword [ebp - 0x1c]
jmp 0x4e6b74
mov esi, dword [ebp - 0x10]
movzx ebx, byte [ebp + 0xc]
xor edi, edi
mov eax, dword [ebp - 0x24]
jmp 0x4e6b74
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x10]
movzx ebx, byte [ebp + 0xc]
jmp 0x4e6b72
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x10]
xor edi, edi
mov edx, eax
shl eax, 4
mov ecx, esi
nop dword [eax + eax]
test eax, eax
je 0x4e6b9f
add eax, 0xfffffff0
cmp byte [ecx + 0xc], 0
lea ecx, [ecx + 0x10]
jne 0x4e6b80
xor eax, eax
cmp edi, 2
setb cl
cmp edi, 4
jbe 0x4e6bb0
jmp 0x4e6bc4
cmp edx, 0x11
setb al
cmp edi, 2
setb cl
cmp edi, 4
ja 0x4e6bc4
or cl, al
je 0x4e6bc4
mov edi, dword [ebp + 8]
test esi, esi
jne 0x4e6d1e
jmp 0x4e73d6
test bl, bl
je 0x4e6be4
add esi, 8
shl edx, 4
jmp 0x4e6bd8
add esi, 0x10
add edx, 0xfffffff0
je 0x4e6c17
cmp dword [esi], edi
jbe 0x4e6bd0
mov byte [esi + 4], 0
mov dword [esi], edi
jmp 0x4e6bd0
mov ebx, edx
add esi, 0xc
shl ebx, 4
jmp 0x4e6bf8
add esi, 0x10
add ebx, 0xfffffff0
je 0x4e6c17
mov eax, dword [esi - 4]
sub eax, edi
jbe 0x4e6bf0
mov byte [esi], 0
mov ecx, dword [esi - 0xc]
add eax, ecx
push edi
push eax
push ecx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov dword [esi - 4], edi
jmp 0x4e6bf0
mov edi, dword [ebp + 8]
mov esi, dword [edi]
test esi, esi
je 0x4e74a0
mov edx, dword [edi + 8]
cmp edx, 2
jb 0x4e6d06
dec edx
lea ebx, [esi + 0x1c]
mov dword [ebp - 0x10], esi
mov ecx, edx
mov edx, 1
jmp 0x4e6c6a
mov esi, dword [ebp - 0x14]
mov eax, edx
inc edx
shl eax, 4
movq xmm0, qword [esi]
movq xmm1, qword [esi + 8]
movq qword [edi + eax + 8], xmm1
movq qword [edi + eax], xmm0
mov edi, dword [ebp + 8]
add ebx, 0x10
dec ecx
je 0x4e6cf9
lea eax, [ebx - 0xc]
mov edi, dword [ebp - 0x10]
lea esi, [edx - 1]
mov dword [ebp - 0x14], eax
mov eax, dword [ebx - 4]
shl esi, 4
cmp eax, dword [edi + esi + 8]
jne 0x4e6c40
mov dword [ebp - 0x18], ecx
lea ecx, [edi + esi]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x14]
mov ecx, dword [ecx]
push eax
mov eax, dword [ebp - 0x20]
push dword [eax]
mov dword [ebp - 0x1c], ecx
push ecx
mov dword [ebp - 0x20], edx
call sub.msvcrt.dll_memcmp
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x20]
add esp, 0xc
test eax, eax
jne 0x4e6c40
cmp byte [ebx], 0
setne al
cmp byte [edi + esi + 0xc], 0
setne cl
cmp al, cl
je 0x4e6cce
mov eax, dword [ebp - 0x10]
mov byte [ebx], 0
lea eax, [eax + esi + 0xc]
mov byte [eax], 0
cmp dword [ebx - 8], 0
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0x1c]
je 0x4e6cec
push eax
push 0
mov eax, dword [0x6074a0]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
add ebx, 0x10
dec ecx
jne 0x4e6c6a
mov dword [edi + 8], edx
mov esi, dword [edi]
test esi, esi
je 0x4e74a0
cmp edx, 1
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x38], 1
jne 0x4e74a7
mov edx, 1
mov eax, edx
shl edx, 4
mov ecx, esi
nop word cs:[eax + eax]
nop
mov ebx, edx
test edx, edx
je 0x4e6d57
cmp byte [ecx + 0xc], 0
lea ecx, [ecx + 0x10]
lea edx, [ebx - 0x10]
jne 0x4e6d30
xor ecx, ecx
test esi, esi
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x14], 0
jne 0x4e6d93
jmp 0x4e7194
lea ecx, [ebp - 0x38]
mov edx, esi
push eax
call fcn.004cfd30
add esp, 4
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
mov esi, dword [edi]
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x50], eax
mov ecx, 1
test esi, esi
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x14], 0
je 0x4e7194
mov edi, dword [edi + 8]
cmp edi, 0xb
jb 0x4e712d
cmp byte [ebp + 0xc], 0
je 0x4e6dc9
add esi, 8
shl edi, 4
jmp 0x4e6db8
add esi, 0x10
add edi, 0xfffffff0
je 0x4e6e0d
cmp dword [esi], 6
jb 0x4e6db0
mov byte [esi + 4], 0
mov dword [esi], 5
jmp 0x4e6db0
add esi, 0xc
shl edi, 4
jmp 0x4e6de8
add esi, 0x10
add edi, 0xfffffff0
je 0x4e6e0d
mov eax, dword [esi - 4]
cmp eax, 6
jb 0x4e6de0
mov byte [esi], 0
mov ecx, dword [esi - 0xc]
mov edx, dword [eax + ecx - 5]
movzx eax, byte [eax + ecx - 1]
mov byte [ecx + 4], al
mov dword [ecx], edx
mov dword [esi - 4], 5
jmp 0x4e6de0
mov edi, dword [ebp + 8]
cmp byte [ebp + 0xc], 0
mov esi, dword [edi]
je 0x4e6e29
test esi, esi
je 0x4e6e29
push 1
push edi
call fcn.004e74f0
add esp, 8
mov esi, dword [edi]
test esi, esi
je 0x4e7194
mov edi, dword [edi + 8]
cmp edi, 0xb
jb 0x4e712d
cmp byte [ebp + 0xc], 0
je 0x4e6f43
add esi, 8
shl edi, 4
jmp 0x4e6e5c
add esi, 0x10
add edi, 0xfffffff0
je 0x4e6f75
cmp dword [esi], 5
jb 0x4e6e50
mov byte [esi + 4], 0
mov dword [esi], 4
jmp 0x4e6e50
mov edx, dword [ecx]
test edx, edx
je 0x4e73d6
mov ecx, dword [ecx + 8]
cmp ecx, 2
jb 0x4e73d6
dec ecx
lea esi, [edx + 0x1c]
mov ebx, 1
mov dword [ebp - 0x10], edx
jmp 0x4e6ebb
mov ebx, dword [ebp - 0x14]
movq xmm0, qword [edi]
movq xmm1, qword [edi + 8]
mov edi, dword [ebp + 8]
mov eax, ebx
inc ebx
shl eax, 4
movq qword [edx + eax + 8], xmm1
movq qword [edx + eax], xmm0
add esi, 0x10
dec ecx
je 0x4e6f3b
mov eax, dword [esi - 4]
mov dword [ebp - 0x14], ebx
dec ebx
lea edi, [esi - 0xc]
shl ebx, 4
cmp eax, dword [edx + ebx + 8]
jne 0x4e6e91
mov dword [ebp - 0x18], ecx
lea ecx, [edx + ebx]
mov dword [ebp - 0x20], ecx
mov ecx, dword [edi]
push eax
mov eax, dword [ebp - 0x20]
push dword [eax]
mov dword [ebp - 0x20], ecx
push ecx
call sub.msvcrt.dll_memcmp
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x10]
add esp, 0xc
test eax, eax
jne 0x4e6e91
cmp byte [esi], 0
setne al
cmp byte [edx + ebx + 0xc], 0
setne cl
cmp al, cl
je 0x4e6f11
lea eax, [edx + ebx + 0xc]
mov byte [esi], 0
mov byte [eax], 0
cmp dword [esi - 8], 0
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0x20]
je 0x4e6f2f
push eax
push 0
mov eax, dword [0x6074a0]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
add esi, 0x10
dec ecx
jne 0x4e6ebb
mov dword [edi + 8], ebx
jmp 0x4e73d6
add esi, 0xc
shl edi, 4
jmp 0x4e6f58
add esi, 0x10
add edi, 0xfffffff0
je 0x4e6f75
mov eax, dword [esi - 4]
cmp eax, 5
jb 0x4e6f50
mov byte [esi], 0
mov ecx, dword [esi - 0xc]
mov eax, dword [eax + ecx - 4]
mov dword [ecx], eax
mov dword [esi - 4], 4
jmp 0x4e6f50
mov edi, dword [ebp + 8]
cmp byte [ebp + 0xc], 0
mov esi, dword [edi]
je 0x4e6f91
test esi, esi
je 0x4e6f91
push 1
push edi
call fcn.004e74f0
add esp, 8
mov esi, dword [edi]
test esi, esi
je 0x4e7194
mov edi, dword [edi + 8]
cmp edi, 0x41
jb 0x4e712d
cmp byte [ebp + 0xc], 0
je 0x4e6fcc
add esi, 8
shl edi, 4
jmp 0x4e6fbb
add esi, 0x10
add edi, 0xfffffff0
je 0x4e7003
cmp dword [esi], 4
jb 0x4e6fb3
mov byte [esi + 4], 0
mov dword [esi], 3
jmp 0x4e6fb3
add esi, 0xc
shl edi, 4
jmp 0x4e6fdc
add esi, 0x10
add edi, 0xfffffff0
je 0x4e7003
mov eax, dword [esi - 4]
cmp eax, 4
jb 0x4e6fd4
mov byte [esi], 0
mov ecx, dword [esi - 0xc]
movzx edx, word [eax + ecx - 3]
movzx eax, byte [eax + ecx - 1]
mov byte [ecx + 2], al
mov word [ecx], dx
mov dword [esi - 4], 3
jmp 0x4e6fd4
mov edi, dword [ebp + 8]
cmp byte [ebp + 0xc], 0
mov esi, dword [edi]
je 0x4e701f
test esi, esi
je 0x4e701f
push 1
push edi
call fcn.004e74f0
add esp, 8
mov esi, dword [edi]
test esi, esi
je 0x4e7194
mov edi, dword [edi + 8]
cmp edi, 0x41
jb 0x4e712d
cmp byte [ebp + 0xc], 0
je 0x4e705a
add esi, 8
shl edi, 4
jmp 0x4e7049
add esi, 0x10
add edi, 0xfffffff0
je 0x4e7089
cmp dword [esi], 3
jb 0x4e7041
mov byte [esi + 4], 0
mov dword [esi], 2
jmp 0x4e7041
add esi, 0xc
shl edi, 4
jmp 0x4e706a
add esi, 0x10
add edi, 0xfffffff0
je 0x4e7089
mov eax, dword [esi - 4]
cmp eax, 3
jb 0x4e7062
mov byte [esi], 0
mov ecx, dword [esi - 0xc]
movzx eax, word [eax + ecx - 2]
mov word [ecx], ax
mov dword [esi - 4], 2
jmp 0x4e7062
mov edi, dword [ebp + 8]
cmp byte [ebp + 0xc], 0
mov esi, dword [edi]
je 0x4e70a5
test esi, esi
je 0x4e70a5
push 1
push edi
call fcn.004e74f0
add esp, 8
mov esi, dword [edi]
test esi, esi
je 0x4e7194
mov edi, dword [edi + 8]
cmp edi, 0xb
jb 0x4e712d
cmp byte [ebp + 0xc], 0
je 0x4e70dc
add esi, 8
shl edi, 4
jmp 0x4e70cb
add esi, 0x10
add edi, 0xfffffff0
je 0x4e710a
cmp dword [esi], 2
jb 0x4e70c3
mov byte [esi + 4], 0
mov dword [esi], 1
jmp 0x4e70c3
add esi, 0xc
shl edi, 4
jmp 0x4e70ec
add esi, 0x10
add edi, 0xfffffff0
je 0x4e710a
mov eax, dword [esi - 4]
cmp eax, 2
jb 0x4e70e4
mov byte [esi], 0
mov ecx, dword [esi - 0xc]
movzx eax, byte [eax + ecx - 1]
mov byte [ecx], al
mov dword [esi - 4], 1
jmp 0x4e70e4
mov edi, dword [ebp + 8]
cmp byte [ebp + 0xc], 0
mov esi, dword [edi]
je 0x4e7126
test esi, esi
je 0x4e7126
push 1
push edi
call fcn.004e74f0
add esp, 8
mov esi, dword [edi]
test esi, esi
je 0x4e7194
mov edi, dword [edi + 8]
test edi, edi
je 0x4e718e
mov eax, edi
xor ecx, ecx
shl eax, 4
jmp 0x4e7156
mov edx, dword [esi + ecx]
movzx edx, byte [edx]
cmp byte [edx + str.743210_._g], 0xf9
ja 0x4e7163
add ecx, 0x10
cmp eax, ecx
je 0x4e718e
mov edx, dword [esi + ecx + 8]
cmp edx, 1
je 0x4e7140
test edx, edx
jne 0x4e714f
mov dword [ebp - 0x10], esi
add esi, 4
jmp 0x4e7176
add esi, 0x10
dec edi
je 0x4e71d5
cmp dword [esi], 0
je 0x4e7170
push dword [esi - 4]
push 0
mov eax, dword [0x6074a0]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
jmp 0x4e7170
mov edi, dword [ebp + 8]
mov dword [ebp - 0x14], esi
test ebx, ebx
jne 0x4e73d6
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x50]
cmp dword [ebp - 0x14], 0
mov dword [ebp - 0x20], eax
je 0x4e7206
mov ebx, dword [edi + 8]
mov dword [ebp - 0x10], ecx
test ebx, ebx
je 0x4e73a9
mov eax, dword [ebp - 0x14]
cmp ebx, 1
mov ecx, dword [eax + 8]
jne 0x4e7213
mov edi, dword [ebp - 0x20]
cmp ecx, 3
jb 0x4e7382
jmp 0x4e740c
mov edi, dword [ebp + 8]
cmp dword [edi + 4], 0
je 0x4e71ef
push dword [ebp - 0x10]
push 0
mov eax, dword [0x6074a0]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
test ebx, ebx
mov dword [edi], 0
jne 0x4e73d6
mov ecx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x18]
mov dword [edi], eax
lea eax, [edi + 4]
jmp 0x4e73ce
lea edx, [ebx + 0xfffffff]
mov edi, dword [ebp - 0x20]
xor esi, esi
mov eax, edx
and eax, 0xfffffff
cmp eax, 8
jb 0x4e7363
movd xmm0, ecx
mov ecx, dword [ebp - 0x14]
and edx, 7
mov esi, eax
pshufd xmm1, xmm0, 0
movdqa xmm0, xmmword [0x5b1b10]
sub esi, edx
mov dword [ebp - 0x1c], edx
movdqa xmm2, xmm1
lea edx, [ecx + 0x88]
mov ecx, esi
nop dword [eax + eax]
movd xmm3, dword [edx - 0x40]
movd xmm5, dword [edx - 0x50]
movd xmm4, dword [edx - 0x70]
movd xmm6, dword [edx - 0x20]
movdqa xmm7, xmm1
pxor xmm1, xmm0
punpckldq xmm5, xmm3
movd xmm3, dword [edx - 0x60]
punpckldq xmm4, xmm3
movd xmm3, dword [edx]
punpcklqdq xmm4, xmm5
movd xmm5, dword [edx - 0x10]
punpckldq xmm5, xmm3
movd xmm3, dword [edx - 0x30]
sub edx, 0xffffff80
add ecx, 0xfffffff8
punpckldq xmm3, xmm6
movdqa xmm6, xmm4
pxor xmm6, xmm0
punpcklqdq xmm3, xmm5
pcmpgtd xmm6, xmm1
pand xmm7, xmm6
pandn xmm6, xmm4
movdqa xmm4, xmm2
pxor xmm2, xmm0
movdqa xmm1, xmm6
movdqa xmm6, xmm3
pxor xmm6, xmm0
por xmm1, xmm7
pcmpgtd xmm6, xmm2
pand xmm4, xmm6
pandn xmm6, xmm3
movdqa xmm2, xmm6
por xmm2, xmm4
jne 0x4e7260
movdqa xmm4, xmm1
movdqa xmm3, xmm2
cmp dword [ebp - 0x1c], 0
pxor xmm4, xmm0
pxor xmm3, xmm0
pcmpgtd xmm3, xmm4
pand xmm1, xmm3
pandn xmm3, xmm2
por xmm3, xmm1
pshufd xmm2, xmm3, 0xee
movdqa xmm4, xmm3
movdqa xmm1, xmm2
pxor xmm4, xmm0
pxor xmm1, xmm0
pcmpgtd xmm1, xmm4
pand xmm3, xmm1
pandn xmm1, xmm2
por xmm1, xmm3
movdqa xmm3, xmm1
pshufd xmm2, xmm1, 0x55
pxor xmm3, xmm0
pxor xmm0, xmm2
pcmpgtd xmm0, xmm3
pand xmm1, xmm0
pandn xmm0, xmm2
por xmm0, xmm1
movd ecx, xmm0
je 0x4e737d
mov edx, dword [ebp - 0x14]
sub eax, esi
shl esi, 4
lea edx, [esi + edx + 0x18]
nop
mov esi, dword [edx]
cmp ecx, esi
cmovae ecx, esi
add edx, 0x10
dec eax
jne 0x4e7370
cmp ecx, 3
jae 0x4e73de
mov eax, dword [ebp - 0x14]
mov edi, dword [0x6074a0]
lea esi, [eax + 4]
jmp 0x4e7396
add esi, 0x10
dec ebx
je 0x4e73a9
cmp dword [esi], 0
je 0x4e7390
push dword [esi - 4]
push 0
push dword [edi]
call sub.KERNEL32.dll_HeapFree
jmp 0x4e7390
mov edi, dword [ebp + 8]
cmp dword [edi + 4], 0
je 0x4e73c3
mov eax, dword [0x6074a0]
push dword [ebp - 0x14]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov ecx, dword [ebp - 0x18]
lea eax, [edi + 4]
mov dword [edi], ecx
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x20]
mov dword [edi + 8], ecx
add esp, 0x4c
pop esi
pop edi
pop ebx
pop ebp
ret
cmp ebx, 0x40
jbe 0x4e740c
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp + 8]
lea esi, [eax + 4]
jmp 0x4e73f4
add esi, 0x10
dec ebx
je 0x4e7465
cmp dword [esi], 0
je 0x4e73ee
push dword [esi - 4]
push 0
mov eax, dword [0x6074a0]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
jmp 0x4e73ee
cmp dword [ebp - 0x18], 0
je 0x4e73d6
test edi, edi
je 0x4e7449
mov eax, dword [ebp - 0x18]
mov ebx, dword [0x6074a0]
lea esi, [eax + 4]
jmp 0x4e7436
add esi, 0x10
dec edi
je 0x4e7449
cmp dword [esi], 0
je 0x4e7430
push dword [esi - 4]
push 0
push dword [ebx]
call sub.KERNEL32.dll_HeapFree
jmp 0x4e7430
cmp dword [ebp - 0x10], 0
je 0x4e73d6
mov eax, dword [0x6074a0]
push dword [ebp - 0x18]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
jmp 0x4e73d6
cmp dword [edi + 4], 0
je 0x4e73c3
push dword [ebp - 0x14]
push 0
mov eax, dword [0x6074a0]
jmp 0x4e73bc
push 0x5b36ec
push edx
push eax
call fcn.00428790
add esp, 0xc
ud2
push 0x5b36cc
push eax
push edi
call fcn.004287f0
add esp, 0xc
ud2
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x58], 0
lea ecx, [ebp - 0x38]
lea edx, [ebp - 0x58]
call fcn.004cd280
ud2
push 0x5b36dc
jmp 0x4e7483
push 0x5b36bc
jmp 0x4e7494