Function at 0x10003a50
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1000aa40
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x208
mov eax, dword [0x1000f40c]
push ebx
push esi
mov esi, dword [0x1000f510]
xor ebx, ebx
push edi
cmp eax, ebx
mov dword [ebp - 0x10], esp
jne 0x10003a9e
push 0x1000f40c
push str.UDLL_GetNumberOfDrive
mov ecx, 0x1000f250
call fcn.10002a30
mov dword [0x1000f408], eax
cmp dword [0x1000f40c], 2
jne 0x10003aae
push esi
call dword [0x1000f408]
mov eax, dword [0x1000f484]
mov edi, dword [0x1000f510]
cmp eax, ebx
jne 0x10003b21
mov eax, dword [0x1000f250]
xor esi, esi
cmp eax, ebx
mov dword [0x1000f484], ebx
jne 0x10003af9
mov eax, dword [0x1000f25c]
cmp eax, ebx
je 0x10003b19
cmp byte [eax], bl
je 0x10003b19
cmp dword [0x1000f254], ebx
jne 0x10003b19
push 1
push eax
mov ecx, 0x1000f250
call fcn.10002730
mov eax, dword [0x1000f250]
cmp eax, ebx
je 0x10003b14
push str.UDLL_SetCurrentDriveNumber
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
xor eax, eax
cmp esi, ebx
setne al
inc eax
mov dword [0x1000f484], eax
mov eax, dword [0x1000f25c]
mov dword [0x1000f480], esi
jmp 0x10003b26
mov eax, dword [0x1000f25c]
cmp dword [0x1000f484], 2
jne 0x10003b3c
push ebx
push edi
call dword [0x1000f480]
mov eax, dword [0x1000f25c]
mov ecx, dword [0x1000f29c]
mov edi, dword [0x1000f510]
cmp ecx, ebx
jne 0x10003ba7
mov ecx, dword [0x1000f250]
xor esi, esi
cmp ecx, ebx
mov dword [0x1000f29c], ebx
jne 0x10003b85
cmp eax, ebx
je 0x10003ba1
cmp byte [eax], bl
je 0x10003ba1
cmp dword [0x1000f254], ebx
jne 0x10003ba1
push 1
push eax
mov ecx, 0x1000f250
call fcn.10002730
mov ecx, dword [0x1000f250]
cmp ecx, ebx
je 0x10003ba1
push str.UDLL_GetDeviceState
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
xor ecx, ecx
cmp esi, ebx
setne cl
inc ecx
mov dword [0x1000f29c], ecx
mov dword [0x1000f298], esi
cmp dword [0x1000f29c], 2
je 0x10003bb4
xor eax, eax
jmp 0x10003bbb
push edi
call dword [0x1000f298]
xor esi, esi
test al, 2
mov dword [ebp - 0x14], esi
je 0x10003cd3
mov ecx, 0x7f
xor eax, eax
lea edi, [ebp - 0x213]
mov byte [ebp - 0x214], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov esi, dword [0x1000f510]
stosb byte es:[edi], al
cmp dword [0x1000f2d4], ebx
jne 0x10003c07
push 0x1000f2d4
push str.UDLL_GetPasswordHint
mov ecx, 0x1000f250
call fcn.10002a30
mov dword [0x1000f2d0], eax
cmp dword [0x1000f2d4], 2
jne 0x10003c1e
lea edx, [ebp - 0x214]
push edx
push esi
call dword [0x1000f2d0]
push str.ChangePassword_begin
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov eax, dword [0x1000f2fc]
mov edi, dword [0x1000f510]
cmp eax, ebx
mov dword [ebp - 4], ebx
jne 0x10003c98
mov eax, dword [0x1000f250]
xor esi, esi
cmp eax, ebx
mov dword [0x1000f2fc], ebx
jne 0x10003c77
mov eax, dword [0x1000f25c]
cmp eax, ebx
je 0x10003c92
cmp byte [eax], bl
je 0x10003c92
cmp dword [0x1000f254], ebx
jne 0x10003c92
push 1
push eax
mov ecx, 0x1000f250
call fcn.10002730
mov eax, dword [0x1000f250]
cmp eax, ebx
je 0x10003c92
push str.UDLL_ChangePassword
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
xor eax, eax
cmp esi, ebx
setne al
inc eax
mov dword [0x1000f2fc], eax
mov dword [0x1000f2f8], esi
cmp dword [0x1000f2fc], 2
je 0x10003ca5
xor esi, esi
jmp 0x10003cd3
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x214]
push ecx
push edx
push eax
push edi
call dword [0x1000f2f8]
mov esi, eax
jmp 0x10003cd3
push str.ChangePassword_end
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret