Function at 0x428902
Capabilities:
Create thread
Get disk information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x12c
mov eax, dword [0x51a448]
xor eax, esp
mov dword [esp + 0x128], eax
mov dword [esp + 8], 0x5c3a41
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
cmp edx, 0x8000
jne 0x428ae1
call fcn.0042667a
cmp dword [esi + 4], 5
jne 0x428a76
cmp dword [esi], 0x20
jb 0x428bf3
lea edi, [esi + 0xc]
add esi, 0x1c
push 0x10
push edi
push 0x4f6610
call fcn.0049fe79
add esp, 0xc
test eax, eax
jne 0x428975
push esi
push 0x52ff70
call fcn.004c99d0
pop ecx
pop ecx
mov edx, edi
call fcn.0042925f
test al, al
jne 0x428bf3
mov edi, 0x118
lea eax, [esp + 0x18]
push edi
xor ebx, ebx
push ebx
push eax
call fcn.0049ef70
lea eax, [esp + 0x24]
mov ecx, esi
push eax
call fcn.0040e38f
add esp, 0x10
test eax, eax
je 0x428bf3
cmp dword [esp + 0x128], 2
ja 0x428bf3
cmp byte [esp + 0x20], bl
jne 0x4289d2
push str.USB_DEVICE
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], ebx
call fcn.00405c5c
cmp dword [esp + 0x10], ebx
je 0x4289ff
imul ecx, dword [esp + 0x128], 0x50
mov edx, dword [esp + 0x124]
mov ecx, dword [ecx + 0x51e900]
call fcn.0042604b
imul eax, dword [esp + 0x128], 0x50
cmp dword [eax + 0x51e904], 1
jne 0x428bf3
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push ebx
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
test esi, esi
je 0x428bf3
push 0x118
lea eax, [esp + 0x1c]
push eax
push esi
call fcn.0049f810
add esp, 0xc
lea eax, [esp + 0xc]
push eax
push ebx
push esi
push 0x4283c4
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
je 0x428a66
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x428bf3
push esi
push ebx
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x428bf3
cmp dword [esi + 4], 2
jne 0x428bf3
xor ebx, ebx
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], ebx
call fcn.00405c5c
cmp dword [esp + 0x10], ebx
je 0x428bf3
mov dword [esp + 0xc], ebx
xor eax, eax
mov ecx, ebx
inc eax
shl eax, cl
test dword [esi + 0xc], eax
je 0x428ad2
lea eax, [esp + 0x14]
add bl, 0x41
push eax
mov byte [esp + 0x18], bl
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x428ace
mov edx, dword [esi + 0xc]
mov ecx, dword [0x51e950]
call fcn.0042604b
mov ebx, dword [esp + 0xc]
inc ebx
mov dword [esp + 0xc], ebx
cmp ebx, 0x20
jb 0x428a9d
jmp 0x428bf3
cmp edx, 0x8004
jne 0x428b29
cmp dword [esi + 4], 2
jne 0x428bf3
cmp dword [esi], 0x14
jne 0x428bf3
xor ecx, ecx
mov dword [esp + 0xc], ecx
xor eax, eax
inc eax
shl eax, cl
test dword [esi + 0xc], eax
je 0x428b1a
add cl, 0x41
xor edx, edx
call fcn.0040e1b1
mov ecx, dword [esp + 0xc]
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0x1a
jb 0x428b02
jmp 0x428bf3
cmp edx, 0x8001
jne 0x428b9a
cmp dword [esi + 4], 6
jne 0x428bf3
mov edx, dword [esi + 0xc]
xor ebx, ebx
mov eax, ebx
mov ecx, ebx
mov dword [esp + 0xc], eax
cmp dword [ecx + 0x52e74c], edx
jne 0x428b55
cmp edx, 0xffffffff
jne 0x428b6a
inc eax
add ecx, 0x14
mov dword [esp + 0xc], eax
cmp ecx, 0x208
jb 0x428b48
jmp 0x428bf3
imul eax, eax, 0x14
or dword [eax + 0x52e74c], 0xffffffff
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
imul ecx, dword [esp + 0xc], 0x14
mov ecx, dword [ecx + 0x52e750]
call fcn.0042666e
imul eax, dword [esp + 0xc], 0x14
mov dword [eax + 0x52e750], ebx
jmp 0x428bf3
cmp edx, 0x8002
je 0x428bf3
cmp edx, 0x8006
jne 0x428bf3
cmp dword [esi + 4], 6
jne 0x428bf3
push 0x10
lea eax, [esi + 0x14]
push 0x5001b4
push eax
call fcn.0049fe79
add esp, 0xc
test eax, eax
jne 0x428bf3
xor ecx, ecx
mov dword [esp + 0xc], ecx
imul eax, ecx, 0x14
mov eax, dword [eax + 0x52e74c]
cmp eax, dword [esi + 0xc]
jne 0x428be9
add cl, 0x41
xor edx, edx
call fcn.0040e1b1
mov ecx, dword [esp + 0xc]
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0x1a
jb 0x428bcd
mov ecx, dword [esp + 0x134]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0049d307
mov esp, ebp
pop ebp
ret