Function at 0x45eec0
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
push ebx
mov ebx, dword [ebp + 0x24]
push esi
mov esi, ecx
push edi
test ebx, ebx
je 0x45f1f7
test byte [esi + 0x6c], 2
je 0x45ef12
cmp ebx, 0x10
jl 0x45eeeb
mov ebx, 0x100
jmp 0x45eeee
shl ebx, 4
push ebx
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0045e9b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp ebx, 0x10
jl 0x45ef3a
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0045ebe0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
call dword [sym.imp.GDI32.dll_GdiFlush]
mov eax, dword [esi + 8]
add eax, 0x28
test byte [esi + 0x60], 1
mov dword [ebp - 8], eax
mov dword [ebp - 4], eax
je 0x45f123
mov eax, dword [ebp + 0x14]
sub eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x10], 0x100010
mov dword [ebp - 0xc], 0x100010
mov dword [ebp - 0x98], 0
lea eax, [eax + ecx*4]
mov dword [ebp - 0x94], 0
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x18]
add eax, ecx
mov dword [ebp - 0x90], 0x10001
mov dword [ebp - 0x8c], 0x100001
mov dword [ebp - 0x88], 0x20002
mov dword [ebp - 0x84], 0x200002
mov dword [ebp - 0x80], 0x30003
mov dword [ebp - 0x7c], 0x300003
mov dword [ebp - 0x78], 0x40004
mov dword [ebp - 0x74], 0x400004
mov dword [ebp - 0x70], 0x50005
mov dword [ebp - 0x6c], 0x500005
mov dword [ebp - 0x68], 0x60006
mov dword [ebp - 0x64], 0x600006
mov dword [ebp - 0x60], 0x70007
mov dword [ebp - 0x5c], 0x700007
mov dword [ebp - 0x58], 0x80008
mov dword [ebp - 0x54], 0x800008
mov dword [ebp - 0x50], 0x90009
mov dword [ebp - 0x4c], 0x900009
mov dword [ebp - 0x48], 0xa000a
mov dword [ebp - 0x44], 0xa0000a
mov dword [ebp - 0x40], 0xb000b
mov dword [ebp - 0x3c], 0xb0000b
mov dword [ebp - 0x38], 0xc000c
mov dword [ebp - 0x34], 0xc0000c
mov dword [ebp - 0x30], 0xd000d
mov dword [ebp - 0x2c], 0xd0000d
mov dword [ebp - 0x28], 0xe000e
mov dword [ebp - 0x24], 0xe0000e
mov dword [ebp - 0x20], 0xf000f
mov dword [ebp - 0x1c], 0xf0000f
mov dword [ebp - 0x18], 0x100010
mov dword [ebp - 0x14], 0x1000010
mov dword [ebp + 0xc], eax
pushfd
cld
pushal
pxor mm5, mm5
movq mm2, qword [ebp - 0x10]
mov edx, dword [ebp + 0x20]
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x24]
push edx
mov ebx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x1c]
add ebx, esi
xor eax, eax
mov al, byte [ebx]
cmp eax, ecx
jb 0x45f0aa
mov eax, ecx
test eax, 0xf
jne 0x45f0cb
inc ebx
inc esi
or eax, eax
je 0x45f106
xor eax, eax
mov ebx, dword [ebp - 4]
mov al, byte [esi - 1]
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp + 0x14]
mov dword [edi], eax
add ebx, esi
jmp 0x45f106
movq mm6, qword [ebp + eax*8 - 0x98]
xor eax, eax
mov ebx, dword [ebp - 4]
mov al, byte [esi]
movd mm1, dword [edi]
movd mm0, dword [ebx + eax*4]
punpcklbw mm1, mm5
punpcklbw mm0, mm5
movq mm7, mm2
psubw mm7, mm6
mov ebx, dword [ebp + 0x14]
inc esi
pmullw mm0, mm6
pmullw mm1, mm7
paddusw mm1, mm0
psrlw mm1, 4
packuswb mm1, mm5
add ebx, esi
movd dword [edi], mm1
add edi, 4
dec edx
jne 0x45f0a0
sub esi, dword [ebp + 0xc]
pop edx
sub edi, dword [ebp - 8]
dec edx
jne 0x45f097
emms
popal
popfd
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov edi, dword [ebp + 0x20]
mov dword [ebp + 0x24], edi
test edi, edi
jle 0x45f1f7
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
sub edx, ecx
mov eax, dword [ebp + 8]
mov dword [ebp + 0x14], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp + 0x20], eax
add edx, ecx
mov esi, ecx
cmp dword [ebp + 0x1c], 0
jle 0x45f1d9
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], ecx
nop dword [eax]
movzx ecx, byte [edx]
lea eax, [eax + 4]
movzx edi, byte [esi]
inc esi
mov dword [ebp - 4], esi
cmp edi, ebx
mov esi, dword [ebp - 8]
cmovg edi, ebx
lea esi, [esi + ecx*4]
movzx ecx, byte [eax - 4]
inc edx
mov dword [ebp + 8], edx
movzx edx, byte [esi]
sub edx, ecx
shl ecx, 4
imul edx, edi
add edx, ecx
sar edx, 4
mov byte [eax - 4], dl
movzx edx, byte [esi + 1]
movzx ecx, byte [eax - 3]
sub edx, ecx
shl ecx, 4
imul edx, edi
add edx, ecx
movzx ecx, byte [eax - 2]
sar edx, 4
mov byte [eax - 3], dl
movzx edx, byte [esi + 2]
mov esi, dword [ebp - 4]
sub edx, ecx
imul edx, edi
shl ecx, 4
mov byte [eax - 1], 0
add edx, ecx
sar edx, 4
sub dword [ebp + 0x10], 1
mov byte [eax - 2], dl
mov edx, dword [ebp + 8]
jne 0x45f160
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x24]
mov eax, dword [ebp + 0x20]
sub eax, dword [ebp + 0xc]
sub ecx, dword [ebp + 0x18]
sub edi, 1
mov edx, dword [ebp - 0xc]
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x14], ecx
mov dword [ebp + 0x24], edi
jne 0x45f145
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20