Function at 0x10046f05
Capabilities:
Get disk information
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xac
push ebx
push esi
push edi
push 2
pop esi
mov dword [ebp - 0x14], ecx
mov ebx, edx
mov dword [ebp - 0xc], 9
lea ecx, [ebp - 0x84]
push esi
call fcn.10024e73
xor edx, edx
mov dword [ebp - 4], 0x4a90611b
mov dword [ebp - 4], edx
jmp 0x10046f4d
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x84]
mov dword [eax + ecx*4], 0xfffffff7
inc dword [ebp - 4]
cmp dword [ebp - 4], esi
jl 0x10046f3a
push 1
mov dword [ebp - 0xc], edx
pop esi
jmp 0x10046fbe
mov dword [ebp - 4], 0xdb8faaae
mov dword [ebp - 8], 0x45c8100c
mov byte [ebp - 0x1d], dl
cmp byte [ebp - 0x1d], 0
je 0x10046f80
push 0x1932
push edx
push edx
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
xor edx, edx
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x84]
mov dword [ecx], eax
test eax, eax
jne 0x10046fac
mov eax, dword [ebp - 4]
imul eax, dword [ecx + 4]
xor ecx, ecx
cmp eax, 0xfffffff6
mov eax, 0xdbda
setg cl
sub eax, ecx
mov eax, edx
je 0x10046fae
mov eax, esi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
imul eax, dword [ebp - 4]
mov dword [ebp - 4], eax
dec dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0xfffffffc
jl 0x10046f5a
lea ecx, [ebp - 0x84]
mov dword [ebp - 4], 0x7ee39f3f
call fcn.10024f25
xor ecx, ecx
cmp byte [ebp + 8], cl
je 0x1004735c
mov dword [ebp - 8], ecx
mov dword [ebp - 4], ecx
push 3
mov dword [ebp - 0xc], 0x7736d0c1
mov dword [ebp + 8], ecx
pop edi
jmp 0x10047007
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x90], 0xeac8b13e
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x10046ff6
mov ebx, dword [sym.imp.USER32.dll_GetDesktopWindow]
push 2
mov dword [ebp - 8], ecx
pop edx
jmp 0x10047037
mov byte [ebp + 0xb], cl
cmp byte [ebp + 0xb], 0
je 0x10047034
call ebx
push eax
call ebx
push eax
call dword [sym.imp.USER32.dll_SetParent]
push 2
xor ecx, ecx
pop edx
inc dword [ebp - 8]
cmp dword [ebp - 8], edx
jle 0x1004701a
mov dword [ebp - 8], ecx
jmp 0x1004712c
mov dword [ebp + 8], ecx
jmp 0x10047057
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x38], 4
inc dword [ebp + 8]
cmp dword [ebp + 8], edx
jl 0x10047049
cmp dword [ebp - 0x34], ecx
jne 0x10047102
mov eax, dword [ebp - 0x8c]
cmp dword [ebp - 0x34], ecx
je 0x10047072
mov ecx, esi
mov eax, dword [ebp - 0x90]
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x34]
sete dl
xor ecx, ecx
cmp eax, edx
mov eax, dword [ebp - 8]
setge cl
cmp ecx, 0x896e6a37
sbb edx, edx
neg edx
sub edx, eax
mov eax, dword [ebp - 4]
sub edx, 0xfffc
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
setge cl
mov dword [ebp - 0xc], ecx
xor ecx, ecx
cmp dword [ebp - 0xc], ecx
jne 0x10047102
mov dword [ebp - 0xc], 0xffffffff
jmp 0x100470fa
mov dword [ebp - 4], ecx
jmp 0x100470e0
cmp byte [ebp + 0xb], 0
je 0x100470dd
push esi
push ecx
push 0xfac
call ebx
push eax
call dword [sym.imp.USER32.dll_GetDlgItemInt]
xor ecx, ecx
inc dword [ebp - 4]
cmp dword [ebp - 4], esi
mov byte [ebp + 0xb], cl
jle 0x100470c5
cmp byte [ebp + 0xb], 0
je 0x100470f7
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
xor ecx, ecx
dec dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0xffffffe4
je 0x100470c0
jmp 0x10047126
mov dword [ebp - 0xc], esi
mov byte [ebp + 0xb], cl
cmp byte [ebp + 0xb], 0
je 0x10047123
call ebx
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call ebx
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
xor ecx, ecx
mov eax, dword [ebp - 0xc]
inc dword [ebp - 8]
push 2
pop edx
cmp dword [ebp - 8], esi
jg 0x10047044
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x9c], ecx
mov dword [ebp - 0x98], ecx
mov dword [ebp - 0x94], ecx
mov dword [ebp + 8], 9
mov dword [ebp + 8], 0xffff
mov dword [ebp + 8], ecx
jmp 0x10047168
cmp dword [ebp + 8], ecx
jne 0x1004716d
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jle 0x10047160
mov byte [ebp + 0xb], cl
cmp byte [ebp + 0xb], 0
je 0x1004717f
push ecx
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
xor ecx, ecx
mov dword [ebp + 8], 0x450bb101
mov dword [ebp + 8], ecx
mov dword [ebp + 8], ecx
jmp 0x1004719c
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x10], 0xfffffff8
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x1004718e
mov byte [ebp + 0xb], cl
cmp byte [ebp + 0xb], 0
je 0x100471b0
call dword [sym.imp.USER32.dll_DestroyCaret]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
neg edx
push 2
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
mov eax, dword [ebp - 0x10]
pop edi
setne cl
add eax, ecx
mov ecx, dword [ebp - 0x10]
imul ecx, eax
cmp edi, ecx
sbb eax, eax
neg eax
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x10]
jg 0x100471ee
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov dword [ebp + 8], eax
mov dword [ebp - 0xc], 4
mov dword [ebp - 4], 0xffffffff
mov dword [ebp + 8], 0x4eb4c8f0
mov dword [ebp + 8], 0xf4f823aa
mov eax, dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
imul eax, dword [ebp - 0xc]
sub eax, dword [ebp - 4]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 4]
sub eax, 0x184dcc8
neg eax
sbb eax, eax
inc eax
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
sub eax, 9
imul eax, dword [ebp - 4]
test eax, eax
je 0x10047262
mov dword [ebp + 8], 0x1ac3dc99
dec dword [ebp + 8]
jmp 0x10047302
push edi
lea ecx, [ebp - 0x44]
call fcn.10024e73
mov dword [ebp - 0xc], 0xb5fb49a5
mov dword [ebp + 8], 0
jmp 0x1004728b
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x44]
mov dword [eax + ecx*4], 0xcb0befcd
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x1004727b
mov dword [ebp + 8], 0
cmp dword [ebp + 8], esi
jg 0x100472e5
mov edi, dword [ebp - 0x44]
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x44]
mov dword [eax + ecx*4], 0xe856dfc9
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [edi + 4]
mov dword [ebp - 0xc], eax
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
imul ecx, dword [edi + 4]
mov eax, dword [ebp - 0x44]
mov dword [eax + edx*4], ecx
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jle 0x1004729f
mov byte [ebp + 0xb], 0
cmp byte [ebp + 0xb], 0
je 0x100472fa
push 0
call ebx
push eax
call dword [sym.imp.USER32.dll_EndDialog]
lea ecx, [ebp - 0x44]
call fcn.10024f25
mov ebx, dword [ebp - 0x14]
xor ecx, ecx
mov eax, dword [ebx]
mov eax, dword [ebx]
cmp eax, 0x31ec
mov eax, dword [ebx]
setl cl
xor edx, edx
cmp eax, ecx
mov eax, dword [ebp + 0x10]
sete dl
xor ecx, ecx
mov eax, dword [eax]
cmp eax, edx
setge cl
add ecx, 5
cmp ecx, 0x26fbc79a
jge 0x1004733b
mov eax, dword [ebp + 0x14]
cmp dword [eax], 0
jne 0x1004733d
xor esi, esi
mov eax, dword [ebp + 0x18]
xor edx, edx
mov eax, dword [eax]
cmp eax, esi
mov eax, dword [ebp + 0xc]
setg dl
xor ecx, ecx
mov eax, dword [eax]
cmp edx, eax
sete cl
mov dword [ebx], ecx
jmp 0x10047798
mov dword [ebp - 8], esi
mov dword [ebp - 0xc], ecx
mov dword [ebp + 8], ecx
jmp 0x10047375
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x24], 0xffffffff
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x10047367
cmp dword [ebp - 8], ecx
jne 0x10047382
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 8]
imul ecx, eax
push 3
pop edi
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 8]
add eax, ecx
xor ecx, ecx
imul eax, dword [ebp - 0xc]
cmp eax, 0xdf6f
mov eax, dword [ebp - 8]
setg cl
xor edx, edx
cmp ecx, eax
setle dl
sub edx, dword [ebp - 8]
neg edx
sbb edx, edx
inc edx
cmp edx, 0xfffffff8
jne 0x1004740f
push edi
lea ecx, [ebp - 0x78]
call fcn.10024e73
xor edx, edx
mov dword [ebp + 8], 0xdc164f94
mov dword [ebp + 8], edx
jmp 0x100473eb
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x78]
mov dword [eax + ecx*4], 0xe0d1b713
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x100473db
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x24], edx
cmp dword [eax + 8], edx
jne 0x10047402
mov eax, edx
cmp dword [ebp - 8], edx
je 0x10047404
mov eax, esi
mov dword [ebp + 8], eax
lea ecx, [ebp - 0x78]
jmp 0x100474b4
push 2
lea ecx, [ebp - 0x60]
call fcn.10024e73
xor edx, edx
mov dword [ebp + 8], edx
jmp 0x10047430
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x60]
mov dword [eax + ecx*4], 0x15a6
inc dword [ebp + 8]
cmp dword [ebp + 8], 2
jl 0x10047420
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x60]
mov dword [eax + 4], ecx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 8], edx
jmp 0x100474ac
mov dword [ebp - 0xc], edx
jmp 0x10047493
cmp byte [ebp + 0xb], 0
je 0x10047471
push edx
push 0x172f
push edx
push 0x20e5
push 0x6dd
push edx
push 0x24c8
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
xor edx, edx
mov byte [ebp + 0xb], dl
cmp byte [ebp + 0xb], 0
je 0x10047490
push edx
push edx
push 0x1ae7
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
xor edx, edx
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], esi
mov byte [ebp + 0xb], dl
jle 0x1004744c
cmp byte [ebp + 0xb], 0
je 0x100474a9
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
xor edx, edx
inc dword [ebp - 8]
cmp dword [ebp - 8], edx
jle 0x10047447
lea ecx, [ebp - 0x60]
call fcn.10024f25
mov dword [ebp - 8], 0xffffffff
xor edx, edx
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp + 8], edx
jmp 0x100474d8
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x1c], esi
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x100474ce
mov dword [ebp - 8], edx
cmp dword [ebp - 8], edx
jl 0x1004751b
mov dword [ebp + 8], edx
jmp 0x100474f8
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x54], 0xffffffff
inc dword [ebp + 8]
cmp dword [ebp + 8], 4
jl 0x100474ea
mov dword [ebp - 0x48], edx
jmp 0x10047511
mov eax, dword [ebp - 0x48]
mov dword [ebp + eax*4 - 0x1c], 0xfffffffa
inc dword [ebp - 0x48]
cmp dword [ebp - 0x48], esi
jl 0x10047503
dec dword [ebp - 8]
jns 0x100474e5
mov dword [ebp - 8], 0xffffffec
jmp 0x10047628
mov dword [ebp + 8], 0xe6e7f737
mov dword [ebp + 8], edx
jmp 0x10047540
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0xac], esi
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x10047533
mov dword [ebp + 8], edx
cmp dword [ebp + 8], edx
jl 0x10047604
mov dword [ebp - 0x14], 0xb4e76ab2
lea ecx, [ebp - 0x6c]
mov dword [ebp - 4], 0x8eb16e2c
push edi
call fcn.10024e73
mov dword [ebp - 4], 0
jmp 0x10047581
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x6c]
mov dword [eax + ecx*4], 0xffff
inc dword [ebp - 4]
cmp dword [ebp - 4], edi
jl 0x10047571
mov eax, dword [ebp + 8]
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x1c]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x1c]
cmp eax, esi
setge cl
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x1c]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x1c]
mov dword [ebp - 0xa4], esi
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x1c]
dec eax
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
add eax, 0x5b04
jne 0x100475e3
mov eax, dword [ebp - 0x6c]
cmp dword [eax + 8], 0
jne 0x100475e3
xor ecx, ecx
jmp 0x100475e5
mov ecx, esi
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x1c]
add eax, ecx
lea ecx, [ebp - 0x6c]
mov dword [ebp - 0x14], eax
call fcn.10024f25
dec dword [ebp + 8]
jns 0x10047551
xor edx, edx
mov byte [ebp + 0xb], dl
cmp byte [ebp + 0xb], 0
je 0x10047625
push 0x182f
push 0x5a1
push 0x1e6f
push edx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
xor edx, edx
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x1d
jne 0x10047527
mov dword [ebx], edx
jmp 0x1004778f
mov dword [ebp + 8], edx
jmp 0x10047648
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x18], edi
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x1004763e
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0x18], edx
je 0x100476cc
mov dword [ebp + 8], 0x5a9c4c8d
mov dword [ebp - 0x14], 0xe32cf41
mov dword [ebp + 8], edx
jmp 0x10047676
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x28], 0x4074dd03
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x10047668
mov dword [ebp + 8], edx
cmp dword [ebp + 8], edx
jl 0x100476c7
mov dword [ebp - 4], 4
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x14], esi
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x18]
sub eax, dword [ebp - 0x18]
jne 0x100476b0
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 4]
inc eax
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x14], eax
dec dword [ebp + 8]
jns 0x10047683
inc dword [ebp - 0x18]
jne 0x10047655
mov byte [ebp + 0xb], dl
cmp byte [ebp + 0xb], 0
je 0x1004778d
mov dword [ebp + 8], 0xc3a0b8ee
mov dword [ebp - 0x14], 0xd87263b0
mov dword [ebp - 4], edx
jmp 0x100476f6
mov eax, dword [ebp - 4]
mov dword [ebp + eax*4 - 0x30], esi
inc dword [ebp - 4]
cmp dword [ebp - 4], 2
jl 0x100476ec
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
neg ecx
sbb ecx, ecx
inc ecx
imul eax, ecx
test eax, eax
je 0x10047715
mov eax, esi
cmp dword [ebp + 8], edx
jne 0x10047717
mov eax, edx
mov ecx, dword [ebp + 8]
add ecx, eax
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp + 8]
imul ecx, eax
add edx, ecx
xor ecx, ecx
imul edx, dword [ebp + 8]
mov eax, dword [ebp + 8]
cmp eax, edx
setle cl
mov dword [ebp + 8], ecx
cmp dword [ebp + 8], 0
jne 0x10047741
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 0x30]
xor ecx, ecx
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp + 8]
test eax, eax
sets cl
mov dword [ebp - 0x14], ecx
mov byte [ebp + 0xb], 0
cmp byte [ebp + 0xb], 0
je 0x1004776b
push 0x2623
push 0
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
push 0x17b5
push 0x12d8
push 0
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.USER32.dll_DrawEdge]
xor edx, edx
inc dword [ebx]
cmp dword [ebx], 0xe
jl 0x10047639
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret