Function at 0x4a3400
Capabilities:
Open clipboard
Read clipboard data

Disassembly:
sub esp, 0xa8
mov eax, dword [0x598b80]
xor eax, esp
mov dword [esp + 0xa4], eax
push ebx
mov ebx, dword [esp + 0xb0]
push esi
push edi
mov edi, dword [esp + 0xbc]
mov dword [esp + 0x24], ebx
test edi, edi
je 0x4a3a4d
cmp byte [edi + 0x599980], 0
mov esi, dword [esp + 0xc0]
je 0x4a347d
mov ecx, dword [str.text_plain]
mov eax, esi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4a3470
test dl, dl
je 0x4a346c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4a3470
add eax, 2
add ecx, 2
test dl, dl
jne 0x4a3450
xor eax, eax
jmp 0x4a3475
sbb eax, eax
or eax, 1
test eax, eax
je 0x4a3a4d
push 0
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je 0x4a3ac4
mov ecx, dword [str.text_plain]
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4a34b5
test dl, dl
je 0x4a34b1
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4a34b5
add eax, 2
add ecx, 2
test dl, dl
jne 0x4a3495
xor eax, eax
jmp 0x4a34ba
sbb eax, eax
or eax, 1
push ebp
test eax, eax
jne 0x4a358f
push 0xd
call dword [sym.imp.USER32.dll_GetClipboardData]
mov ebp, eax
test ebp, ebp
je 0x4a3a44
push ebp
call dword [sym.imp.kernel32.dll_GlobalLock]
mov edi, eax
mov dword [esp + 0x18], eax
lea eax, [edi + 2]
mov cx, word [edi]
add edi, 2
test cx, cx
jne 0x4a34e5
sub edi, eax
sar edi, 1
lea esi, [edi*4]
lea eax, [esi + 1]
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
push edi
push dword [esp + 0x20]
mov ebx, eax
push esi
push ebx
call fcn.004d45e0
add esp, 0x14
mov byte [eax + ebx], 0
push ebp
call dword [sym.imp.kernel32.dll_GlobalUnlock]
mov dl, byte [ebx]
mov ecx, ebx
mov eax, ebx
test dl, dl
je 0x4a354a
nop word [eax + eax]
lea eax, [eax + 1]
cmp dl, 0xd
jne 0x4a3541
cmp byte [eax], 0xa
jne 0x4a3541
mov dl, 0xa
jmp 0x4a3530
mov byte [ecx], dl
inc ecx
mov dl, byte [eax]
test dl, dl
jne 0x4a3530
mov byte [ecx], 0
sub ecx, ebx
mov eax, dword [str.text_plain]
mov dword [0x5997e8], ecx
mov ecx, dword [esp + 0x28]
mov dword [0x5960ec], ebx
mov dword [0x5960f0], eax
push 0x11
mov eax, dword [ecx]
call dword [eax + 8]
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov dword [0x5960ec], 0
call dword [sym.imp.USER32.dll_CloseClipboard]
pop ebp
jmp 0x4a3ac4
mov eax, dword [str.image]
mov cl, byte [esi]
cmp cl, byte [eax]
jne 0x4a35b4
test cl, cl
je 0x4a35b0
mov cl, byte [esi + 1]
cmp cl, byte [eax + 1]
jne 0x4a35b4
add esi, 2
add eax, 2
test cl, cl
jne 0x4a3594
xor eax, eax
jmp 0x4a35b9
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4a3a44
mov esi, dword [sym.imp.USER32.dll_GetClipboardData]
push 8
call esi
mov dword [esp + 0x30], eax
test eax, eax
je 0x4a384a
push eax
call dword [sym.imp.kernel32.dll_GlobalLock]
mov ebx, eax
movzx eax, word [ebx + 0xe]
mov esi, dword [ebx + 8]
mov ecx, eax
mov ebp, dword [ebx + 4]
mov dword [esp + 0x14], esi
cmp eax, 0x18
je 0x4a35fe
cmp eax, 0x20
jne 0x4a372e
cmp dword [ebx + 0x10], 0
jne 0x4a372e
cmp dword [ebx + 0x20], 0
jne 0x4a372e
shr ecx, 3
mov dword [esp + 0x34], ecx
cmp ecx, 3
jne 0x4a3632
lea eax, [ebp + 1]
lea eax, [eax + eax*2]
cdq
and edx, ecx
add eax, edx
sar eax, 2
mov dword [esp + 0x10], eax
jmp 0x4a3636
mov dword [esp + 0x10], ebp
mov eax, esi
cdq
xor eax, edx
sub eax, edx
imul eax, ecx
imul eax, ebp
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
xor ecx, ecx
mov dword [esp + 0x1c], eax
add esp, 4
mov edi, eax
test esi, esi
setle cl
lea ecx, [ecx*2 - 1]
mov dword [esp + 0x2c], ecx
test esi, esi
jle 0x4a366d
dec esi
xor edx, edx
jmp 0x4a3675
mov edx, dword [esp + 0x14]
xor esi, esi
not edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], edx
mov edx, eax
imul edx, ecx
lea ecx, [ebx + 0x28]
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x24], edx
shl dword [esp + 0x24], 2
mov edx, dword [esp + 0x1c]
imul eax, esi
lea ecx, [ecx + eax*4]
xor eax, eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x20], esi
test ebx, ebx
jle 0x4a36b1
cmp esi, edx
setge al
jmp 0x4a36b6
cmp esi, edx
setle al
test eax, eax
je 0x4a37f2
mov esi, ecx
test ebp, ebp
jle 0x4a371d
cmp dword [esp + 0x34], 4
mov ebx, ebp
jne 0x4a36f5
nop dword [eax]
mov al, byte [esi + 2]
lea esi, [esi + 4]
mov dl, byte [esi - 4]
mov cl, byte [esi - 3]
mov byte [edi], al
mov byte [edi + 1], cl
mov byte [edi + 2], dl
movzx eax, byte [esi - 1]
mov byte [edi + 3], al
add edi, 4
sub ebx, 1
jne 0x4a36d0
jmp 0x4a3711
mov al, byte [esi + 2]
lea esi, [esi + 3]
mov dl, byte [esi - 3]
mov cl, byte [esi - 2]
mov byte [edi], al
mov byte [edi + 1], cl
mov byte [edi + 2], dl
add edi, 3
sub ebx, 1
jne 0x4a36f5
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
add esi, dword [esp + 0x2c]
add ecx, dword [esp + 0x24]
jmp 0x4a369c
cmp dword [ebx + 0x10], 3
lea esi, [ebx + 0x428]
mov dword [esp + 0x10], esi
jne 0x4a3747
lea esi, [ebx + 0x34]
mov dword [esp + 0x10], esi
jmp 0x4a3758
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x4a3758
add eax, 0xa
lea eax, [ebx + eax*4]
mov dword [esp + 0x10], eax
push 0x14
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4a3780
mov eax, dword [esp + 0x14]
cdq
push 0
xor eax, edx
push 0
sub eax, edx
push eax
push ebp
call fcn.004c71d0
mov edi, eax
jmp 0x4a3782
xor edi, edi
push edi
call fcn.004cd3f0
mov eax, dword [esp + 0x18]
add esp, 4
mov ecx, dword [0x599954]
cdq
mov esi, eax
push 0
mov eax, dword [ecx]
xor esi, edx
push ebx
push dword [esp + 0x18]
sub esi, edx
push esi
push 0
push 0
push 0
push esi
push ebp
push 0
push 0
call dword [eax + 0x170]
push eax
call dword [sym.imp.gdi32.dll_SetDIBitsToDevice]
push 0
push esi
push ebp
push 0
push 0
push 0
call fcn.004c84e0
add esp, 0x18
mov dword [esp + 0x18], eax
mov esi, 3
call fcn.004cd3c0
test edi, edi
je 0x4a37ec
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax + 0xc]
mov ebx, dword [esp + 0x14]
jmp 0x4a37f6
mov esi, dword [esp + 0x34]
push dword [esp + 0x30]
call dword [sym.imp.kernel32.dll_GlobalUnlock]
mov edi, dword [esp + 0x18]
test edi, edi
je 0x4a3a44
push 0x3c
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4a383c
push 0
mov eax, ebx
cdq
push esi
xor eax, edx
sub eax, edx
push eax
push ebp
push edi
call fcn.004acbc0
mov esi, eax
mov dword [esi + 0x28], 1
jmp 0x4a3a0d
xor esi, esi
mov dword [esi + 0x28], 1
jmp 0x4a3a0d
push 0xe
call esi
mov ebp, eax
test ebp, ebp
je 0x4a3a44
lea eax, [esp + 0x48]
push eax
push 0x6c
push ebp
call dword [sym.imp.gdi32.dll_GetEnhMetaFileHeader]
mov eax, dword [esp + 0x68]
sub eax, dword [esp + 0x60]
inc eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x6c]
sub eax, dword [esp + 0x64]
inc eax
push 0
mov dword [esp + 0x1c], eax
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [sym.imp.gdi32.dll_GetDeviceCaps]
mov ebx, eax
push 4
push ebx
call esi
push 8
push ebx
mov edi, eax
call esi
push ebx
push 0
mov esi, eax
call dword [sym.imp.USER32.dll_ReleaseDC]
movd xmm1, edi
cvtdq2ps xmm1, xmm1
movd xmm0, esi
mulss xmm1, dword [0x56becc]
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [esp + 0x30], xmm1
call fcn.004982c0
mov ecx, dword [esp + 0x28]
mov esi, eax
mov edi, dword [esi]
call fcn.0049a9d0
mov ecx, dword [eax + 0x90]
call fcn.004d3b30
push eax
mov eax, dword [edi + 8]
mov ecx, esi
call eax
fstp dword [esp + 0x10]
call fcn.0049a4a0
test eax, eax
jne 0x4a3911
call fcn.0049d670
movss xmm0, dword [esp + 0x10]
push ecx
mov ecx, eax
movss dword [esp], xmm0
mov edx, dword [eax]
call dword [edx + 0x54]
movd xmm0, dword [esp + 0x2c]
movss xmm1, dword [esp + 0x10]
mulss xmm1, dword [esp + 0x30]
push 0x14
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
divss xmm0, xmm1
cvttss2si esi, xmm0
movd xmm0, dword [esp + 0x1c]
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x44], esi
divss xmm0, xmm1
cvttss2si ebx, xmm0
mov dword [esp + 0x48], ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
test eax, eax
je 0x4a3976
push 0
push 1
push ebx
push esi
mov ecx, eax
call fcn.004c71d0
mov edi, eax
jmp 0x4a3978
xor edi, edi
push edi
call fcn.004cd3f0
mov ecx, dword [0x599954]
add esp, 4
mov eax, dword [ecx]
push 0xff
call dword [eax + 0x130]
mov ecx, dword [0x599954]
push ebx
push esi
push 0
mov eax, dword [ecx]
push 0
call dword [eax + 0x68]
movd xmm0, dword [esp + 0x40]
cvtdq2ps xmm0, xmm0
mov ecx, dword [0x599954]
mulss xmm0, dword [esp + 0x10]
cvttss2si eax, xmm0
movd xmm0, dword [esp + 0x44]
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x40], eax
mulss xmm0, dword [esp + 0x10]
cvttss2si eax, xmm0
mov dword [esp + 0x44], eax
lea eax, [esp + 0x38]
push eax
mov eax, dword [ecx]
push ebp
call dword [eax + 0x170]
push eax
call dword [sym.imp.gdi32.dll_PlayEnhMetaFile]
mov ecx, edi
call fcn.004c7510
mov esi, eax
call fcn.004cd3c0
test edi, edi
je 0x4a3a09
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax + 0xc]
test esi, esi
je 0x4a3a44
mov ecx, dword [esp + 0x28]
mov eax, dword [str.image]
mov dword [0x5997ec], esi
mov dword [0x5960f0], eax
mov eax, dword [ecx]
push 0x11
call dword [eax + 8]
mov dword [0x5960f0], 0x55e0cc
test eax, eax
jne 0x4a3a44
mov dword [0x5997ec], eax
mov ecx, esi
mov eax, dword [esi]
push 1
call dword [eax + 0xc]
call dword [sym.imp.USER32.dll_CloseClipboard]
pop ebp
jmp 0x4a3ac4
mov esi, dword [edi*4 + 0x599968]
test esi, esi
je 0x4a3aba
mov eax, dword [edi*4 + 0x599970]
inc eax
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
mov dl, byte [esi]
add esp, 4
mov edi, eax
mov ecx, edi
test dl, dl
je 0x4a3a8d
lea esi, [esi + 1]
cmp dl, 0xd
jne 0x4a3a84
cmp byte [esi], 0xa
jne 0x4a3a84
mov dl, 0xa
jmp 0x4a3a73
mov byte [ecx], dl
inc ecx
mov dl, byte [esi]
test dl, dl
jne 0x4a3a73
mov byte [ecx], 0
sub ecx, edi
mov eax, dword [str.text_plain]
mov dword [0x5997e8], ecx
mov ecx, ebx
mov dword [0x5960ec], edi
mov dword [0x5960f0], eax
mov eax, dword [ebx]
push 0x11
call dword [eax + 8]
push edi
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov dword [0x5960ec], 0
mov ecx, dword [esp + 0xb0]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00515f8b
add esp, 0xa8
ret 0xc