Function at 0x44dd90
Capabilities:
Encode data using xor
Write file on windows

Disassembly:
sub esp, 0x210
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x230]
mov ebp, dword [esp + 0x224]
xor eax, eax
cmp di, 0xffff
mov ecx, 0x3fffffff
sete al
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], ecx
xor ebx, ebx
mov ecx, 0xc0000001
cmp eax, ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ecx
je 0x44de3a
mov di, word [ebp + 0x38e]
lea esi, [ebp + 0x38e]
lea eax, [esp + 0x1c]
mov dword [esp + 0x230], edi
push eax
push fcn.004587d0
push ebp
call fcn.004299d0
add esp, 0xc
lea ecx, [esp + 0x70]
push edi
push ecx
mov ecx, esi
call fcn.0042f5c0
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
sub ecx, eax
sub edx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x24], edx
sub esi, ecx
sub eax, ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], eax
cmp dword [esp + 0x228], ebx
je 0x44de51
mov di, word [ebp + 0x29c]
mov dword [esp + 0x230], edi
xor eax, eax
xor ecx, ecx
mov ax, word [ebp + 0x4ea]
mov dword [esp + 0x50], ebx
cmp eax, ebx
jle 0x44de7b
lea edx, [ebp + 0x38e]
cmp word [edx], di
je 0x44df63
inc ecx
add edx, 2
cmp ecx, eax
jl 0x44de6a
push 1
push 0x42f310
push edi
push ebp
call fcn.0045c700
mov edx, dword [0x6559e0]
push ebx
push ebp
call dword [edx + 0x370]
add esp, 0x18
cmp di, bx
mov dword [esp + 0x3c], ebx
je 0x44df0c
mov eax, dword [esp + 0x230]
push eax
push ebp
call fcn.00421f10
mov ax, word [eax]
add esp, 8
cmp ax, 1
jbe 0x44df0c
and eax, 0xffff
mov edi, 4
dec eax
mov ebx, eax
mov ecx, dword [esp + 0x230]
push ecx
push ebp
call fcn.00421f10
mov edx, dword [eax + 2]
push edx
call fcn.00432740
mov esi, dword [edi + eax]
push esi
call fcn.00432740
mov ax, word [eax]
push esi
push 0
push 0x5b
push eax
push ebp
call fcn.0042f060
mov edx, dword [esp + 0x60]
add esp, 0x24
add edx, eax
add edi, 4
dec ebx
mov dword [esp + 0x3c], edx
jne 0x44deca
mov edx, dword [esp + 0x22c]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x10], 0
cmp ecx, 4
jle 0x44dfc3
lea edi, [ecx + edx - 4]
mov esi, str..wmf
mov eax, edi
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x44df70
test cl, cl
je 0x44df5f
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x44df70
add eax, 2
add esi, 2
test cl, cl
jne 0x44df3b
xor eax, eax
jmp 0x44df75
mov dword [esp + 0x50], 1
jmp 0x44de9a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x44df83
mov dword [esp + 0x10], 1
jmp 0x44dfc3
mov esi, str..emf
mov eax, edi
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x44dfb2
test cl, cl
je 0x44dfae
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x44dfb2
add eax, 2
add esi, 2
test cl, cl
jne 0x44df8a
xor eax, eax
jmp 0x44dfb7
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x44dfc3
mov dword [esp + 0x10], 2
mov eax, dword [esp + 0x228]
test eax, eax
jne 0x44dfd8
mov dword [0x5038c8], 0x60
mov ebx, dword [esp + 0x34]
test ebx, ebx
je 0x44dfec
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
sub esi, eax
jmp 0x44dff2
mov esi, dword [ebp + 0xa4e]
push 1
call fcn.00411980
mov ecx, eax
mov eax, esi
imul eax, dword [0x5038c8]
cdq
idiv ecx
add esp, 4
test ebx, ebx
mov edi, eax
mov dword [esp + 0x30], edi
je 0x44e020
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
sub esi, eax
jmp 0x44e026
mov esi, dword [ebp + 0xa52]
push 1
call fcn.00411980
mov ecx, eax
mov eax, esi
imul eax, dword [0x5038c8]
cdq
idiv ecx
add esp, 4
mov esi, eax
mov eax, dword [esp + 0x228]
test eax, eax
mov dword [esp + 0x18], esi
jne 0x44e075
mov dx, word [0x65477e]
push edx
push edi
call fcn.004021e0
mov dword [esp + 0x38], eax
mov ax, word [0x65477e]
push eax
push esi
call fcn.004021e0
add esp, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
xor esi, esi
mov dword [esp + 0x2c], ebx
test eax, eax
mov dword [esp + 0x38], esi
jne 0x44e102
test ebx, ebx
je 0x44e0e7
mov esi, dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov edi, dword [esp + 0x30]
mov edx, dword [ebp + 0x10]
lea ecx, [ebx + ebx]
push ecx
push edi
push edx
call esi
mov ecx, eax
test ecx, ecx
jne 0x44e0ca
mov eax, dword [esp + 0x228]
test eax, eax
jne 0x44e0c0
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
mov ebx, eax
jne 0x44e099
test ecx, ecx
mov dword [esp + 0x2c], ebx
je 0x44e0e7
jmp 0x44e0ce
mov dword [esp + 0x2c], ebx
push ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [ebp + 0x10]
push ebx
push edi
push eax
call esi
mov esi, eax
test esi, esi
mov dword [esp + 0x38], esi
jne 0x44e106
push 0x1877
call fcn.00454b50
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x210
ret
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x228]
mov dword [esp + 0x4c], 0
test eax, eax
je 0x44e14c
mov edi, str.Saving_Preview...
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x120]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x30]
jmp 0x44e1b3
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x44e195
mov ecx, dword [esp + 0x22c]
mov eax, dword [ebp + 0x386]
xor edx, edx
push ecx
mov dx, word [ebp + 0x29c]
mov ecx, dword [esp + 0x234]
sub eax, edx
and ecx, 0xffff
add eax, ecx
lea edx, [esp + 0x124]
push eax
push str.Exporting_Page__d_as__s...
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
jmp 0x44e1b3
mov eax, dword [esp + 0x22c]
lea ecx, [esp + 0x120]
push eax
push str.Exporting_Selected_Objects_as__s...
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov eax, dword [esp + 0x3c]
mov word [0x655ab8], 2
mov dword [0x655c22], 0
mov edx, dword [ebp + 0x10]
cmp ax, 0x7530
mov dword [esp + 0x54], edx
ja 0x44e1e2
mov ecx, dword [esp + 0x228]
test ecx, ecx
jne 0x44e1fe
lea ecx, [esp + 0x120]
push 0
and eax, 0xffff
push ecx
push eax
call fcn.004ce9e0
add esp, 0xc
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x44], 0
test eax, eax
jne 0x44e26c
mov edx, dword [ebp + 0x10]
push edx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
lea ecx, [ebp + 0x260]
mov dword [ebp + 0x10], eax
push ecx
push eax
call fcn.00454980
mov edx, dword [ebp + 0x10]
add esp, 8
push esi
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
push ebx
mov dword [esp + 0x48], eax
push edi
push 0
lea eax, [esp + 0x7c]
push 0
push eax
call dword [sym.imp.USER32.dll_SetRect]
push 0
call dword [sym.imp.GDI32.dll_GetStockObject]
mov edx, dword [ebp + 0x10]
lea ecx, [esp + 0x70]
push eax
push ecx
push edx
call dword [sym.imp.USER32.dll_FillRect]
mov esi, dword [esp + 0x10]
jmp 0x44e318
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
sub eax, ecx
mov ecx, eax
shl ecx, 7
sub ecx, eax
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x1c]
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x24]
sub eax, ecx
push edx
mov ecx, eax
shl ecx, 7
sub ecx, eax
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0
lea edx, [esp + 0x7c]
push 0
push edx
call dword [sym.imp.USER32.dll_SetRect]
mov esi, dword [esp + 0x10]
cmp esi, 1
jne 0x44e2d8
push 0
call dword [sym.imp.GDI32.dll_CreateMetaFileA]
jmp 0x44e2ff
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x22c]
neg eax
sbb eax, eax
lea ecx, [esp + 0x70]
and eax, ecx
push str.InPage
push eax
mov eax, dword [esp + 0x5c]
push edx
push eax
call dword [sym.imp.GDI32.dll_CreateEnhMetaFileA]
cmp esi, 1
mov dword [ebp + 0x10], eax
jne 0x44e318
mov eax, 0x38
mov dword [ebp + 0x264], eax
mov dword [ebp + 0x260], eax
mov cx, word [ebp + 0xc]
xor eax, eax
mov ax, word [ebp + 0x296]
xor edi, edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x228]
xor edx, edx
cmp eax, edi
mov word [esp + 0x70], cx
mov cx, word [esp + 0x230]
sete dl
cmp eax, edi
mov word [ebp + 0x296], dx
mov word [ebp + 0xe], cx
je 0x44e37c
mov edx, dword [ebp + 0x10]
push 0x58
push edx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov ecx, eax
mov eax, dword [0x5038c8]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 3
cdq
idiv ecx
jmp 0x44e383
movsx eax, word [0x65477e]
mov word [ebp + 0xc], ax
mov eax, dword [esp + 0x18]
cmp eax, edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x14], edi
jle 0x44e7ed
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
push edx
push eax
push 0
lea ecx, [esp + 0x94]
push 0
push ecx
call dword [sym.imp.USER32.dll_SetRect]
push 0
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
mov eax, dword [ebp + 0x10]
lea edx, [esp + 0x8c]
push edx
push eax
call dword [sym.imp.USER32.dll_FillRect]
mov ecx, dword [ebp + 0x10]
push ecx
call dword [sym.imp.GDI32.dll_SaveDC]
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x1c]
mov edx, esi
push 1
neg edx
sbb edx, edx
and edx, eax
mov dword [0x655b20], edx
call fcn.00411980
imul eax, dword [esp + 0x18]
cdq
idiv dword [0x5038c8]
mov ecx, dword [esp + 0x24]
neg esi
sbb esi, esi
and esi, ecx
sub esi, eax
mov eax, dword [esp + 0x234]
push eax
push ebp
mov dword [0x655b24], esi
call fcn.00421f10
mov ax, word [eax]
mov ebx, 1
mov edi, eax
add esp, 0xc
and edi, 0xffff
cmp edi, ebx
jle 0x44e4a6
mov ecx, dword [esp + 0x230]
push ecx
push ebp
call fcn.00421f10
mov edx, dword [eax + 2]
push edx
call fcn.00432740
mov esi, dword [eax + ebx*4]
mov eax, dword [esp + 0x40]
add esp, 0xc
test eax, eax
je 0x44e46d
push esi
mov ecx, ebp
call fcn.00431d20
test eax, eax
je 0x44e4a1
push esi
push ebp
call fcn.0042f1e0
push esi
call fcn.00432740
mov ax, word [eax]
mov edx, dword [0x6559e0]
and eax, 0xffff
push 0
push esi
push ebp
lea ecx, [eax + eax*2]
lea ecx, [ecx + ecx*4]
shl ecx, 3
sub ecx, eax
call dword [edx + ecx*2 + 0xae]
add esp, 0x18
inc ebx
cmp ebx, edi
jl 0x44e43c
mov eax, dword [esp + 0x50]
test eax, eax
jne 0x44e4c6
mov eax, dword [esp + 0x230]
push 0
push 0x42f310
push eax
push ebp
call fcn.0045c700
add esp, 0x10
mov eax, dword [esp + 0x10]
test eax, eax
je 0x44e63d
mov ecx, dword [ebp + 0x10]
cmp eax, 1
push ecx
jne 0x44e630
call dword [sym.imp.GDI32.dll_CloseMetaFile]
mov esi, eax
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_GetMetaFileBitsEx]
mov edi, eax
push edi
push 0x2002
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ebx, eax
push ebx
push edi
push esi
call dword [sym.imp.GDI32.dll_GetMetaFileBitsEx]
push esi
call dword [sym.imp.GDI32.dll_DeleteMetaFile]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
sub eax, ecx
xor esi, esi
mov ecx, eax
mov dword [esp + 0x58], 0x9ac6cdd7
shl ecx, 7
sub ecx, eax
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x20]
sar edx, 0xc
mov eax, edx
mov word [esp + 0x5c], si
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x28]
sub eax, ecx
mov word [esp + 0x62], dx
mov ecx, eax
mov word [esp + 0x60], si
shl ecx, 7
sub ecx, eax
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
mov word [esp + 0x5e], si
sar edx, 0xc
mov ecx, edx
mov word [esp + 0x66], 0x9ec
shr ecx, 0x1f
add edx, ecx
xor cx, cx
mov word [esp + 0x64], dx
mov dword [esp + 0x68], esi
mov word [esp + 0x6c], cx
lea eax, [esp + 0x58]
xor cx, word [eax]
add eax, 2
lea edx, [esp + 0x6c]
cmp eax, edx
mov word [esp + 0x6c], cx
jb 0x44e59b
mov eax, dword [esp + 0x22c]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
lea ecx, [esp + 0x40]
push 0
push ecx
lea edx, [esp + 0x60]
mov esi, eax
push 0x16
push edx
push esi
mov dword [esp + 0x54], 0
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp dword [esp + 0x40], 0x16
jne 0x44e60a
lea eax, [esp + 0x40]
push 0
push eax
push edi
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp dword [esp + 0x40], edi
je 0x44e617
push str.Unable_to_Export_in_the_WMF_format_specified._Probably_Hard_disk_full.
call fcn.00454a60
add esp, 4
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push 0
call dword [sym.imp.KERNEL32.dll_GlobalFree]
jmp 0x44e63d
call dword [sym.imp.GDI32.dll_CloseEnhMetaFile]
push eax
call dword [sym.imp.GDI32.dll_DeleteEnhMetaFile]
mov edx, dword [ebp + 0x10]
push 0xffffffffffffffff
push edx
call dword [sym.imp.GDI32.dll_RestoreDC]
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x44e80c
mov eax, dword [esp + 0x44]
mov ecx, dword [ebp + 0x10]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x18]
lea esi, [ecx + eax]
cmp esi, ebx
mov dword [esp + 0x80], esi
jl 0x44e682
mov eax, ebx
sub eax, ecx
mov edx, dword [esp + 0x38]
push 0
push eax
mov eax, dword [ebp + 0x10]
push edx
push eax
call fcn.0041b1d0
mov edi, eax
add esp, 0x10
test edi, edi
je 0x44e7df
mov ebx, dword [esp + 0x228]
push edi
test ebx, ebx
jne 0x44e7a2
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, eax
push esi
call fcn.0041b120
mov ebx, eax
add esp, 4
shl ebx, 2
cmp word [esi + 0xe], 8
jbe 0x44e729
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
lea ecx, [esp + 0x98]
push edi
push ecx
call sub.LTKRN90N.dll_Ordinal_104
push 0
push 0
push 0
push 0
push 2
lea edx, [esp + 0xac]
push 8
lea eax, [esp + 0xb0]
push edx
push eax
call sub.LTKRN90N.dll_Ordinal_108_1
lea ecx, [esp + 0x98]
push ecx
call sub.LTKRN90N.dll_Ordinal_106
mov edi, eax
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, eax
push esi
call fcn.0041b120
mov ebx, eax
add esp, 4
shl ebx, 2
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x44e756
mov eax, dword [esp + 0x234]
test eax, eax
je 0x44e7c6
mov edx, dword [esp + 0x22c]
mov eax, dword [esp + 0x18]
push edx
push eax
push esi
call fcn.00437a78
add esp, 0xc
mov eax, dword [esp + 0x234]
test eax, eax
je 0x44e7c6
mov eax, dword [esi + 8]
dec eax
mov dword [esp + 0x14], eax
js 0x44e7c6
mov eax, dword [esi + 4]
xor ecx, ecx
mov cx, word [esi + 0xe]
imul ecx, eax
add ecx, 0x1f
shr ecx, 5
imul ecx, dword [esp + 0x14]
lea edx, [ebx + ecx*4]
mov ecx, dword [esi]
add edx, esi
add edx, ecx
push edx
push eax
call fcn.004379ad
mov eax, dword [esp + 0x1c]
add esp, 8
dec eax
mov dword [esp + 0x14], eax
jns 0x44e76b
jmp 0x44e7c6
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ebx, dword [ebx]
push 0
push edi
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GlobalSize]
push eax
mov eax, dword [esp + 0x230]
push esi
push eax
call dword [ebx + 0x10]
mov dword [esp + 0x48], eax
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push edi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x80]
cmp esi, ebx
mov dword [esp + 0x14], esi
jl 0x44e39b
jmp 0x44e7f1
cmp esi, edi
jne 0x44e80c
mov eax, dword [esp + 0x228]
test eax, eax
jne 0x44e80c
mov eax, dword [esp + 0x234]
test eax, eax
je 0x44e80c
call fcn.004379f4
mov eax, dword [esp + 0x10]
mov cx, word [esp + 0x84]
mov dx, word [esp + 0x70]
xor esi, esi
cmp eax, esi
mov word [ebp + 0x296], cx
mov word [ebp + 0xe], si
mov word [ebp + 0xc], dx
jne 0x44e83c
mov eax, dword [ebp + 0x10]
push eax
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x54]
mov dword [ebp + 0x10], eax
add ebp, 0x260
push ebp
push eax
call fcn.00454980
mov eax, dword [esp + 0x40]
add esp, 8
cmp eax, esi
je 0x44e862
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x3c]
and eax, 0xffff
push eax
call fcn.004ceb90
mov eax, dword [esp + 0x50]
add esp, 4
cmp eax, esi
mov word [0x655ab8], si
je 0x44e888
call fcn.004ceb00
mov eax, dword [esp + 0x48]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x210
ret