Function at 0x62f8a8
Capabilities:
Encode data using xor
Get disk information

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0xa
push 0
push 0
dec ecx
jne 0x62f8b1
xchg dword [ebp - 4], ecx
push ebx
push esi
mov byte [ebp - 5], cl
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x6302c5
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0x70], 0
je 0x62f8e8
mov dword [ebp - 0xc], 1
jmp 0x6302a2
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp - 4]
mov byte [eax + 0x590], 0
mov eax, ebx
call fcn.004f6808
test al, al
je 0x62f92e
lea eax, [ebp - 0x30]
mov edx, ebx
call fcn.0040475c
lea eax, [ebp - 0x30]
mov edx, 0x6302e0
call fcn.0040484c
mov eax, dword [ebp - 0x30]
call fcn.00404a44
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 5
je 0x62f932
xor eax, eax
jmp 0x62f934
mov al, 1
mov byte [ebp - 5], al
mov eax, dword [ebp - 4]
mov dl, byte [ebp - 5]
mov byte [eax + 0x71], dl
mov eax, dword [ebp - 4]
call fcn.0062ed54
mov eax, dword [ebp - 4]
cmp word [eax + 0x50a], 0
je 0x62f967
mov esi, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [esi + 0x50c]
call dword [esi + 0x508]
cmp byte [ebp + 0xc], 0
je 0x62f97d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
cmp byte [eax + 4], 0
je 0x62f97d
mov byte [ebp + 0xc], 0
cmp byte [ebp + 0xc], 0
je 0x62f9d9
xor ecx, ecx
mov dl, 1
mov eax, dword [0x629b8c]
call fcn.0046cf9c
mov dword [ebp - 0x18], eax
xor eax, eax
push ebp
push 0x62f9d2
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x18]
call fcn.004712f4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
xor ecx, ecx
mov edx, ebx
call fcn.0062b330
mov dword [ebp - 0x10], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x62fa08
mov eax, dword [ebp - 0x18]
call fcn.004036a0
ret
mov eax, ebx
call fcn.004f6808
test al, al
je 0x62f9f8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
xor ecx, ecx
mov edx, ebx
call fcn.004f5648
mov dword [ebp - 0x10], eax
jmp 0x62fa08
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
xor edx, edx
call fcn.004f5400
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jbe 0x6302a2
xor ecx, ecx
push ebp
push 0x63029b
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov eax, dword [ebp - 4]
mov byte [eax + 0x7a], 1
mov eax, dword [ebp - 4]
mov byte [eax + 0x7b], 1
mov eax, dword [ebp - 4]
mov byte [eax + 0x7d], 0
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x60]
mov ecx, dword [edx + 0x18]
mov dword [eax + 0xc0], ecx
mov ecx, dword [edx + 0x1c]
mov dword [eax + 0xc4], ecx
mov eax, dword [ebp - 4]
cmp word [eax + 0x512], 0
je 0x62fa82
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
mov dx, word [eax + 0x28]
push edx
mov dx, word [eax + 0x2a]
push edx
mov ecx, dword [eax + 0x24]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x514]
call dword [ebx + 0x510]
mov eax, dword [ebp - 4]
add eax, 0xe8
push eax
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x60]
movzx eax, word [ebx + 0x12]
push eax
mov eax, 0x400
pop edx
mov ecx, edx
xor edx, edx
div ecx
mov ecx, eax
mov eax, ebx
xor edx, edx
call fcn.004f589c
test eax, eax
jne 0x62fabb
call fcn.00403f9c
jmp 0x6302a2
mov eax, dword [ebp - 4]
add eax, 0xe8
call fcn.004f67e0
mov edx, dword [ebp - 4]
mov byte [edx + 0x78], al
mov eax, dword [ebp - 4]
call fcn.0062f598
mov eax, dword [ebp - 4]
cmp byte [eax + 0x78], 0
jne 0x62faf0
mov dword [ebp - 0xc], 0xfffffffe
call fcn.00403f9c
jmp 0x6302a2
mov eax, dword [ebp - 4]
cmp byte [eax + 0x79], 0
je 0x62fb0a
mov dword [ebp - 0xc], 0xfffffff9
call fcn.00403f9c
jmp 0x6302a2
mov eax, dword [ebp - 4]
call fcn.0062f118
dec eax
sub al, 2
jb 0x62fb23
sub al, 1
je 0x62fb23
sub al, 0xfb
je 0x62fb23
xor eax, eax
jmp 0x62fb25
mov al, 1
mov edx, dword [ebp - 4]
mov byte [edx + 0x7c], al
mov eax, dword [ebp - 4]
cmp word [eax + 0x572], 0
je 0x62fb5e
mov eax, dword [ebp - 4]
add eax, 0x7b
push eax
mov eax, dword [ebp - 4]
add eax, 0x7c
push eax
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x7a]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x574]
call dword [ebx + 0x570]
push 0x6302ec
lea ecx, [ebp - 0x3c]
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x7a]
xor edx, edx
call fcn.00409cd8
push dword [ebp - 0x3c]
push 0x63030c
lea ecx, [ebp - 0x40]
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x7b]
xor edx, edx
call fcn.00409cd8
push dword [ebp - 0x40]
lea eax, [ebp - 0x38]
mov edx, 4
call fcn.00404904
mov eax, dword [ebp - 0x38]
call fcn.00404a44
mov edx, eax
lea eax, [ebp - 0x34]
call fcn.0040477c
mov eax, dword [ebp - 0x34]
mov dl, 6
call fcn.004f14f4
lea eax, [ebp - 0x44]
mov edx, dword [ebp - 4]
add edx, 0xe8
mov ecx, 8
call fcn.004047f4
mov eax, dword [ebp - 0x44]
call fcn.0062e2ac
test al, al
je 0x62fc2b
mov dword [ebp - 0xc], 0xfffffffb
mov eax, 0x63031c
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630344
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
push 0x30
mov eax, 0x630358
call fcn.004e6660
mov edx, eax
mov ecx, 0x630398
mov eax, dword [0x655d48]
mov eax, dword [eax]
call fcn.00474a1c
call fcn.00403f9c
jmp 0x6302a2
lea eax, [ebp - 0x48]
mov edx, dword [ebp - 4]
add edx, 0xe8
mov ecx, 8
call fcn.004047f4
mov eax, dword [ebp - 0x48]
call fcn.0062f808
test al, al
jne 0x62fc81
cmp byte [ebp + 8], 0
je 0x62fc70
push 0x40030
mov ecx, 0x6303a8
mov edx, 0x6303b0
mov eax, dword [0x655d48]
mov eax, dword [eax]
call fcn.00474a1c
jmp 0x62fc81
mov dword [ebp - 0xc], 3
call fcn.00403f9c
jmp 0x6302a2
mov eax, dword [ebp - 4]
cmp dword [eax + 0x148], 0xffffffff
je 0x62fcab
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x14c]
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0x134]
imul edx, eax
mov eax, dword [ebp - 4]
call fcn.0063201c
push 0x6303a8
push 0
push 0
push 0
push 0
push 0x6303e8
lea eax, [ebp - 0x50]
mov edx, dword [ebp - 4]
add edx, 0xf0
mov ecx, 0x20
call fcn.004047f4
push dword [ebp - 0x50]
push 0x6303fc
lea eax, [ebp - 0x4c]
mov edx, 3
call fcn.00404904
mov eax, dword [ebp - 0x4c]
call fcn.00404a44
mov ecx, eax
mov dl, 3
mov eax, dword [ebp - 4]
call fcn.006322b0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x150], 0xffffffff
je 0x62fd26
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x154]
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0x134]
imul edx, eax
mov eax, dword [ebp - 4]
call fcn.00633f64
mov eax, dword [ebp - 4]
cmp byte [eax + 0x164], 1
jb 0x6300d7
mov eax, dword [ebp - 4]
call fcn.0062f118
cmp al, 4
jne 0x62fd72
push 0
mov eax, dword [ebp - 4]
mov ax, word [eax + 0x1cf]
push eax
push 4
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x166]
mov eax, dword [ebp - 4]
xor edx, edx
mov dl, byte [eax + 0x18a]
mov eax, dword [ebp - 4]
call fcn.0062e318
mov dword [ebp - 0x10], eax
jmp 0x62fda0
push 0
mov eax, dword [ebp - 4]
mov ax, word [eax + 0x1cf]
push eax
push 0x10
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x166]
mov eax, dword [ebp - 4]
xor edx, edx
mov dl, byte [eax + 0x18a]
mov eax, dword [ebp - 4]
call fcn.0062e318
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
cmp eax, 5
ja case.default.0x62fdac
jmp dword [eax*4 + 0x62fdb3]
mov eax, dword [ebp - 4]
call fcn.0062ee1c
test al, al
je 0x6300d7
mov eax, dword [ebp - 4]
call fcn.0062f118
dec al
je 0x62fef1
dec eax
sub al, 2
jb 0x62fe03
je 0x62fef1
sub al, 0xfb
je 0x62fef1
jmp 0x62ff2f
xor eax, eax
mov edx, dword [ebp - 4]
mov dl, byte [edx + eax + 0x5c0]
test dl, dl
je 0x62fe26
xor dl, 0x55
mov ecx, dword [ebp - 4]
mov byte [ecx + eax + 0x5c0], dl
inc eax
cmp eax, 0x20
jne 0x62fe05
lea eax, [ebp - 0x54]
mov edx, dword [ebp - 4]
add edx, 0x5c0
mov ecx, 0x20
call fcn.004047f4
mov eax, dword [ebp - 0x54]
lea edx, [ebp - 0x2c]
call fcn.004f3a2c
xor eax, eax
mov edx, dword [ebp - 4]
mov dl, byte [edx + eax + 0x408]
mov ecx, eax
and ecx, 0xf
xor dl, byte [ebp + ecx - 0x2c]
mov ecx, dword [ebp - 4]
mov byte [ecx + eax + 0x82], dl
lea edx, [eax + 0x20]
mov ecx, dword [ebp - 4]
mov dl, byte [ecx + edx + 0x2e8]
mov ecx, dword [ebp - 4]
xor byte [ecx + eax + 0x82], dl
inc eax
cmp eax, 0x18
jne 0x62fe49
mov eax, dword [ebp - 4]
mov byte [eax + 0x81], 1
mov eax, dword [ebp - 4]
mov ax, word [eax + 0x420]
mov edx, eax
and dx, 0xff00
cmp dx, 0xff00
jne 0x62feb5
and ax, 0xff
mov edx, dword [ebp - 4]
mov word [edx + 0x9a], ax
jmp 0x62fec9
mov eax, dword [ebp - 4]
mov ax, word [eax + 0x420]
mov edx, dword [ebp - 4]
mov word [edx + 0x9a], ax
xor eax, eax
mov edx, dword [ebp - 4]
mov dl, byte [edx + eax + 0x3e8]
mov ecx, dword [ebp - 4]
xor dl, byte [ecx + eax + 0x2e8]
mov ecx, dword [ebp - 4]
mov byte [ecx + eax + 0x9c], dl
inc eax
cmp eax, 0x20
jne 0x62fecb
jmp 0x62ff62
push ebp
call fcn.0062f678
pop ecx
test al, al
jne 0x62ff62
mov eax, 0x630410
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630438
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0x64
call fcn.00403f9c
jmp 0x6302a2
mov eax, 0x63044c
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630438
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0xfffffffc
call fcn.00403f9c
jmp 0x6302a2
mov eax, dword [ebp - 4]
add eax, 0x9c
push eax
push 0x1f
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0x9a]
push eax
push 0xc0
mov eax, dword [ebp - 4]
lea edx, [eax + 0x82]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xbc]
mov ecx, 0x17
call fcn.004ff700
jmp 0x6300d7
mov eax, 0x630480
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630344
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0xfffffffb
call fcn.00403f9c
jmp 0x6302a2
mov eax, 0x6304a4
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630344
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0xfffffffd
call fcn.00403f9c
jmp 0x6302a2
mov eax, dword [ebp - 4]
mov byte [eax + 0x78], 0
mov eax, 0x6304c4
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630344
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0xfffffffb
call fcn.00403f9c
jmp 0x6302a2
mov eax, 0x6304f8
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630344
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0xfffffff7
call fcn.00403f9c
jmp 0x6302a2
mov eax, 0x63052c
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630344
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0xfffffffa
call fcn.00403f9c
jmp 0x6302a2
mov eax, 0x630558
call fcn.004e6660
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x630344
mov dl, 5
mov eax, dword [ebp - 4]
call fcn.006322b0
mov dword [ebp - 0xc], 0xfffffffd
call fcn.00403f9c
jmp 0x6302a2
cmp byte [ebp - 5], 0
jne 0x6300fb
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
cmp byte [eax + 4], 3
jge 0x6300fb
mov eax, dword [ebp - 4]
call fcn.0062b8f4
mov edx, 1
call fcn.0062b420
xor eax, eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 4]
call fcn.0062f118
cmp al, 4
jne 0x63012e
mov eax, dword [ebp - 4]
cmp word [eax + 0x56a], 0
je 0x63012e
lea ecx, [ebp - 0x1c]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x56c]
call dword [ebx + 0x568]
mov cl, 1
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
call fcn.0063080c
mov eax, dword [ebp - 4]
cmp byte [eax + 0x7d], 0
jne 0x63015e
mov eax, dword [ebp - 4]
call fcn.006316d8
test al, al
je 0x63015e
mov eax, dword [ebp - 4]
mov byte [eax + 0x7d], 1
mov eax, dword [ebp - 4]
mov byte [eax + 0x7b], 0
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
cmp byte [eax + 0x7d], 0
je 0x63017b
lea eax, [ebp - 0x14]
mov edx, 0x630590
call fcn.0040460c
jmp 0x630188
lea eax, [ebp - 0x14]
mov edx, 0x6305b4
call fcn.0040460c
mov eax, dword [ebp - 4]
call fcn.0062ee1c
test al, al
je 0x6301a3
lea eax, [ebp - 0x14]
mov edx, 0x6305cc
call fcn.0040484c
jmp 0x6301b0
lea eax, [ebp - 0x14]
mov edx, 0x6305e0
call fcn.0040484c
mov eax, dword [ebp - 4]
cmp byte [eax + 0x7b], 0
je 0x6301c8
lea eax, [ebp - 0x14]
mov edx, 0x6305f4
call fcn.0040484c
jmp 0x6301d5
lea eax, [ebp - 0x14]
mov edx, 0x630604
call fcn.0040484c
mov eax, dword [ebp - 0x14]
call fcn.00404a44
push eax
push 0
push 0
push 0
push 0
mov ecx, 0x63060c
mov dl, 3
mov eax, dword [ebp - 4]
call fcn.006322b0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x7c], 0
je 0x630228
mov eax, dword [ebp - 4]
cmp word [eax + 0x5a2], 0
je 0x630213
mov eax, dword [ebp - 4]
call fcn.00633f38
mov eax, dword [ebp - 4]
cmp word [eax + 0x58a], 0
je 0x630228
mov eax, dword [ebp - 4]
call fcn.006320b4
mov eax, dword [ebp - 4]
mov byte [eax + 0x70], 1
mov eax, dword [ebp - 4]
cmp word [eax + 0x51a], 0
je 0x630264
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x7b]
push eax
mov eax, dword [ebp - 4]
call fcn.0062ee28
push eax
mov eax, dword [ebp - 4]
mov cl, byte [eax + 0x7a]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x51c]
call dword [ebx + 0x518]
mov edx, 0x630624
mov eax, dword [ebp - 4]
call fcn.0062ee50
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6302a2
mov eax, dword [ebp - 4]
cmp byte [eax + 0x70], 0
jne 0x63029a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
call fcn.004f5878
mov eax, dword [ebp - 4]
call fcn.00632284
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6302cc
lea eax, [ebp - 0x54]
mov edx, 0xa
call fcn.00404598
lea eax, [ebp - 0x14]
call fcn.00404574
ret