Function at 0x407fe0
Capabilities:
Get file size
Persist via path registry key
Query environment variable
Read file on windows
Set registry value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x280
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0xf0], eax
mov dword [ebp - 0xf4], ecx
call dbg.__main
mov dword [ebp - 0x20], 0
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0xec], 0xac32da57
mov eax, dword [ebp - 0xec]
mov ecx, eax
sub ecx, 0x82a2704a
mov dword [ebp - 0xf8], eax
mov dword [ebp - 0xfc], ecx
je 0x408c91
jmp 0x40803f
mov eax, dword [ebp - 0xf8]
sub eax, 0x82d67e8a
mov dword [ebp - 0x100], eax
je 0x409974
jmp 0x40805b
mov eax, dword [ebp - 0xf8]
sub eax, 0x8b3a7126
mov dword [ebp - 0x104], eax
je 0x409402
jmp 0x408077
mov eax, dword [ebp - 0xf8]
sub eax, 0x91ec2beb
mov dword [ebp - 0x108], eax
je 0x409906
jmp 0x408093
mov eax, dword [ebp - 0xf8]
sub eax, 0x94c55313
mov dword [ebp - 0x10c], eax
je 0x409316
jmp 0x4080af
mov eax, dword [ebp - 0xf8]
sub eax, 0x95d4189f
mov dword [ebp - 0x110], eax
je 0x40986b
jmp 0x4080cb
mov eax, dword [ebp - 0xf8]
sub eax, 0x96265ed7
mov dword [ebp - 0x114], eax
je 0x409798
jmp 0x4080e7
mov eax, dword [ebp - 0xf8]
sub eax, 0x9f5b7d31
mov dword [ebp - 0x118], eax
je 0x408a8b
jmp 0x408103
mov eax, dword [ebp - 0xf8]
sub eax, 0xa6db7757
mov dword [ebp - 0x11c], eax
je 0x408817
jmp 0x40811f
mov eax, dword [ebp - 0xf8]
sub eax, 0xa7353ed4
mov dword [ebp - 0x120], eax
je 0x4098a4
jmp 0x40813b
mov eax, dword [ebp - 0xf8]
sub eax, 0xa931dafa
mov dword [ebp - 0x124], eax
je 0x408a22
jmp 0x408157
mov eax, dword [ebp - 0xf8]
sub eax, 0xaaf18be6
mov dword [ebp - 0x128], eax
je 0x408b75
jmp 0x408173
mov eax, dword [ebp - 0xf8]
sub eax, 0xac32da57
mov dword [ebp - 0x12c], eax
je 0x40877c
jmp 0x40818f
mov eax, dword [ebp - 0xf8]
sub eax, 0xae5e116b
mov dword [ebp - 0x130], eax
je 0x409105
jmp 0x4081ab
mov eax, dword [ebp - 0xf8]
sub eax, 0xaf1c03e1
mov dword [ebp - 0x134], eax
je 0x4095f3
jmp 0x4081c7
mov eax, dword [ebp - 0xf8]
sub eax, 0xb04063e8
mov dword [ebp - 0x138], eax
je 0x409807
jmp 0x4081e3
mov eax, dword [ebp - 0xf8]
sub eax, 0xb3653905
mov dword [ebp - 0x13c], eax
je 0x408e26
jmp 0x4081ff
mov eax, dword [ebp - 0xf8]
sub eax, 0xb577d76e
mov dword [ebp - 0x140], eax
je 0x40901a
jmp 0x40821b
mov eax, dword [ebp - 0xf8]
sub eax, 0xb8828c07
mov dword [ebp - 0x144], eax
je 0x409a23
jmp 0x408237
mov eax, dword [ebp - 0xf8]
sub eax, 0xbb2fdd0a
mov dword [ebp - 0x148], eax
je 0x409946
jmp 0x408253
mov eax, dword [ebp - 0xf8]
sub eax, 0xbc2df003
mov dword [ebp - 0x14c], eax
je 0x408df5
jmp 0x40826f
mov eax, dword [ebp - 0xf8]
sub eax, 0xbd6b0a60
mov dword [ebp - 0x150], eax
je 0x4094ea
jmp 0x40828b
mov eax, dword [ebp - 0xf8]
sub eax, 0xbf3a9d92
mov dword [ebp - 0x154], eax
je 0x4099f9
jmp 0x4082a7
mov eax, dword [ebp - 0xf8]
sub eax, 0xc029fc4a
mov dword [ebp - 0x158], eax
je 0x40960f
jmp 0x4082c3
mov eax, dword [ebp - 0xf8]
sub eax, 0xc0a39d60
mov dword [ebp - 0x15c], eax
je 0x40985d
jmp 0x4082df
mov eax, dword [ebp - 0xf8]
sub eax, 0xc0d2fab8
mov dword [ebp - 0x160], eax
je 0x40953a
jmp 0x4082fb
mov eax, dword [ebp - 0xf8]
sub eax, 0xc50aebde
mov dword [ebp - 0x164], eax
je 0x4087c7
jmp 0x408317
mov eax, dword [ebp - 0xf8]
sub eax, 0xc5434e94
mov dword [ebp - 0x168], eax
je 0x409a08
jmp 0x408333
mov eax, dword [ebp - 0xf8]
sub eax, 0xca3bdc21
mov dword [ebp - 0x16c], eax
je 0x40941f
jmp 0x40834f
mov eax, dword [ebp - 0xf8]
sub eax, 0xcb5535c9
mov dword [ebp - 0x170], eax
je 0x408fd6
jmp 0x40836b
mov eax, dword [ebp - 0xf8]
sub eax, 0xcc2fefc2
mov dword [ebp - 0x174], eax
je 0x409a79
jmp 0x408387
mov eax, dword [ebp - 0xf8]
sub eax, 0xcf9e3394
mov dword [ebp - 0x178], eax
je 0x409a4e
jmp 0x4083a3
mov eax, dword [ebp - 0xf8]
sub eax, 0xdcf263f3
mov dword [ebp - 0x17c], eax
je 0x409696
jmp 0x4083bf
mov eax, dword [ebp - 0xf8]
sub eax, 0xe24203f6
mov dword [ebp - 0x180], eax
je 0x408d23
jmp 0x4083db
mov eax, dword [ebp - 0xf8]
sub eax, 0xe24e21d2
mov dword [ebp - 0x184], eax
je 0x409664
jmp 0x4083f7
mov eax, dword [ebp - 0xf8]
sub eax, 0xe294dabe
mov dword [ebp - 0x188], eax
je 0x40892b
jmp 0x408413
mov eax, dword [ebp - 0xf8]
sub eax, 0xe8cdf916
mov dword [ebp - 0x18c], eax
je 0x409247
jmp 0x40842f
mov eax, dword [ebp - 0xf8]
sub eax, 0xf70b2825
mov dword [ebp - 0x190], eax
je 0x409187
jmp 0x40844b
mov eax, dword [ebp - 0xf8]
sub eax, 0x3cec5c8
mov dword [ebp - 0x194], eax
je 0x409262
jmp 0x408467
mov eax, dword [ebp - 0xf8]
sub eax, 0x13a62593
mov dword [ebp - 0x198], eax
je 0x408a4d
jmp 0x408483
mov eax, dword [ebp - 0xf8]
sub eax, 0x18db48a8
mov dword [ebp - 0x19c], eax
je 0x4088b5
jmp 0x40849f
mov eax, dword [ebp - 0xf8]
sub eax, 0x1e7c5a5c
mov dword [ebp - 0x1a0], eax
je 0x408898
jmp 0x4084bb
mov eax, dword [ebp - 0xf8]
sub eax, 0x23abbb68
mov dword [ebp - 0x1a4], eax
je 0x408dc7
jmp 0x4084d7
mov eax, dword [ebp - 0xf8]
sub eax, 0x2ae88edc
mov dword [ebp - 0x1a8], eax
je 0x408c59
jmp 0x4084f3
mov eax, dword [ebp - 0xf8]
sub eax, 0x2e950c25
mov dword [ebp - 0x1ac], eax
je 0x409490
jmp 0x40850f
mov eax, dword [ebp - 0xf8]
sub eax, 0x3187d518
mov dword [ebp - 0x1b0], eax
je 0x4090e8
jmp 0x40852b
mov eax, dword [ebp - 0xf8]
sub eax, 0x334d6d26
mov dword [ebp - 0x1b4], eax
je 0x408db8
jmp 0x408547
mov eax, dword [ebp - 0xf8]
sub eax, 0x342e1dcb
mov dword [ebp - 0x1b8], eax
je 0x409307
jmp 0x408563
mov eax, dword [ebp - 0xf8]
sub eax, 0x36116c2b
mov dword [ebp - 0x1bc], eax
je 0x409789
jmp 0x40857f
mov eax, dword [ebp - 0xf8]
sub eax, 0x38e05eae
mov dword [ebp - 0x1c0], eax
je 0x4095d6
jmp 0x40859b
mov eax, dword [ebp - 0xf8]
sub eax, 0x3b5a71e9
mov dword [ebp - 0x1c4], eax
je 0x409a8f
jmp 0x4085b7
mov eax, dword [ebp - 0xf8]
sub eax, 0x3e0919a7
mov dword [ebp - 0x1c8], eax
je 0x40970c
jmp 0x4085d3
mov eax, dword [ebp - 0xf8]
sub eax, 0x3f6a3fd3
mov dword [ebp - 0x1cc], eax
je 0x408ed6
jmp 0x4085ef
mov eax, dword [ebp - 0xf8]
sub eax, 0x40888336
mov dword [ebp - 0x1d0], eax
je 0x408cad
jmp 0x40860b
mov eax, dword [ebp - 0xf8]
sub eax, 0x412526c2
mov dword [ebp - 0x1d4], eax
je 0x40879a
jmp 0x408627
mov eax, dword [ebp - 0xf8]
sub eax, 0x4206cc4c
mov dword [ebp - 0x1d8], eax
je 0x408b84
jmp 0x408643
mov eax, dword [ebp - 0xf8]
sub eax, 0x4afce98f
mov dword [ebp - 0x1dc], eax
je 0x40945f
jmp 0x40865f
mov eax, dword [ebp - 0xf8]
sub eax, 0x50a154b1
mov dword [ebp - 0x1e0], eax
je 0x409063
jmp 0x40867b
mov eax, dword [ebp - 0xf8]
sub eax, 0x524f5074
mov dword [ebp - 0x1e4], eax
je 0x408ff3
jmp 0x408697
mov eax, dword [ebp - 0xf8]
sub eax, 0x54721c15
mov dword [ebp - 0x1e8], eax
je 0x4092b2
jmp 0x4086b3
mov eax, dword [ebp - 0xf8]
sub eax, 0x5af1fb5a
mov dword [ebp - 0x1ec], eax
je 0x408afa
jmp 0x4086cf
mov eax, dword [ebp - 0xf8]
sub eax, 0x648b0d4c
mov dword [ebp - 0x1f0], eax
je 0x408a05
jmp 0x4086eb
mov eax, dword [ebp - 0xf8]
sub eax, 0x6717fabe
mov dword [ebp - 0x1f4], eax
je 0x40938c
jmp 0x408707
mov eax, dword [ebp - 0xf8]
sub eax, 0x6ffcfe35
mov dword [ebp - 0x1f8], eax
je 0x408be8
jmp 0x408723
mov eax, dword [ebp - 0xf8]
sub eax, 0x72307833
mov dword [ebp - 0x1fc], eax
je 0x408e86
mov eax, dword [ebp - 0x1c]
cmp eax, 2
mov eax, 0x412526c2
mov ecx, 0xc50aebde
cmovl ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
lea ecx, str.usage:_emf_rect_poly_text__emf_file_name___printer_name___data_type__n
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.dbg_log_char_const__..._
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
add edx, 0x24cfb4a4
sub edx, 1
sub edx, 0x24cfb4a4
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
and al, bh
xor bl, bh
or al, bl
test al, 1
mov ecx, 0xa6db7757
mov edx, 0x95d4189f
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
lea eax, str.raw_print_get_called._n
mov dword [esp], eax
call sym.dbg_log_char_const__..._
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, esp
mov dword [ecx], eax
mov dword [ecx + 4], 0x40f350
call sub.msvcrt.dll_strcmp
cmp eax, 0
setne dl
and dl, 1
mov byte [ebp - 0x16], dl
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov esi, eax
add esi, 0xe4ff0ee9
sub esi, 1
sub esi, 0xe4ff0ee9
imul eax, esi
and eax, 1
cmp eax, 0
sete dl
cmp ecx, 0xa
setl dh
mov bl, dl
and bl, dh
xor dl, dh
or bl, dl
test bl, 1
mov eax, 0x1e7c5a5c
mov ecx, 0x95d4189f
cmovne ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
mov al, byte [ebp - 0x16]
test al, 1
mov ecx, 0xbc2df003
mov edx, 0x18db48a8
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
sub edx, 0x2bcb30df
sub edx, 1
add edx, 0x2bcb30df
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 1
mov ch, al
and ch, 0xff
and bl, cl
mov dl, ah
and dl, 0xff
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 1
and al, cl
or ch, al
test ch, 1
mov esi, 0xe294dabe
mov edi, 0xa7353ed4
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
xor eax, eax
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x24]
mov dword [esp], ecx
mov dword [esp + 4], 1
mov dword [esp + 8], 1
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x18], 0
mov dword [ebp - 0x208], eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
sub esp, 0x1c
mov dword [ebp - 0x28], eax
mov eax, 0xffffffff
cmp dword [ebp - 0x28], eax
sete dl
and dl, 1
mov byte [ebp - 0x15], dl
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov esi, eax
sub esi, 0x891efc27
sub esi, 1
add esi, 0x891efc27
imul eax, esi
and eax, 1
cmp eax, 0
sete dl
cmp ecx, 0xa
setl dh
mov bl, dl
xor bl, 0xff
mov bh, dh
xor bh, 0xff
mov al, 1
xor al, 1
mov ah, bl
and ah, 0xff
and dl, al
mov cl, bh
and cl, 0xff
and dh, al
or ah, dl
or cl, dh
xor ah, cl
or bl, bh
xor bl, 0xff
or al, 1
and bl, al
or ah, bl
test ah, 1
mov esi, 0x648b0d4c
mov edi, 0xa7353ed4
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov al, byte [ebp - 0x15]
test al, 1
mov ecx, 0xa931dafa
mov edx, 0x13a62593
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
mov eax, dword [ebp - 0x24]
lea ecx, str.SpoolerData::LoadSpoolerFile___cannot_open__ws
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.dbg_log_char_const__..._
mov dword [ebp - 0x20], 0
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
xor eax, eax
mov ecx, dword [ebp - 0x28]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [ebp - 0x20c], eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
sub esp, 8
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0xffffffff
mov eax, 0x9f5b7d31
mov ecx, 0x4206cc4c
cmove ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
xor eax, eax
mov ecx, dword [0x410400]
mov edx, dword [0x4103f4]
sub eax, 1
mov esi, ecx
add esi, eax
imul ecx, esi
and ecx, 1
cmp ecx, 0
sete bl
cmp edx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 0
mov ch, al
and ch, 0
and bl, cl
mov dl, ah
and dl, 0
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 0
and al, cl
or ch, al
test ch, 1
mov esi, 0x5af1fb5a
mov edi, 0x91ec2beb
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov eax, dword [ebp - 0x24]
lea ecx, str.SpoolerData::LoadSpoolerFile___cannot_get_size_of__ws
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.dbg_log_char_const__..._
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
xor ecx, ecx
mov dword [ebp - 0x20], 0
mov edx, dword [0x410400]
mov esi, dword [0x4103f4]
sub ecx, 1
mov edi, edx
add edi, ecx
imul edx, edi
and edx, 1
cmp edx, 0
sete bl
cmp esi, 0xa
setl bh
mov cl, bl
and cl, bh
xor bl, bh
or cl, bl
test cl, 1
mov edx, 0xaaf18be6
mov esi, 0x91ec2beb
cmovne esi, edx
mov dword [ebp - 0xec], esi
mov dword [ebp - 0x210], eax
jmp 0x409a99
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sym._malloc
xor ecx, ecx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x2c]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], esi
lea eax, [ebp - 0x34]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov dword [ebp - 0x214], ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
sub esp, 0x14
cmp eax, 0
mov eax, 0x732fcd93
mov ecx, 0x6ffcfe35
cmovne ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
mov eax, dword [ebp - 0x24]
lea ecx, str.SpoolerData::LoadSpoolerFile___cannot_read__ws
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.dbg_log_char_const__..._
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov dword [ebp - 0x20], 0
mov dword [ebp - 0xec], 0x96265ed7
mov dword [ebp - 0x218], eax
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov esi, dword [ebp + 0xc]
mov esi, dword [esi + 0xc]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], esi
call sym.RawDataToPrinter_char__unsigned_char__unsigned_long__char_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
cmp dword [ebp + 8], 3
mov eax, 0x40888336
mov ecx, 0x23abbb68
cmovg ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
add edx, 0x8bc65683
sub edx, 1
sub edx, 0x8bc65683
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 0
mov ch, al
and ch, 0
and bl, cl
mov dl, ah
and dl, 0
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 0
and al, cl
or ch, al
test ch, 1
mov esi, 0xe24203f6
mov edi, 0xbb2fdd0a
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call sym.EmfToPrinter_char__unsigned_char__unsigned_long_
mov dword [ebp - 0x20], eax
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
sub edx, 0x500bc377
sub edx, 1
add edx, 0x500bc377
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 1
mov ch, al
and ch, 0xff
and bl, cl
mov dl, ah
and dl, 0xff
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 1
and al, cl
or ch, al
test ch, 1
mov esi, 0x334d6d26
mov edi, 0xbb2fdd0a
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
lea edx, str.Founder_CEBX_Converter
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call sym.EmfToPrinter_char__unsigned_char__unsigned_long_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, esp
mov dword [ecx], eax
mov dword [ecx + 4], 0x40f405
call sub.msvcrt.dll_strcmp
cmp eax, 0
mov eax, 0x7fb0863e
mov ecx, 0xb3653905
cmovne ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
lea eax, [ebp - 0x88]
mov dword [esp], eax
lea eax, str.c:windows_system32_spoolprtprocsw32x86_c:windows_system32_spooldriverw32x863
mov dword [esp + 4], eax
mov dword [esp + 8], 0x54
call sym._memcpy
mov eax, 0x80000001
mov dword [esp], eax
lea eax, str.Environment
mov dword [esp + 4], eax
lea eax, [ebp - 0x8c]
mov dword [esp + 8], eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
sub esp, 0xc
cmp eax, 0
mov eax, 0x524f5074
mov ecx, 0x72307833
cmovne ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
xor eax, eax
lea ecx, [ebp - 0x88]
mov edx, dword [ebp - 0x8c]
mov esi, esp
mov dword [esi], ecx
mov dword [ebp - 0x220], eax
mov dword [ebp - 0x224], ecx
mov dword [ebp - 0x228], edx
call sym._strlen
mov ecx, dword [ebp - 0x220]
sub ecx, eax
mov eax, dword [ebp - 0x220]
sub eax, 1
add ecx, eax
mov eax, dword [ebp - 0x220]
sub eax, ecx
mov ecx, dword [ebp - 0x228]
mov dword [esp], ecx
lea ecx, str.path
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 1
mov ecx, dword [ebp - 0x224]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
sub esp, 0x18
cmp eax, 0
setne bl
and bl, 1
mov byte [ebp - 0x14], bl
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
sub edx, 0x38df461
sub edx, 1
add edx, 0x38df461
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 1
mov ch, al
and ch, 0xff
and bl, cl
mov dl, ah
and dl, 0xff
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 1
and al, cl
or ch, al
test ch, 1
mov esi, 0xcb5535c9
mov edi, 0x82d67e8a
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov al, byte [ebp - 0x14]
test al, 1
mov ecx, 0x524f5074
mov edx, 0xb577d76e
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
call dword [sym.imp.KERNEL32.dll_GetLastError]
lea ecx, str.Write_HKEY_CURRENT_USERenvironment_FAILED__lasterr_d_n
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.dbg_log_char_const__..._
mov dword [ebp - 0xec], 0xb577d76e
jmp 0x409a99
xor eax, eax
mov ecx, dword [0x410400]
mov edx, dword [0x4103f4]
sub eax, 1
mov esi, ecx
add esi, eax
imul ecx, esi
and ecx, 1
cmp ecx, 0
sete bl
cmp edx, 0xa
setl bh
mov al, bl
and al, bh
xor bl, bh
or al, bl
test al, 1
mov ecx, 0x50a154b1
mov edx, 0xbf3a9d92
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
cmp dword [ebp + 8], 3
setg al
and al, 1
mov byte [ebp - 0x13], al
mov ecx, dword [0x410400]
mov edx, dword [0x4103f4]
mov esi, ecx
add esi, 0xc3b57e0c
sub esi, 1
sub esi, 0xc3b57e0c
imul ecx, esi
and ecx, 1
cmp ecx, 0
sete al
cmp edx, 0xa
setl ah
mov bl, al
xor bl, 0xff
mov bh, ah
xor bh, 0xff
mov cl, 1
xor cl, 1
mov ch, bl
and ch, 0xff
and al, cl
mov dl, bh
and dl, 0xff
and ah, cl
or ch, al
or dl, ah
xor ch, dl
or bl, bh
xor bl, 0xff
or cl, 1
and bl, cl
or ch, bl
test ch, 1
mov esi, 0x3187d518
mov edi, 0xbf3a9d92
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov al, byte [ebp - 0x13]
test al, 1
mov ecx, 0xae5e116b
mov edx, 0xf70b2825
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0xc]
lea ecx, str.devices
mov dword [esp], ecx
mov dword [esp + 4], eax
lea eax, str.winerp.drv_USB
mov dword [esp + 8], eax
call dword [sym.imp.KERNEL32.dll_WriteProfileStringA]
sub esp, 0xc
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0xc]
lea edx, str.PrinterPorts
mov dword [esp], edx
mov dword [esp + 4], ecx
lea ecx, str.winerp.drv_USB_15_45
mov dword [esp + 8], ecx
mov dword [ebp - 0x22c], eax
call dword [sym.imp.KERNEL32.dll_WriteProfileStringA]
sub esp, 0xc
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0xc]
mov edx, dword [ebp + 0xc]
mov edx, dword [edx + 8]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [ebp - 0x230], eax
call sym.DrawImageToPrinter_char__char_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
lea eax, str.MODEL
mov dword [esp], eax
call sub.msvcrt.dll_getenv
lea ecx, str.devices
mov dword [esp], ecx
mov dword [esp + 4], eax
lea eax, str.winerp.drv_USB
mov dword [esp + 8], eax
call dword [sym.imp.KERNEL32.dll_WriteProfileStringA]
sub esp, 0xc
lea ecx, str.MODEL
mov dword [esp], ecx
mov dword [ebp - 0x234], eax
call sub.msvcrt.dll_getenv
lea ecx, str.PrinterPorts
mov dword [esp], ecx
mov dword [esp + 4], eax
lea eax, str.winerp.drv_USB_15_45
mov dword [esp + 8], eax
call dword [sym.imp.KERNEL32.dll_WriteProfileStringA]
sub esp, 0xc
lea ecx, str.MODEL
mov dword [esp], ecx
mov dword [ebp - 0x238], eax
call sub.msvcrt.dll_getenv
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.DrawImageToPrinter_char__char_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 8]
mov dword [ebp - 0x90], eax
mov dword [ebp - 0xec], 0x94c55313
jmp 0x409a99
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
add edx, 0xaabdff5a
sub edx, 1
sub edx, 0xaabdff5a
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
and al, bh
xor bl, bh
or al, bl
test al, 1
mov ecx, 0x54721c15
mov edx, 0xc5434e94
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
xor eax, eax
lea ecx, str.Founder_CEBX_Converter
mov dword [ebp - 0x90], ecx
mov ecx, dword [0x410400]
mov edx, dword [0x4103f4]
sub eax, 1
mov esi, ecx
add esi, eax
imul ecx, esi
and ecx, 1
cmp ecx, 0
sete bl
cmp edx, 0xa
setl bh
mov al, bl
and al, bh
xor bl, bh
or al, bl
test al, 1
mov ecx, 0x342e1dcb
mov edx, 0xc5434e94
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
mov dword [ebp - 0xec], 0x94c55313
jmp 0x409a99
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
sub edx, 0x36036ee5
sub edx, 1
add edx, 0x36036ee5
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 1
mov ch, al
and ch, 0xff
and bl, cl
mov dl, ah
and dl, 0xff
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 1
and al, cl
or ch, al
test ch, 1
mov esi, 0x6717fabe
mov edi, 0xb8828c07
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
xor eax, eax
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 4]
mov edx, esp
mov dword [edx], ecx
mov dword [edx + 4], str.rect
mov dword [ebp - 0x23c], eax
call sub.msvcrt.dll_strcmp
cmp eax, 0
setne bl
and bl, 1
mov byte [ebp - 0x12], bl
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, dword [ebp - 0x23c]
sub edx, 1
mov esi, eax
add esi, edx
imul eax, esi
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
and al, bh
xor bl, bh
or al, bl
test al, 1
mov ecx, 0x8b3a7126
mov edx, 0xb8828c07
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
mov al, byte [ebp - 0x12]
test al, 1
mov ecx, 0x4afce98f
mov edx, 0xca3bdc21
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
mov eax, dword [ebp - 0x90]
mov dword [esp], eax
mov dword [esp + 4], 0x64
mov dword [esp + 8], 0x64
mov dword [esp + 0xc], 0x1f4
mov dword [esp + 0x10], 0x1f4
call sym.DrawRectToPrinter_char__int__int__int__int_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, esp
mov dword [ecx], eax
mov dword [ecx + 4], str.poly
call sub.msvcrt.dll_strcmp
cmp eax, 0
mov eax, 0xbd6b0a60
mov ecx, 0x2e950c25
cmovne ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
lea eax, [ebp - 0xe8]
lea ecx, [0x40f4f0]
mov edx, eax
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], 0x58
mov dword [ebp - 0x240], eax
call sym._memcpy
mov eax, dword [ebp - 0x90]
mov dword [esp], eax
mov eax, dword [ebp - 0x240]
mov dword [esp + 4], eax
mov dword [esp + 8], 0xb
call sym.DrawPolyToPrinter_char__tagPOINT__int_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
add edx, 0x5bc5ad40
sub edx, 1
sub edx, 0x5bc5ad40
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
and al, bh
xor bl, bh
or al, bl
test al, 1
mov ecx, 0xc0d2fab8
mov edx, 0xcf9e3394
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
xor eax, eax
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 4]
mov edx, esp
mov dword [edx], ecx
mov dword [edx + 4], str.text
mov dword [ebp - 0x244], eax
call sub.msvcrt.dll_strcmp
cmp eax, 0
setne bl
and bl, 1
mov byte [ebp - 0x11], bl
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, dword [ebp - 0x244]
sub edx, 1
mov esi, eax
add esi, edx
imul eax, esi
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 0
mov ch, al
and ch, 0
and bl, cl
mov dl, ah
and dl, 0
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 0
and al, cl
or ch, al
test ch, 1
mov esi, 0x38e05eae
mov edi, 0xcf9e3394
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov al, byte [ebp - 0x11]
test al, 1
mov ecx, 0xdcf263f3
mov edx, 0xaf1c03e1
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
cmp dword [ebp + 8], 3
mov eax, 0xc029fc4a
mov ecx, 0xe24e21d2
cmovg ecx, eax
mov dword [ebp - 0xec], ecx
jmp 0x409a99
mov eax, dword [ebp - 0x90]
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0xc]
mov edx, dword [ebp + 0xc]
mov edx, dword [edx + 0xc]
mov esi, esp
mov dword [esi], edx
mov dword [ebp - 0x248], eax
mov dword [ebp - 0x24c], ecx
call sym._strlen
mov ecx, dword [ebp - 0x248]
mov dword [esp], ecx
mov ecx, dword [ebp - 0x24c]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call sym.DrawTextToPrinter_char__char_const__unsigned_long_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [ebp - 0x90]
mov dword [esp], eax
lea eax, str.hello_world
mov dword [esp + 4], eax
mov dword [esp + 8], 0xb
call sym.DrawTextToPrinter_char__char_const__unsigned_long_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
add edx, 0x9c4d1ae2
sub edx, 1
sub edx, 0x9c4d1ae2
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 1
mov ch, al
and ch, 0xff
and bl, cl
mov dl, ah
and dl, 0xff
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 1
and al, cl
or ch, al
test ch, 1
mov esi, 0x3e0919a7
mov edi, 0xcc2fefc2
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov dword [ebp - 0x20], 0
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
add edx, 0xdb820186
sub edx, 1
sub edx, 0xdb820186
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 0
mov ch, al
and ch, 0
and bl, cl
mov dl, ah
and dl, 0
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 0
and al, cl
or ch, al
test ch, 1
mov esi, 0x36116c2b
mov edi, 0xcc2fefc2
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov dword [ebp - 0xec], 0x96265ed7
jmp 0x409a99
xor eax, eax
mov ecx, dword [0x410400]
mov edx, dword [0x4103f4]
sub eax, 1
mov esi, ecx
add esi, eax
imul ecx, esi
and ecx, 1
cmp ecx, 0
sete bl
cmp edx, 0xa
setl bh
mov al, bl
xor al, 0xff
mov ah, bh
xor ah, 0xff
mov cl, 1
xor cl, 0
mov ch, al
and ch, 0
and bl, cl
mov dl, ah
and dl, 0
and bh, cl
or ch, bl
or dl, bh
xor ch, dl
or al, ah
xor al, 0xff
or cl, 0
and al, cl
or ch, al
test ch, 1
mov esi, 0xb04063e8
mov edi, 0x3b5a71e9
cmovne edi, esi
mov dword [ebp - 0xec], edi
jmp 0x409a99
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
mov eax, dword [0x410400]
mov ecx, dword [0x4103f4]
mov edx, eax
sub edx, 0x21fe12f0
sub edx, 1
add edx, 0x21fe12f0
imul eax, edx
and eax, 1
cmp eax, 0
sete bl
cmp ecx, 0xa
setl bh
mov al, bl
and al, bh
xor bl, bh
or al, bl
test al, 1
mov ecx, 0xc0a39d60
mov edx, 0x3b5a71e9
cmovne edx, ecx
mov dword [ebp - 0xec], edx
jmp 0x409a99
mov eax, dword [ebp - 0x10]
add esp, 0x280
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, str.raw_print_get_called._n
mov dword [esp], eax
call sym.dbg_log_char_const__..._
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, esp
mov dword [ecx], eax
mov dword [ecx + 4], 0x40f350
call sub.msvcrt.dll_strcmp
mov dword [ebp - 0xec], 0xa6db7757
mov dword [ebp - 0x250], eax
jmp 0x409a99
xor eax, eax
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x24]
mov dword [esp], ecx
mov dword [esp + 4], 1
mov dword [esp + 8], 1
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x18], 0
mov dword [ebp - 0x254], eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
sub esp, 0x1c
mov dword [ebp - 0x28], eax
mov dword [ebp - 0xec], 0xe294dabe
jmp 0x409a99
mov eax, dword [ebp - 0x24]
lea ecx, str.SpoolerData::LoadSpoolerFile___cannot_get_size_of__ws
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.dbg_log_char_const__..._
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov dword [ebp - 0x20], 0
mov dword [ebp - 0xec], 0x5af1fb5a
mov dword [ebp - 0x258], eax
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call sym.EmfToPrinter_char__unsigned_char__unsigned_long_
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xec], 0xe24203f6
jmp 0x409a99
xor eax, eax
lea ecx, [ebp - 0x88]
mov edx, dword [ebp - 0x8c]
mov esi, esp
mov dword [esi], ecx
mov dword [ebp - 0x25c], eax
mov dword [ebp - 0x260], ecx
mov dword [ebp - 0x264], edx
call sym._strlen
add eax, 0xaffe8a4
add eax, 1
sub eax, 0xaffe8a4
mov ecx, dword [ebp - 0x264]
mov dword [esp], ecx
lea ecx, str.path
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 1
mov ecx, dword [ebp - 0x260]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
sub esp, 0x18
mov dword [ebp - 0xec], 0x3f6a3fd3
mov dword [ebp - 0x268], eax
jmp 0x409a99
mov dword [ebp - 0xec], 0x50a154b1
jmp 0x409a99
lea eax, str.Founder_CEBX_Converter
mov dword [ebp - 0x90], eax
mov dword [ebp - 0xec], 0x54721c15
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, esp
mov dword [ecx], eax
mov dword [ecx + 4], str.rect
call sub.msvcrt.dll_strcmp
mov dword [ebp - 0xec], 0x6717fabe
mov dword [ebp - 0x26c], eax
jmp 0x409a99
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, esp
mov dword [ecx], eax
mov dword [ecx + 4], str.text
call sub.msvcrt.dll_strcmp
mov dword [ebp - 0xec], 0xc0d2fab8
mov dword [ebp - 0x270], eax
jmp 0x409a99
mov dword [ebp - 0x20], 0
mov dword [ebp - 0xec], 0x3e0919a7
jmp 0x409a99
mov dword [ebp - 0xec], 0xb04063e8
jmp 0x40801a