Function at 0x411e90
Capabilities:
Encode data using xor
Print debug messages

Disassembly:
sub esp, 0x348
mov al, byte [0x4c2a80]
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov ecx, 8
mov esi, str.Error_getting_disk_information_
lea edi, [esp + 0xb0]
mov byte [esp + 0x110], al
rep movsd dword es:[edi], dword [esi]
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x111]
xor esi, esi
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov dword [ebp + 0xff0], esi
mov dword [ebp + 0x2527c], esi
mov dword [esp + 0x14], 1
mov dword [ebp + 0xff4], esi
lea ecx, [ebp + 0xfb0]
lea eax, [ebp + 0xf70]
mov edx, 6
mov edi, dword [ebp + 0xf72]
mov ebx, dword [eax]
xor edi, ebx
add eax, 2
mov dword [ecx], edi
add ecx, 4
dec edx
jne 0x411efb
push esi
push esi
call fcn.00408a90
mov al, byte [ebp + 0x1034]
add esp, 8
test al, al
je 0x411f79
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_AttachConsole]
test eax, eax
je 0x411f79
push 0x4bdcfc
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 8
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push eax
call fcn.00447890
add esp, 8
cmp eax, 0xffffffff
je 0x411f79
push 0x4be6a0
push eax
call fcn.0044753d
mov ecx, 8
mov esi, eax
mov edi, 0x4c09f0
push 0x4bd43c
rep movsd dword es:[edi], dword [esi]
call fcn.0044739c
add esp, 0xc
xor ebx, ebx
mov dword [esp + 0x10], ebx
mov eax, dword [ebp + 0x2527c]
test eax, eax
jl 0x412734
cmp ebx, 2
jne 0x411fd2
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1e]
mov ecx, dword [esp + 0x22]
and edx, 0xffff
and eax, 0xffff
push edx
and ecx, 0xffff
push eax
push ecx
lea edx, [esp + 0xa8]
push str._02d__02d__04d______
push edx
call fcn.00445f52
add esp, 0x14
push ebx
lea eax, [esp + 0x1b8]
push str..PhysicalDrive_d
push eax
call fcn.00445f52
mov edx, dword [ebp + 0x2527c]
add esp, 0xc
xor eax, eax
mov ecx, 0x4b9
lea esi, [edx + edx*4]
push eax
push 0x8000000
push 3
lea esi, [esi + esi*4]
push eax
push 3
push 0xc0000000
lea esi, [edx + esi*8]
lea edx, [edx + esi*2]
lea edx, [edx + edx*2]
lea edi, [ebp + edx*4 + 0x25280]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x1cc]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ecx, dword [ebp + 0x2527c]
cmp ebx, 6
lea edx, [ecx + ecx*4]
lea edx, [edx + edx*4]
lea edx, [ecx + edx*8]
lea ecx, [ecx + edx*2]
lea ecx, [ecx + ecx*2]
mov dword [ebp + ecx*4 + 0x25280], eax
jne 0x41211c
lea edx, [esp + 0x2c]
push 0x10
lea eax, [esp + 0xa0]
push edx
push eax
lea ecx, [ebp + 0xf68]
call 0x3f83f0
xor ebx, ebx
lea ecx, [esp + 0x1f4]
push str._02X
push ecx
call fcn.00445f52
lea edi, [esp + 0x1fc]
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x110]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
cmp ebx, 0xf
rep movsb byte es:[edi], byte [esi]
je 0x4120e8
mov edi, 0x4bbc54
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x110]
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
inc ebx
cmp ebx, 0x10
jl 0x41206c
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
lea eax, [ebp + 0x4b010]
mov ebx, dword [esp + 0x10]
mov dword [eax], ecx
mov ecx, dword [esp + 0x34]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x38]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
jmp 0x4121be
cmp ebx, 7
jne 0x41219c
lea eax, [esp + 0xd0]
lea esi, [ebp + 0x4b024]
push 0x10
push eax
push esi
lea ecx, [ebp + 0xf68]
call 0x3f8530
lea ecx, [esp + 0xd0]
push ecx
call fcn.0044634d
lea edx, [esp + 0xd7]
mov edi, eax
push edx
call fcn.0044634d
mov dword [esp + 0x20], eax
lea eax, [esp + 0xde]
push eax
call fcn.0044634d
add esp, 0xc
cmp eax, 0x7d2
jne 0x4121be
mov ecx, dword [esp + 0x18]
add ecx, edi
cmp ecx, 0x25
jne 0x4121be
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov dword [esi], edx
mov edx, dword [esp + 0x38]
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
jmp 0x4121be
cmp ebx, 0xa
jne 0x4121be
mov eax, dword [ebp + 0xff4]
test eax, eax
jl 0x4121be
jg 0x4121b6
cmp dword [ebp + 0xff0], 0xf
jbe 0x4121be
mov dword [esp + 0x14], 0xffffff9c
mov eax, dword [ebp + 0x2527c]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
mov ecx, dword [ebp + 0x4b050]
lea eax, [eax + edx*2]
lea eax, [eax + eax*2]
mov dword [ebp + eax*4 + 0x25290], ecx
mov eax, dword [ebp + 0x2527c]
lea ecx, [eax + eax*4]
lea edx, [ecx + ecx*4]
lea ecx, [eax + edx*8]
lea eax, [eax + ecx*2]
lea edx, [eax + eax*2]
lea eax, [ebp + edx*4 + 0x25280]
push eax
call fcn.00409ef0
add esp, 4
test al, al
je 0x4126e9
mov eax, dword [ebp + 0x2527c]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
mov ecx, dword [esp + 0x10]
lea eax, [eax + edx*2]
lea eax, [eax + eax*2]
mov dword [ebp + eax*4 + 0x25284], ecx
mov eax, dword [ebp + 0x2527c]
lea ecx, [eax + eax*4]
lea edx, [ecx + ecx*4]
lea ecx, [eax + edx*8]
lea eax, [eax + ecx*2]
lea edx, [eax + eax*2]
mov eax, dword [ebp + edx*4 + 0x252dc]
push eax
mov eax, dword [ebp + edx*4 + 0x25300]
mov ecx, dword [ebp + edx*4 + 0x252d8]
lea esi, [ebp + edx*4]
push ecx
mov edx, dword [esi + 0x25304]
push edx
push eax
call fcn.00446060
mov edi, edx
mov ebx, eax
test edi, edi
jl 0x4122a2
jg 0x41227c
cmp ebx, 0x3b9aca00
jbe 0x4122a2
push 0
push 0x3b9aca00
push edi
push ebx
call fcn.00445fb0
push edx
add esi, 0x25294
push eax
push esi
lea ecx, [esp + 0x15c]
push str._s___I64d_gB_
push ecx
jmp 0x4122c6
push 0
push 0xf4240
push edi
push ebx
call fcn.00445fb0
push edx
add esi, 0x25294
push eax
push esi
lea edx, [esp + 0x15c]
push str._s___d_mB_
push edx
call fcn.00445f52
mov ecx, dword [ebp + 0xdac]
add esp, 0x14
lea eax, [esp + 0x150]
push eax
push 0
push 0x143
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov al, byte [ebp + 0x1034]
test al, al
je 0x412611
test edi, edi
jl 0x412325
jg 0x412306
cmp ebx, 0x3b9aca00
jbe 0x412325
push 0
push 0x3b9aca00
push edi
push ebx
call fcn.00445fb0
push edx
push eax
lea edx, [esp + 0x260]
push str._I64d_gB
push edx
jmp 0x412342
push 0
push 0xf4240
push edi
push ebx
call fcn.00445fb0
push edx
push eax
lea eax, [esp + 0x260]
push str._d_mB
push eax
call fcn.00445f52
mov eax, dword [esp + 0x20]
add esp, 0x10
test eax, eax
jne 0x412494
push 0x4be64c
push 0x4c6118
call fcn.00415af0
mov esi, eax
add esp, 8
test esi, esi
je 0x412375
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
add eax, esi
mov edx, dword [eax + 0xc]
push 0x20
and edx, 0xfffffe7f
or edx, 0x40
mov dword [eax + 0xc], edx
lea eax, [esp + 0x80]
push eax
call fcn.00466b99
add esp, 8
test esi, esi
jne 0x41239e
xor ecx, ecx
jmp 0x4123a5
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
mov edx, dword [eax + 4]
push edx
push ecx
call dword [eax]
push str.Name
push esi
call fcn.00415af0
mov esi, eax
lea eax, [esp + 0x9c]
push 0x14
push eax
call fcn.00466b99
add esp, 0x18
test esi, esi
jne 0x4123d3
xor ecx, ecx
jmp 0x4123da
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
mov edx, dword [eax + 4]
push edx
push ecx
call dword [eax]
push str.Serial
push esi
call fcn.00415af0
mov esi, eax
lea eax, [esp + 0x94]
push 0xa
push eax
call fcn.00466b99
add esp, 0x18
test esi, esi
jne 0x412408
xor ecx, ecx
jmp 0x41240f
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
mov edx, dword [eax + 4]
push edx
push ecx
call dword [eax]
add esp, 8
test esi, esi
jne 0x412421
xor eax, eax
jmp 0x412428
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, esi
mov ecx, dword [eax + 0xc]
push str.Capacity
and ecx, 0xfffffebf
push esi
or cl, 0x80
mov dword [eax + 0xc], ecx
call fcn.00415af0
add esp, 8
mov esi, eax
mov ecx, esi
push 0xa
call fcn.00415890
mov edx, dword [esi]
xor edi, edi
mov eax, dword [edx + 4]
add eax, esi
test byte [eax + 4], 6
jne 0x412473
mov eax, dword [eax + 0x28]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x2c]
cmp eax, 0xffffffff
jne 0x412473
mov edi, 4
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
test edi, edi
je 0x412494
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 0x28]
or eax, edi
test edx, edx
jne 0x41248c
or al, 4
push 0
push eax
call fcn.004667d5
mov ecx, dword [esp + 0x10]
push 0x4bbc54
push ecx
mov ecx, 0x4c6118
call fcn.00415510
push eax
call fcn.00415af0
mov esi, eax
add esp, 8
test esi, esi
je 0x4124be
mov edx, dword [esi]
mov eax, dword [edx + 4]
add eax, esi
mov ecx, dword [eax + 0xc]
lea edx, [esp + 0x94]
and ecx, 0xfffffe7f
push 0x20
or ecx, 0x40
push edx
mov dword [eax + 0xc], ecx
call fcn.00466b99
add esp, 8
test esi, esi
jne 0x4124e7
xor ecx, ecx
jmp 0x4124ee
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
mov edx, dword [eax + 4]
push edx
push ecx
call dword [eax]
mov eax, dword [ebp + 0x2527c]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
lea eax, [eax + edx*2]
lea eax, [eax + eax*2]
lea ecx, [ebp + eax*4 + 0x25294]
push ecx
push esi
call fcn.00415af0
lea edx, [esp + 0x7c]
push 0x14
push edx
mov esi, eax
call fcn.00466b99
add esp, 0x18
test esi, esi
jne 0x412531
xor ecx, ecx
jmp 0x412538
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
mov edx, dword [eax + 4]
push edx
push ecx
call dword [eax]
mov eax, dword [ebp + 0x2527c]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
lea eax, [eax + edx*2]
lea eax, [eax + eax*2]
lea ecx, [ebp + eax*4 + 0x252c0]
push ecx
push esi
call fcn.00415af0
lea edx, [esp + 0x84]
push 0xa
push edx
mov esi, eax
call fcn.00466b99
add esp, 0x18
test esi, esi
jne 0x41257e
xor ecx, ecx
jmp 0x412585
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
mov edx, dword [eax + 4]
push edx
push ecx
call dword [eax]
add esp, 8
test esi, esi
jne 0x412597
xor eax, eax
jmp 0x41259e
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, esi
mov ecx, dword [eax + 0xc]
lea edx, [esp + 0x258]
and ecx, 0xfffffebf
push edx
or cl, 0x80
push esi
mov dword [eax + 0xc], ecx
call fcn.00415af0
add esp, 8
mov esi, eax
mov ecx, esi
push 0xa
call fcn.00415890
mov eax, dword [esi]
xor edi, edi
mov ecx, dword [eax + 4]
lea eax, [ecx + esi]
mov cl, byte [ecx + esi + 4]
test cl, 6
jne 0x4125f0
mov eax, dword [eax + 0x28]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x2c]
cmp eax, 0xffffffff
jne 0x4125f0
mov edi, 4
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
test edi, edi
je 0x412611
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 0x28]
or eax, edi
test edx, edx
jne 0x412609
or al, 4
push 0
push eax
call fcn.004667d5
mov eax, dword [ebp + 0x2527c]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
lea eax, [eax + edx*2]
lea edx, [esp + 0x150]
lea eax, [eax + eax*2]
lea eax, [ebp + eax*4]
lea ecx, [eax + 0x252c0]
add eax, 0x25294
push ecx
push eax
push str._s_s
push edx
call fcn.00445f52
lea esi, [ebp + 0x4af48]
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 1
jbe 0x4126a7
lea eax, [esp + 0x150]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x412692
test cl, cl
je 0x41268e
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x412692
add eax, 2
add esi, 2
test cl, cl
jne 0x41266a
xor eax, eax
jmp 0x412697
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4126a7
mov eax, dword [ebp + 0x2527c]
mov dword [ebp + 0x4af00], eax
mov ecx, dword [ebp + 0x4af2c]
mov eax, dword [ebp + 0x2527c]
push ecx
lea ecx, [eax + eax*4]
lea edx, [ecx + ecx*4]
lea ecx, [eax + edx*8]
lea eax, [eax + ecx*2]
lea edx, [eax + eax*2]
lea eax, [ebp + edx*4 + 0x25280]
push eax
call fcn.0040d5e0
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x2527c]
mov ebx, dword [esp + 0x18]
add esp, 8
add eax, ecx
mov dword [ebp + 0x2527c], eax
cmp ebx, 5
jne 0x412705
lea edx, [esp + 0xb0]
push 0x1f
push edx
lea ecx, [ebp + 0xf68]
call 0x3f82a0
jmp 0x412734
cmp ebx, 0xc
jne 0x412734
mov eax, dword [ebp + 0xe48]
lea ecx, [ebp + 0xe48]
call dword [eax + 0xb8]
mov ecx, dword [ebp + 0xf60]
mov edx, dword [ebp + 0xf64]
mov dword [ebp + 0xff0], ecx
mov dword [ebp + 0xff4], edx
inc ebx
cmp ebx, 0x20
mov dword [esp + 0x10], ebx
jl 0x411f7f
mov eax, dword [ebp + 0x2527c]
test eax, eax
jl 0x412761
mov eax, dword [ebp + 0xff4]
test eax, eax
jg 0x412772
jl 0x412761
cmp dword [ebp + 0xff0], 1
jae 0x412772
mov ecx, ebp
call fcn.004731a2
mov dword [ebp + 0x2527c], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x348
ret