Function at 0x437d52
Capabilities:
Check for time delay via gettickcount
Check os version
Create thread
Get common file path
Get disk information
Get disk size
Get hostname
Log keystrokes via polling
Query environment variable
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x38c]
sub esp, 0x40c
mov eax, dword [0x47e5d0]
xor eax, ebp
mov dword [ebp + 0x388], eax
mov eax, dword [ebp + 0x398]
push ebx
push esi
mov esi, dword [ebp + 0x394]
push edi
mov dword [ebp + 8], eax
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x38], ebx
lea edi, [ebp - 0x34]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, 0x103
push edi
lea eax, [ebp + 0x285]
push ebx
push eax
mov dword [ebp + 0xc], esi
mov byte [ebp + 0x284], bl
call fcn.00452e00
push edi
lea eax, [ebp + 0x141]
push ebx
push eax
mov byte [ebp + 0x140], bl
call fcn.00452e00
push 0x3f
lea eax, [ebp + 0x245]
push ebx
push eax
mov byte [ebp + 0x244], bl
call fcn.00452e00
push 7
xor eax, eax
pop ecx
lea edi, [ebp - 0x54]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x80], ebx
lea edi, [ebp - 0x7c]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
push 0x90
stosd dword es:[edi], eax
lea eax, [ebp + 0xb0]
push ebx
push eax
mov dword [ebp], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x64], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp + 0xac], ebx
call fcn.00452e00
xor eax, eax
mov dword [ebp - 0x60], ebx
lea edi, [ebp - 0x5c]
stosd dword es:[edi], eax
mov dword [ebp - 0x28], ebx
lea edi, [ebp - 0x24]
stosd dword es:[edi], eax
mov dword [ebp - 0x6c], ebx
lea edi, [ebp - 0x68]
stosd dword es:[edi], eax
mov dword [ebp - 0x1c], ebx
lea edi, [ebp - 0x18]
stosd dword es:[edi], eax
mov edi, dword [ebp + 8]
imul edi, edi, 0xf54
lea esi, [esi*4 + 0x481990]
mov eax, dword [esi]
add eax, edi
push str.Record
push eax
call fcn.004010ff
add esp, 0x38
test eax, eax
mov eax, dword [esi]
je 0x438016
mov eax, dword [edi + eax + 0x50]
cmp byte [eax], bl
jne 0x437e6c
xor eax, eax
inc eax
jmp 0x439bf4
mov eax, dword [0x483e6c]
cmp eax, ebx
je 0x437e82
push eax
call fcn.00452756
pop ecx
mov dword [0x483e6c], ebx
mov eax, dword [esi]
push dword [edi + eax + 0x50]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cdq
push 0x19
pop ecx
idiv ecx
mov ecx, 0x1000
imul eax, eax, 0x28
add eax, ecx
mov dword [ebp], eax
cmp eax, ecx
ja 0x437ea7
mov eax, ecx
push 1
push eax
call fcn.00452b24
pop ecx
pop ecx
mov dword [0x483e6c], eax
cmp eax, ebx
jne 0x437ec1
xor eax, eax
jmp 0x439bf4
push dword [ebp]
push eax
mov eax, dword [esi]
push dword [edi + eax + 0x50]
call fcn.00425bfc
cmp eax, 1
jae 0x437f02
mov eax, dword [0x481960]
cmp eax, ebx
je 0x437eea
push str.Invalid_Recording
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [0x483e6c]
cmp eax, ebx
je 0x437eba
push eax
call fcn.00452756
pop ecx
mov dword [0x483e6c], ebx
jmp 0x437eba
push 0x13
mov dword [0x483e70], ebx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Hardware
push eax
mov dword [0x483e78], ebx
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x437f59
push str._____using__Hardware__recording_method_
call fcn.0042604a
pop ecx
push ebx
push 0x19
push 0x8070
push dword [0x4800c0]
call dword [sym.imp.USER32.dll_SetTimer]
neg eax
sbb eax, eax
neg eax
mov dword [0x483e68], eax
jmp 0x437f78
push str._____using__Software__recording_method_
call fcn.0042604a
pop ecx
push ebx
push 0xa
push 0x8068
push dword [0x4800c0]
call dword [sym.imp.USER32.dll_SetTimer]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x10], eax
cmp dword [0x483e68], ebx
jne 0x437fe5
call edi
sub eax, dword [ebp - 0x10]
cmp eax, 0x1f4
jae 0x437fa9
push 1
call esi
cmp dword [0x483e68], ebx
je 0x437f91
cmp dword [0x483e68], ebx
jne 0x437fe5
mov eax, dword [0x483e6c]
cmp eax, ebx
je 0x437fc7
push eax
call fcn.00452756
pop ecx
mov dword [0x483e6c], ebx
mov eax, dword [0x481960]
cmp eax, ebx
je 0x437eba
push str.Unable_to_play_recording
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x437eba
push ebx
call esi
push 0xc8
call esi
cmp dword [0x483e68], ebx
jne 0x437fe5
mov eax, dword [0x483e6c]
cmp eax, ebx
je 0x437e64
push eax
call fcn.00452756
pop ecx
mov dword [0x483e6c], ebx
jmp 0x437e64
add eax, edi
push 0x46c06c
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x4383e5
lea eax, [edi + eax + 0x58]
push str.Architecture
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x43805a
push 0x102
lea eax, [ebp + 0x284]
push eax
push str.PROCESSOR_ARCHITECTURE
jmp 0x4381b5
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Description
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4380d4
lea eax, [ebp + 0x284]
push eax
push str.ProcessorNameString
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.004246b4
add esp, 0x10
push 0x102
lea eax, [ebp + 0x140]
push eax
push str.PROCESSOR_IDENTIFIER
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
cmp byte [ebp + 0x284], bl
je 0x4380c2
push 0x464930
lea eax, [ebp + 0x284]
push eax
call esi
lea eax, [ebp + 0x140]
push eax
lea eax, [ebp + 0x284]
jmp 0x438358
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Extended_Model
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4380f9
lea eax, [ebp + 0x284]
push eax
push 5
jmp 0x43837d
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Extended_Family
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x43811e
lea eax, [ebp + 0x284]
push eax
push 6
jmp 0x43837d
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Stepping
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438143
lea eax, [ebp + 0x284]
push eax
push 2
jmp 0x43837d
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Model
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438168
lea eax, [ebp + 0x284]
push eax
push 3
jmp 0x43837d
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Family
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x43818d
lea eax, [ebp + 0x284]
push eax
push 4
jmp 0x43837d
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Revision
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4381c0
push 0x102
lea eax, [ebp + 0x284]
push eax
push str.PROCESSOR_REVISION
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
jmp 0x4383c0
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Number_of_Processors
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4381f7
call fcn.004247cb
push eax
push 0x464bf8
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x4383c0
mov eax, dword [esi]
mov ebx, str.Speed
lea eax, [edi + eax + 0x58]
push ebx
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4382b8
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Test
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4382b8
call fcn.00448b9d
fld qword [0x466550]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x438259
fstp st(0)
call fcn.00448c67
mov dword [ebp - 8], eax
fild dword [ebp - 8]
test eax, eax
jns 0x438259
fadd qword [0x466a30]
fdiv qword [0x4663b8]
push 0xf
push 7
push ecx
push ecx
fstp qword [esp]
call fcn.0041a3b9
pop ecx
lea eax, [ebp + 0x284]
fstp qword [esp]
push eax
call fcn.0041c447
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x10
lea eax, [ebp + 0x284]
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
jmp 0x4382a8
push 0x466c54
push eax
call esi
lea eax, [ebp + 0x284]
push eax
call edi
cmp eax, 4
lea eax, [ebp + 0x284]
jl 0x438297
jmp 0x438353
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push ebx
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x43835d
push str.MHz
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.004146d8
add esp, 0xc
push 0xf
mov dword [ebp - 8], eax
fild dword [ebp - 8]
mov dword [ebp], eax
push 2
test eax, eax
jns 0x4382fd
fadd qword [0x466a30]
fdiv qword [0x4663b8]
push ecx
push ecx
fstp qword [esp]
call fcn.0041a3b9
pop ecx
lea eax, [ebp + 0x284]
fstp qword [esp]
push eax
call fcn.0041c447
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x10
lea eax, [ebp + 0x284]
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
jmp 0x438348
push 0x466c54
push eax
call esi
lea eax, [ebp + 0x284]
push eax
call edi
cmp eax, 4
lea eax, [ebp + 0x284]
jl 0x438337
push str._GHz
push eax
call esi
jmp 0x4383c0
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Instructions
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438386
lea eax, [ebp + 0x284]
push eax
push 1
call fcn.00448d13
pop ecx
pop ecx
jmp 0x4383c0
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Manufacturer
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4383c0
call fcn.00448ce5
cmp eax, 2
lea eax, [ebp + 0x284]
jne 0x4383b4
push 0x46bf30
jmp 0x4383b9
push str.Intel
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea eax, [ebp + 0x284]
push eax
push dword [ebp + 8]
push dword [ebp + 0xc]
call fcn.00428e6d
jmp 0x437e64
add eax, edi
push str.Memory
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x4385de
lea eax, [edi + eax + 0x58]
push 0x46493c
push eax
mov byte [ebp + 0x284], bl
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x43845f
push 1
push 4
call fcn.00448970
mov dword [ebp], eax
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Used
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438441
mov eax, dword [ebp]
jmp 0x438447
push 0x64
pop eax
sub eax, dword [ebp]
push eax
lea eax, [ebp + 0x284]
push 0x464bf4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x4384bf
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Total
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x43847c
push 1
push 1
jmp 0x4384b4
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Free
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438499
push 1
push 2
jmp 0x4384b4
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Used
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4384bf
push 1
push 3
call fcn.00448970
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], edx
cmp byte [ebp + 0x284], bl
jne 0x4383c0
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46bf24
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4384fb
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
shrd ecx, eax, 0xa
shr eax, 0xa
push eax
push ecx
push 0x464bf4
jmp 0x4385c9
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46ad60
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438521
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
shrd ecx, eax, 0x14
shr eax, 0x14
jmp 0x4384ef
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46bf20
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4385be
fild qword [ebp - 0x14]
push 0xf
push 2
push ecx
fmul qword [0x46bf18]
push ecx
fstp qword [ebp - 0xc]
fld qword [ebp - 0xc]
fstp qword [esp]
call fcn.0041a3b9
pop ecx
lea eax, [ebp + 0x284]
fstp qword [esp]
push eax
call fcn.0041c447
lea eax, [ebp + 0x284]
push 0x46bf10
push eax
call fcn.004526d0
add esp, 0x18
test eax, eax
je 0x4385ab
fld qword [ebp - 0xc]
push 0xf
fadd qword [0x46bf08]
push 2
push ecx
push ecx
fstp qword [esp]
call fcn.0041a3b9
pop ecx
lea eax, [ebp + 0x284]
fstp qword [esp]
push eax
call fcn.0041c447
add esp, 0x10
lea eax, [ebp + 0x284]
push 2
push eax
call fcn.0041a20d
jmp 0x438382
push dword [ebp - 0x10]
push dword [ebp - 0x14]
push str._I64u
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
jmp 0x4383c0
add eax, edi
push 0x46bf00
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x4387f2
lea eax, [edi + eax + 0x58]
push str.Memory
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4386be
call fcn.004163c9
mov dword [ebp], eax
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46ad60
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4386b6
mov eax, dword [ebp]
xor edx, edx
mov ecx, 0x3fb
mov esi, ecx
div esi
xor edx, edx
div ecx
mov dword [ebp - 4], eax
add eax, 0xffffffca
cmp eax, 0x14
ja 0x438659
mov dword [ebp - 4], 0x40
jmp 0x43869c
mov eax, dword [ebp - 4]
fild dword [ebp - 4]
mov ecx, 0x80
mov dword [ebp + 4], ecx
test eax, eax
jns 0x438671
fadd qword [0x466a30]
fild dword [ebp + 4]
fld qword [0x46bef8]
fmul st(1)
fld st(1)
fsub st(1)
fcomp st(3)
fnstsw ax
test ah, 0x41
jp 0x4386a4
faddp st(1)
fcomp st(1)
fnstsw ax
test ah, 1
jne 0x4386a8
mov eax, dword [ebp + 4]
mov dword [ebp - 4], eax
fstp st(0)
push dword [ebp - 4]
jmp 0x438768
fstp st(1)
fstp st(0)
add dword [ebp + 4], ecx
cmp dword [ebp + 4], 0x2000
jl 0x438671
jmp 0x43869a
push dword [ebp]
jmp 0x438768
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Frequency
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4386e0
call fcn.004164b2
push eax
jmp 0x438768
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Color_Depth
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438712
push 0xc
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
jmp 0x4381dc
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Maximum_Colors
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438772
mov esi, dword [sym.imp.USER32.dll_GetDesktopWindow]
push 0xc
call esi
mov edi, dword [sym.imp.USER32.dll_GetDC]
push eax
call edi
mov ebx, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
call ebx
cmp eax, 0x18
jle 0x43874f
push 0x18
pop eax
jmp 0x438759
push 0xc
call esi
push eax
call edi
push eax
call ebx
push 2
pop ecx
cmp eax, 1
jle 0x438767
dec eax
add ecx, ecx
dec eax
jne 0x438762
push ecx
push 0x464bf4
jmp 0x4381e2
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Monitors
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438796
push 0x50
call dword [sym.imp.USER32.dll_GetSystemMetrics]
jmp 0x4381dc
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Resolution
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4383c0
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x32
push eax
call fcn.00452d30
pop ecx
pop ecx
test eax, eax
je 0x4387d9
push 2
push 1
call fcn.00447990
push eax
push 2
push ebx
call fcn.00447990
jmp 0x4387e7
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 1
call esi
push eax
push ebx
call esi
push eax
push str._d_x__d
jmp 0x4385c9
add eax, edi
push str.Storage
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x438b94
push ebx
push ebx
push dword [ebp + 8]
lea eax, [edi + eax + 0x364]
push dword [ebp + 0xc]
push eax
call fcn.00442c90
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.List
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x438a9b
mov eax, dword [0x485434]
cmp eax, ebx
je 0x438a9b
cmp byte [eax], bl
jne 0x438851
mov eax, 0x46beb4
lea ecx, [ebp - 0x6c]
push ecx
lea ecx, [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x60]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Total
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x4388ba
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Free
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438897
lea eax, [ebp - 0x60]
jmp 0x4388bd
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Used
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4388cc
mov eax, dword [ebp - 0x60]
sub dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x5c]
sbb dword [ebp - 0x24], eax
lea eax, [ebp - 0x28]
push 8
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00452790
add esp, 0xc
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46bf24
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4388f2
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
shrd eax, ecx, 0xa
shr ecx, 0xa
jmp 0x438941
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.SI_Megabyte
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x43891d
push ebx
push 0xf4240
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
call fcn.00456370
push edx
jmp 0x438942
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46ad60
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438948
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
shrd eax, ecx, 0x14
shr ecx, 0x14
push ecx
push eax
jmp 0x4384f1
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.SI_Gigabyte
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438989
push 0xf
push 2
push ebx
push 0xa
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
call fcn.00455210
push ebx
push 0x3b9aca00
push edx
push eax
call fcn.004562c0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
fild qword [ebp - 0xc]
jmp 0x4389c8
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46bf20
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4389de
push 0xf
push 2
push ebx
push 0xa
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
call fcn.00455210
push ebx
push 0x40000000
push edx
push eax
call fcn.004562c0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
fild qword [ebp - 0xc]
fdiv qword [0x468328]
push ecx
push ecx
fstp qword [esp]
call fcn.0041a3b9
pop ecx
jmp 0x438a6c
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.SI_Terabyte
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438a24
push 0xf
push ebx
push 0x3e8
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
call fcn.00455210
push pe_nt_image_headers32
push 0xd4a51000
push edx
push eax
call fcn.004562c0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
fild qword [ebp - 0xc]
jmp 0x438a64
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push 0x46be8c
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438a90
push 0xf
push ebx
push 0x3e8
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
call fcn.00455210
push 0x100
push ebx
push edx
push eax
call fcn.004562c0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
fild qword [ebp - 0xc]
fdiv qword [0x4663b8]
push ecx
push ecx
lea eax, [ebp + 0x284]
fstp qword [esp]
push eax
call fcn.0041c447
lea eax, [ebp + 0x284]
push ebx
push eax
call fcn.0041a20d
add esp, 0x18
jmp 0x4383c0
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
jmp 0x4385c4
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
mov dword [ebp], eax
xor esi, esi
xor eax, eax
inc eax
cmp esi, ebx
je 0x438ab7
mov ecx, esi
shl eax, cl
test dword [ebp], eax
je 0x438b85
lea eax, [esi + 0x41]
push eax
lea eax, [ebp + 0x140]
push str._C:_
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push ebx
push ebx
push ebx
push ebx
push ebx
push 0x3f
lea eax, [ebp + 0x244]
push eax
lea eax, [ebp + 0x140]
push eax
mov byte [ebp + 0x244], bl
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
cmp byte [ebp + 0x244], bl
jne 0x438b2e
lea eax, [ebp + 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x438b2e
push str.CD_ROM
lea eax, [ebp + 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp + 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [ebp + 0x140]
mov byte [eax + ecx - 1], bl
mov eax, ecx
push eax
lea eax, [ebp + 0x284]
push eax
call edi
cmp byte [ebp + 0x244], bl
je 0x438b77
push 0x464cdc
lea eax, [ebp + 0x284]
push eax
call edi
lea eax, [ebp + 0x244]
push eax
lea eax, [ebp + 0x284]
push eax
call edi
push 0x4663d8
lea eax, [ebp + 0x284]
push eax
call edi
inc esi
cmp esi, 0x1a
jl 0x438aac
jmp 0x4383c0
add eax, edi
push str.Operating_System
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x438eee
lea eax, [edi + eax + 0x58]
push str.Computer_Name
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438bdf
lea eax, [ebp]
push eax
lea eax, [ebp + 0x284]
push eax
mov dword [ebp], 0x103
call dword [sym.imp.KERNEL32.dll_GetComputerNameA]
jmp 0x4383c0
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Description
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438cd8
mov esi, dword [sym.imp.KERNEL32.dll_GetVersion]
call esi
cmp al, 5
jne 0x438c19
call esi
shr eax, 8
cmp al, 1
jne 0x438c19
mov eax, str.Windows_XP
jmp 0x438ccc
call fcn.004195b6
test eax, eax
je 0x438c2c
mov eax, str.Windows_Server_2008
jmp 0x438ccc
call esi
cmp al, 6
jne 0x438c45
call esi
shr eax, 8
test al, al
jne 0x438c45
mov eax, str.Windows_Vista
jmp 0x438ccc
call esi
cmp al, 6
jne 0x438c5b
call esi
shr eax, 8
cmp al, 1
jne 0x438c5b
mov eax, str.Windows_7
jmp 0x438ccc
call esi
cmp al, 5
jne 0x438c71
call esi
shr eax, 8
cmp al, 2
jne 0x438c71
mov eax, str.Windows_2003
jmp 0x438ccc
call esi
cmp al, 5
jne 0x438c87
call esi
shr eax, 8
test al, al
jne 0x438c87
mov eax, str.Windows_2000
jmp 0x438ccc
call esi
cmp al, 4
jne 0x438c9d
call esi
shr eax, 8
cmp al, 0x5a
jne 0x438c9d
mov eax, str.Windows_ME
jmp 0x438ccc
call esi
cmp al, 4
jne 0x438cb3
call esi
shr eax, 8
cmp al, 0xa
jne 0x438cb3
mov eax, str.Windows_98
jmp 0x438ccc
call esi
cmp al, 4
jne 0x438cc7
call esi
shr eax, 8
test al, al
mov eax, str.Windows_NT
je 0x438ccc
mov eax, str.Unknown
push eax
lea eax, [ebp + 0x284]
jmp 0x4383b9
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Major_Version
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438cfd
call dword [sym.imp.KERNEL32.dll_GetVersion]
movzx eax, al
jmp 0x4381dc
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Minor_Version
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438d1f
call dword [sym.imp.KERNEL32.dll_GetVersion]
shr eax, 8
jmp 0x438cf5
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Version
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438d55
mov esi, dword [sym.imp.KERNEL32.dll_GetVersion]
call esi
shr eax, 8
movzx eax, al
push eax
call esi
movzx eax, al
push eax
push str._d._d
jmp 0x4385c9
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Product_Type
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x438e7e
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Platform_ID
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x438e7e
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Suite_Mask
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x438e7e
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Build_Number
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438ddf
lea eax, [ebp + 0xac]
push eax
mov dword [ebp + 0xac], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
push dword [ebp + 0xb8]
jmp 0x438768
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Service_Pack
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438e4c
lea eax, [ebp + 0xac]
push eax
mov dword [ebp + 0xac], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [ebp + 0xc0]
push eax
call esi
lea ecx, [eax + 1]
mov eax, 0x103
cmp ecx, eax
jg 0x438e32
lea eax, [ebp + 0xc0]
push eax
call esi
inc eax
push eax
lea eax, [ebp + 0xc0]
push eax
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x4383c0
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Install
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x4383c0
push 0x104
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
jmp 0x4383c0
push 0x98
lea eax, [ebp + 0x14]
push ebx
push eax
call fcn.00452e00
add esp, 0xc
lea eax, [ebp + 0x10]
push eax
mov dword [ebp + 0x10], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Product_ID
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x438ec0
push dword [ebp + 0x20]
jmp 0x438768
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Suite_Mask
push eax
call fcn.004010ff
pop ecx
test eax, eax
movzx eax, word [ebp + 0xa8]
pop ecx
jne 0x4386da
movzx eax, byte [ebp + 0xaa]
jmp 0x4386da
add eax, edi
push str.Change_Display_Settings
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x439a70
mov eax, dword [esi]
add eax, edi
push str.Video_Display_Mode
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x439a70
mov eax, dword [esi]
add eax, edi
push str.Sound
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x438fd0
push ebx
push ebx
push dword [ebp + 8]
push dword [ebp + 0xc]
push dword [edi + eax + 0x50]
call fcn.00442c90
mov eax, dword [0x485434]
cmp eax, ebx
je 0x438fb9
cmp byte [eax], bl
je 0x438fb9
push eax
call fcn.00410370
test eax, eax
je 0x438fb9
mov eax, dword [esi]
lea eax, [edi + eax + 0x58]
push str.Sync
push eax
mov dword [ebp], 0x20002
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
jne 0x438f83
or dword [ebp], 1
push dword [ebp]
lea eax, [ebp + 0x284]
push dword [0x485434]
push str.PlaySound__lu__0___lu_
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push ebx
push ebx
lea eax, [ebp + 0x284]
push eax
push str.WINMM.DLL
call fcn.004262b2
jmp 0x439bf4
mov eax, dword [0x481960]
cmp eax, ebx
je 0x437eba
push str.Incorrect_media_file
jmp 0x437fd9
add eax, edi
push str.Tone
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x4390f7
push ebx
push ebx
push dword [ebp + 8]
lea eax, [edi + eax + 0x15c]
push dword [ebp + 0xc]
push eax
call fcn.00442c90
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [eax + 1]
push 0x1f
pop eax
cmp ecx, eax
jg 0x439021
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push dword [0x485434]
lea eax, [ebp + 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea eax, [ebp + 0x244]
push eax
call fcn.0040109c
pop ecx
cmp eax, 5
jge 0x439059
push str.1000
lea eax, [ebp + 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [esi]
push ebx
push ebx
push dword [ebp + 8]
push dword [ebp + 0xc]
push dword [edi + eax + 0x50]
call fcn.00442c90
mov esi, dword [0x485434]
push esi
call fcn.0040109c
pop ecx
cmp eax, 2
jge 0x4390a6
lea eax, [ebp + 0x244]
push eax
call fcn.0040109c
pop ecx
cmp eax, ebx
jle 0x4390a6
cmp byte [ebp + 0x244], bl
jne 0x43909a
push 0x64
pop eax
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x437e64
push esi
call fcn.0040109c
pop ecx
cmp eax, 0x25
jl 0x4390e5
push esi
call fcn.0040109c
pop ecx
cmp eax, 0x7fff
jg 0x4390e5
cmp byte [ebp + 0x244], bl
je 0x4390d7
lea eax, [ebp + 0x244]
push eax
call fcn.0040109c
pop ecx
jmp 0x4390da
push 0x64
pop eax
push eax
push esi
call fcn.0040109c
pop ecx
push eax
jmp 0x4390ec
push 0x64
push 0x172
call dword [sym.imp.KERNEL32.dll_Beep]
jmp 0x437e64
add eax, edi
push str.Screen_Saver
push eax
call fcn.004010ff
pop ecx
test eax, eax
mov eax, dword [esi]
pop ecx
je 0x439290
add eax, edi
push str.Enable
push eax
call fcn.004010ff
pop ecx
pop ecx
push str.HKEY_CURRENT_USERControl_PanelDesktopScreenSaveActive
push 2
test eax, eax
je 0x43921b
push 0x466534
push 1
push 2
call fcn.0044ad45
push str.HKEY_CURRENT_USERControl_PanelDesktopSCRNSAVE.EXE.BAK
mov edi, 0x103
push edi
lea eax, [ebp + 0x284]
push eax
push ebx
push 3
call fcn.0044ad45
add esp, 0x28
lea eax, [ebp + 0x284]
cmp byte [ebp + 0x284], bl
je 0x439175
push str.HKEY_CURRENT_USERControl_PanelDesktopSCRNSAVE.EXE
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
jmp 0x4391ee
mov esi, str.HKEY_CURRENT_USERControl_PanelDesktopSCRNSAVE.EXE
push esi
push edi
push eax
push ebx
push 3
call fcn.0044ad45
add esp, 0x14
cmp byte [ebp + 0x284], bl
jne 0x439203
push edi
lea eax, [ebp + 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [ebp + 0x140]
push eax
call edi
lea ecx, [ebp + 0x140]
cmp byte [eax + ecx - 1], 0x5c
je 0x4391c8
push 0x4648e0
mov eax, ecx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp + 0x140]
push eax
lea eax, [ebp + 0x284]
push str._slogon.scr
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push esi
lea eax, [ebp + 0x284]
push eax
call edi
inc eax
push eax
lea eax, [ebp + 0x284]
push eax
push 1
push 2
call fcn.0044ad45
add esp, 0x14
push str.HKEY_CURRENT_USERControl_PanelDesktopSCRNSAVE.EXE.BAK
push ebx
push ebx
push ebx
push 4
call fcn.0044ad45
add esp, 0x14
push ebx
push ebx
push 1
jmp 0x439283
push 0x466c54
push 1
push 2
call fcn.0044ad45
mov esi, str.HKEY_CURRENT_USERControl_PanelDesktopSCRNSAVE.EXE
push esi
push 0x103
lea eax, [ebp + 0x284]
push eax
push ebx
push 3
call fcn.0044ad45
add esp, 0x28
cmp byte [ebp + 0x284], bl
je 0x439280
push str.HKEY_CURRENT_USERControl_PanelDesktopSCRNSAVE.EXE.BAK
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
lea eax, [ebp + 0x284]
push eax
push 1
push 2
call fcn.0044ad45
push esi
push ebx
push ebx
push ebx
push 4
call fcn.0044ad45
add esp, 0x28
push ebx
push ebx
push ebx
push 0x11
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
jmp 0x437e64
add eax, edi
push str.Serial
push eax
call fcn.004010ff
pop ecx
pop ecx
test eax, eax
je 0x437e64
mov eax, dword [esi]
push ebx
push ebx
push dword [ebp + 8]
lea eax, [edi + eax + 0x364]
push dword [ebp + 0xc]
push eax
call fcn.00442c90
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
cmp eax, 0x103
jle 0x4392d9
mov eax, 0x103
jmp 0x4392e6
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push dword [0x485434]
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea eax, [ebp + 0x284]
dec eax
mov dword [ebp - 0x10], eax
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp - 0x10]
cmp byte [eax + ecx], 0x3a
jne 0x43932d
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp - 0x10]
mov byte [eax + ecx], bl
mov eax, dword [esi]
push ebx
push ebx
push dword [ebp + 8]
lea eax, [edi + eax + 0x468]
push dword [ebp + 0xc]
push eax
call fcn.00442c90
push dword [0x485434]
call fcn.0040109c
pop ecx
push ebx
push ebx
push dword [ebp + 8]
mov dword [ebp - 0x54], eax
mov eax, dword [esi]
push dword [ebp + 0xc]
lea eax, [edi + eax + 0x56c]
push eax
call fcn.00442c90
push dword [0x485434]
call fcn.0040109c
pop ecx
push ebx
push ebx
push dword [ebp + 8]
mov dword [ebp - 0x50], eax
mov eax, dword [esi]
push dword [ebp + 0xc]
lea eax, [edi + eax + 0x670]
push eax
call fcn.00442c90
push str.Even
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x4393b6
push 0x46bcec
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
mov eax, dword [esi]
push ebx
push ebx
push dword [ebp + 8]
lea eax, [edi + eax + 0x774]
push dword [ebp + 0xc]
push eax
call fcn.00442c90
push dword [0x485434]
call fcn.0040109c
pop ecx
push ebx
push ebx
push dword [ebp + 8]
mov dword [ebp - 0x48], eax
mov eax, dword [esi]
push dword [ebp + 0xc]
lea eax, [edi + eax + 0x878]
push eax
call fcn.00442c90
push 0x46bce8
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
neg eax
sbb eax, eax
push ebx
and eax, 0xfffffffe
push ebx
push dword [ebp + 8]
add eax, 2
push dword [ebp + 0xc]
mov dword [ebp - 0x4c], eax
mov eax, dword [esi]
lea eax, [edi + eax + 0x97c]
push eax
call fcn.00442c90
push dword [0x485434]
call fcn.0040109c
mov dword [ebp - 0x40], eax
push dword [ebp - 0x40]
mov eax, dword [esi]
add eax, edi
lea ecx, [eax + 0x878]
push ecx
push dword [ebp - 0x48]
add eax, 0x670
push eax
push dword [ebp - 0x50]
lea eax, [ebp + 0x284]
push dword [ebp - 0x54]
push eax
push str.____Opening_Serial_Port_on__s...___d___d___s___d___s___d
call fcn.0042604a
mov eax, dword [esi]
add eax, edi
push str.RECEIVE
push eax
call fcn.004010ff
add esp, 0x2c
test eax, eax
je 0x43978f
cmp byte [0x4840a0], 2
jb 0x439492
push str.____Open_Serial_Port...
call fcn.0042604a
pop ecx
push dword [0x481960]
lea eax, [ebp + 0x284]
push dword [ebp - 0x44]
push dword [ebp - 0x48]
push dword [ebp - 0x4c]
push dword [ebp - 0x50]
push dword [ebp - 0x54]
push eax
push 2
call fcn.00425238
mov dword [0x4841a8], eax
cmp eax, ebx
jne 0x4394db
cmp byte [0x4840a0], 2
jb 0x437eba
push str.______Serial_Failure__
call fcn.0042604a
pop ecx
jmp 0x437eba
cmp dword [ebp - 0x40], ebx
je 0x4394f0
mov eax, dword [ebp - 0x40]
imul eax, eax, 0x3e8
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp byte [0x4840a0], 2
jb 0x439504
push str.____Create_Serial_Event...
call fcn.0042604a
pop ecx
push 0x14
lea eax, [ebp - 0x80]
push ebx
push eax
call fcn.00452e00
add esp, 0xc
push ebx
push ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [ebp - 0x70], eax
cmp eax, ebx
jne 0x439566
cmp byte [0x4840a0], 2
jb 0x439539
push str.______Serial_Failure__
call fcn.0042604a
pop ecx
mov eax, dword [0x4841a8]
cmp eax, ebx
je 0x439549
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x481960]
mov dword [0x4841a8], ebx
cmp eax, ebx
je 0x437eba
push str.CreateEvent_failed
jmp 0x437fd9
cmp byte [0x4840a0], 2
jb 0x43957a
push str.____Serial_Comm_Mask...
call fcn.0042604a
pop ecx
push 1
push dword [0x4841a8]
call dword [sym.imp.KERNEL32.dll_SetCommMask]
test eax, eax
jne 0x4395cd
cmp byte [0x4840a0], 2
jb 0x4395a0
push str.______Serial_Failure__
call fcn.0042604a
pop ecx
mov eax, dword [0x4841a8]
cmp eax, ebx
je 0x4395b0
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x481960]
mov dword [0x4841a8], ebx
cmp eax, ebx
je 0x437eba
push str.SetCommMask_failed
jmp 0x437fd9
mov eax, dword [esi]
push ebx
push ebx
push dword [ebp + 8]
lea eax, [edi + eax + 0x15c]
push dword [ebp + 0xc]
push eax
call fcn.00442c90
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [eax + 1]
push 0x1f
pop eax
cmp ecx, eax
jg 0x439607
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push dword [0x485434]
lea eax, [ebp + 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
mov esi, dword [0x485434]
push esi
call fcn.0040109c
pop ecx
mov ecx, eax
imul ecx, ecx, 0x3e8
mov eax, 0x3e8
cmp ecx, eax
jl 0x439646
push esi
call fcn.0040109c
imul eax, eax, 0x3e8
pop ecx
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x10], eax
xor edi, edi
mov dword [0x4841b0], ebx
call esi
push 1
push 0x2000000
mov dword [ebp - 8], eax
call fcn.00452b24
pop ecx
pop ecx
mov dword [ebp + 4], eax
cmp eax, ebx
je 0x4394be
cmp byte [0x4840a0], 2
jb 0x439689
push str.____Create_Serial_Thread...
call fcn.0042604a
pop ecx
lea eax, [ebp - 0x64]
push eax
push ebx
push dword [ebp + 4]
push 0x425402
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
jne 0x4396cd
mov eax, dword [0x4841a8]
cmp eax, ebx
je 0x4396b2
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x481960]
mov dword [0x4841a8], ebx
cmp eax, ebx
je 0x4396cd
push str.Serial_Port_CreateThread_failed
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp byte [0x4840a0], 2
jb 0x439724
push str.____Waiting_for_Serial_Object...
call fcn.0042604a
pop ecx
jmp 0x439724
push 0x3e8
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x43972c
cmp edi, ebx
jne 0x43970c
cmp dword [0x4841b0], ebx
jbe 0x43970c
push str.____Receiving_Serial_Transmission...
call fcn.0042604a
pop ecx
cmp dword [0x4841b0], edi
jne 0x43971e
call esi
sub eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x10]
ja 0x43972c
mov edi, dword [0x4841b0]
cmp dword [0x4841a8], ebx
jne 0x4396e3
cmp byte [0x4840a0], 2
jb 0x439740
push str.____Closing_Serial_Port...
call fcn.0042604a
pop ecx
mov eax, dword [0x4841a8]
cmp eax, ebx
je 0x439750
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [0x4841b0]
mov dword [0x4841a8], ebx
push dword [ebp + 4]
push dword [ebp + 8]
push dword [ebp + 0xc]
call fcn.00428e6d
push dword [ebp + 4]
call fcn.00452756
push dword [0x4841b0]
push str._____lu_Total_bytes_received_during_serial_transmission
call fcn.0042604a
mov eax, dword [0x4841b0]
add esp, 0xc
jmp 0x439bf4
cmp byte [0x4840a0], 2
jb 0x4397a3
push str.____Open_Serial_Port...
call fcn.0042604a
pop ecx
push dword [0x481960]
lea eax, [ebp + 0x284]
push dword [ebp - 0x44]
push dword [ebp - 0x48]
push dword [ebp - 0x4c]
push dword [ebp - 0x50]
push dword [ebp - 0x54]
push eax
push 1
call fcn.00425238
mov dword [0x4841a8], eax
cmp eax, ebx
je 0x4394be
cmp dword [ebp - 0x40], ebx
je 0x4397e8
mov eax, dword [ebp - 0x40]
imul eax, eax, 0x3e8
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 4]
push eax
mov eax, dword [esi]
push ebx
push dword [ebp + 8]
mov dword [ebp - 4], ebx
push dword [ebp + 0xc]
push dword [edi + eax + 0x50]
call fcn.00442c90
cmp dword [ebp - 4], ebx
jne 0x439815
push dword [0x485434]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 4], eax
push dword [0x485434]
call fcn.00410370
test eax, eax
je 0x43986a
push dword [0x485434]
call fcn.00411c73
mov esi, eax
lea ecx, [esi + 0x10000]
mov eax, 0x1000
mov dword [ebp - 4], esi
cmp ecx, eax
jbe 0x439845
mov eax, ecx
push 1
push eax
call fcn.00452b24
pop ecx
pop ecx
mov dword [ebp + 4], eax
cmp eax, ebx
je 0x437eba
push esi
push eax
push ebx
push dword [0x485434]
call fcn.00411af0
jmp 0x4398a9
mov esi, dword [ebp - 4]
lea ecx, [esi + 0x10000]
mov eax, 0x1000
cmp ecx, eax
jbe 0x43987e
mov eax, ecx
push 1
push eax
call fcn.00452b24
pop ecx
pop ecx
mov dword [ebp + 4], eax
cmp eax, ebx
je 0x4398a9
mov eax, dword [0x485434]
cmp eax, ebx
je 0x4398a9
cmp esi, ebx
jbe 0x4398a9
push esi
push eax
push dword [ebp + 4]
call fcn.00452790
add esp, 0xc
mov eax, dword [ebp - 0x54]
cdq
and edx, 7
add eax, edx
mov ecx, 0x200
sar eax, 3
xor edi, edi
mov dword [ebp + 0xc], ebx
mov dword [ebp - 0x10], ecx
cmp eax, ecx
jg 0x4398c9
mov dword [ebp - 0x10], eax
push dword [ebp - 4]
push str.____Transmitting__lu_bytes...
call fcn.0042604a
pop ecx
pop ecx
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
sub eax, edi
mov dword [ebp - 0x20], ecx
cmp ecx, eax
jb 0x4398ea
mov dword [ebp - 0x20], eax
cmp byte [0x4840a0], 2
mov esi, dword [ebp - 0x20]
jb 0x439901
push str.____Write_Serial_Port...
call fcn.0042604a
pop ecx
push ebx
lea eax, [ebp - 0x20]
push eax
mov eax, dword [ebp + 4]
push esi
add eax, edi
push eax
push dword [0x4841a8]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x43998d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ebx
push 0xfe
mov esi, eax
lea eax, [ebp + 0x284]
push eax
push 0x400
push esi
push ebx
push 0x1200
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
cmp esi, 0x3e5
jne 0x439a26
push 0xffffffffffffffff
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x43998d
push ebx
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x80]
push eax
push dword [0x4841a8]
call dword [sym.imp.KERNEL32.dll_GetOverlappedResult]
test eax, eax
jne 0x43998d
mov eax, dword [0x481960]
cmp eax, ebx
je 0x43998d
push str.GetOverlappedResult_failed
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
add edi, dword [ebp - 0x20]
jne 0x43999b
mov dword [ebp + 0xc], 1
jmp 0x4399de
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
sub eax, dword [ebp - 8]
cmp eax, 0x1bc
jbe 0x4399de
mov ecx, dword [ebp - 4]
cmp ecx, 1
jae 0x4399b8
xor ecx, ecx
inc ecx
mov eax, edi
imul eax, eax, 0x64
xor edx, edx
div ecx
push eax
push edi
push str.__lu_Bytes_Sent...__d__
push ebx
push 1
push dword [0x4800d4]
call fcn.00424cda
add esp, 0x18
call esi
mov dword [ebp - 8], eax
cmp dword [ebp - 4], edi
jbe 0x4399ec
cmp dword [ebp + 0xc], ebx
je 0x4398d8
push edi
push str.____Transmission_Complete:__lu_Total_Bytes
call fcn.0042604a
mov eax, dword [0x4841a8]
pop ecx
pop ecx
cmp eax, ebx
je 0x439a09
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x4841a8], ebx
cmp dword [ebp + 4], ebx
je 0x437e64
push dword [ebp + 4]
call fcn.00452756
pop ecx
jmp 0x437e64
cmp byte [0x4840a0], 2
jb 0x439a3a
push str.______Serial_Failure__
call fcn.0042604a
pop ecx
mov eax, dword [0x4841a8]
cmp eax, ebx
je 0x439a4a
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp + 0x284]
push eax
push str.WriteFile_communication_failure:__s
push dword [0x481960]
mov dword [0x4841a8], ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x437eba
mov dword [ebp + 4], ebx
push 1
push 0x1000
call fcn.00452b24
pop ecx
pop ecx
mov ecx, dword [ebp + 4]
inc dword [ebp + 4]
cmp dword [ebp + 4], 4
mov dword [ebp + ecx*4 - 0x38], eax
jl 0x439a73
mov eax, dword [esi]
push ebx
push ebx
push dword [ebp + 8]
push dword [ebp + 0xc]
push dword [edi + eax + 0x50]
call fcn.00442c90
push dword [0x485434]
lea eax, [ebp + 0x284]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebx
push ebx
push str.4_Bit
push str.16_Colors
lea eax, [ebp + 0x284]
push eax
call fcn.0044923e
push ebx
push ebx
push str.8_Bit
push str.256_Colors
lea eax, [ebp + 0x284]
push eax
call fcn.0044923e
push ebx
push ebx
push str.16_Bit
push str.High_Color__16_Bit_
lea eax, [ebp + 0x284]
push eax
call fcn.0044923e
push ebx
push ebx
push str.32_Bit
push str.True_Color__32_Bit_
lea eax, [ebp + 0x284]
push eax
call fcn.0044923e
push ebx
push 1
mov edi, 0x103
push edi
push dword [ebp - 0x38]
mov esi, 0x46ba74
push ebx
push esi
lea eax, [ebp + 0x284]
push eax
call fcn.0044cdae
push ebx
push 1
push edi
push dword [ebp - 0x34]
lea eax, [ebp + 0x284]
push 1
push esi
push eax
call fcn.0044cdae
push ebx
mov esi, 0x464ce0
push esi
push dword [ebp - 0x34]
call fcn.0044937b
push ebx
push 1
push edi
push dword [ebp - 0x30]
lea eax, [ebp + 0x284]
push 1
push esi
push eax
call fcn.0044cdae
push ebx
push esi
push dword [ebp - 0x30]
call fcn.0044937b
push ebx
push 1
push edi
push dword [ebp - 0x2c]
push 2
push esi
lea eax, [ebp + 0x284]
push eax
call fcn.0044cdae
push dword [ebp - 0x2c]
call fcn.0040109c
pop ecx
push eax
push dword [ebp - 0x30]
call fcn.0040109c
pop ecx
push eax
push dword [ebp - 0x34]
call fcn.0040109c
pop ecx
push eax
push dword [ebp - 0x38]
call fcn.0040109c
pop ecx
push eax
push 3
call fcn.00416fe6
cmp eax, 0xffffffff
jne 0x439bdb
push 0x12040
push str.System_Message
push str.The_computer_must_be_restarted_to_activate_the_change_in_the_video_display_mode.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
xor esi, esi
mov eax, dword [ebp + esi*4 - 0x38]
cmp eax, ebx
je 0x439bec
push eax
call fcn.00452756
pop ecx
inc esi
cmp esi, 4
jl 0x439bdd
mov eax, esi
mov ecx, dword [ebp + 0x388]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00452dee
add ebp, 0x38c
leave
ret 8