Function at 0x5b8a24
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xd
push 0
push 0
dec ecx
jne 0x5b8a2c
push ebx
push esi
push edi
mov edi, eax
xor eax, eax
push ebp
push 0x5b905d
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax - 4]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 8]
mov edx, dword [edx + 8]
mov edx, dword [edx + 8]
mov edx, dword [edx - 0x44]
mov edx, dword [edx + 0xa8]
mov edx, dword [edx + 0x1c]
mov ebx, dword [edx + eax*4]
mov esi, dword [edi + 0x24]
mov eax, edi
call fcn.00561aa0
test al, al
je 0x5b8bf9
mov edx, 0x394
mov eax, esi
call fcn.0055ff38
mov edi, eax
mov edx, 0x393
mov eax, esi
call fcn.0055ff38
mov ebx, eax
cmp ebx, 0xa
jl 0x5b8af6
cmp ebx, 0x3e8
jg 0x5b8af6
mov eax, ebx
mov ecx, 0xa
cdq
idiv ecx
mov ebx, eax
mov eax, 0x64
sub eax, ebx
call fcn.0065b29c
sar eax, 1
jns 0x5b8aca
adc eax, 0
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x38], ebx
mov byte [ebp - 0x34], 0
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x30], eax
mov byte [ebp - 0x2c], 0
lea edx, [ebp - 0x38]
mov eax, 0x5b906c
mov ecx, 1
call fcn.0065d7d4
jmp 0x5b8b21
mov edx, 0x396
mov eax, esi
call fcn.0055ff38
mov ebx, eax
test ebx, ebx
jle 0x5b8b14
lea edx, [ebp - 0x20]
mov eax, ebx
call fcn.005b6bdc
jmp 0x5b8b21
lea eax, [ebp - 0x20]
mov edx, 0x5b90a0
call fcn.0040330c
cmp edi, 1
je 0x5b8b67
lea eax, [ebp - 0x3c]
mov edx, dword [0x672360]
mov edx, dword [edx + edi*4]
call fcn.00403438
mov ecx, dword [ebp - 0x3c]
lea eax, [ebp - 0x24]
mov edx, 0x5b90b0
call fcn.00403568
test edi, edi
jne 0x5b8b5a
lea eax, [ebp - 0x24]
mov edx, 0x5b90c8
call fcn.00403524
jmp 0x5b8b67
lea eax, [ebp - 0x24]
mov edx, 0x5b90e0
call fcn.00403524
mov edx, 0x395
mov eax, esi
call fcn.0055ff38
mov ebx, eax
cmp ebx, 2
jl 0x5b8b82
cmp ebx, 0x7bc0
jle 0x5b8b87
mov ebx, 0x1e
lea eax, [ebp - 0x3c]
push eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x5c], eax
mov byte [ebp - 0x58], 0xb
lea edx, [ebp - 0x60]
mov eax, ebx
call fcn.005b6bdc
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x54], eax
mov byte [ebp - 0x50], 0xb
mov edx, 0x181
mov eax, esi
call fcn.0055ff38
lea edx, [ebp - 0x64]
call fcn.004b3fbc
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x4c], eax
mov byte [ebp - 0x48], 0xb
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x44], eax
mov byte [ebp - 0x40], 0xb
lea edx, [ebp - 0x5c]
mov eax, 0x5b90f0
mov ecx, 3
call fcn.0065d7d4
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp + 8]
add eax, 0xfffffffc
call fcn.00403524
mov eax, dword [ebp + 8]
jmp 0x5b9018
lea edx, [ebp - 0x68]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax - 0x44]
mov eax, dword [eax + 0x158]
call fcn.0065cfe0
lea eax, [ebp - 0x68]
mov edx, dword [0x672970]
mov edx, dword [edx]
call fcn.00403ac4
mov eax, dword [ebp - 0x68]
call fcn.0062afc8
lea edx, [ebp - 0x68]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax - 0x44]
mov eax, dword [eax + 0x158]
call fcn.0065cfe0
mov edx, dword [ebp - 0x68]
mov eax, dword [0x672418]
mov eax, dword [eax]
mov eax, dword [eax + 0x18]
mov ecx, dword [edi + 0x28]
mov ecx, dword [eax + ecx*4]
lea eax, [ebp - 8]
call fcn.00403b24
mov eax, dword [edi + 0xc]
cmp byte [eax + 0x46], 0
jne 0x5b8caf
call fcn.0055e6e0
mov eax, dword [edi + 0xc]
mov ecx, dword [eax + 0x34]
mov eax, dword [eax + 0x30]
push eax
lea eax, [ebp - 4]
pop edx
call fcn.0055e430
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
call fcn.004028c0
call fcn.0053a1b8
test al, al
je 0x5b8cbe
mov dl, 1
mov eax, dword [edi + 0xc]
call fcn.0055e4e0
jmp 0x5b8cbe
push 0
mov edx, dword [ebp - 8]
push edx
mov eax, dword [eax + 0xc]
push eax
call sub.kernel32.dll_CopyFileW
mov eax, dword [ebp + 8]
push eax
call fcn.005b84dc
pop ecx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b9134
call fcn.005b6a50
pop ecx
call fcn.004da2b4
test byte [eax + 0x2d], 0x20
je 0x5b8cfa
lea eax, [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov edx, 0x5b914c
call fcn.00403b24
jmp 0x5b8d13
lea eax, [ebp - 0xc]
mov edx, dword [0x672418]
mov edx, dword [edx]
mov edx, dword [edx + 0x18]
mov ecx, dword [edi + 0x28]
mov edx, dword [edx + ecx*4]
call fcn.004038bc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 0xc]
call fcn.005b6c3c
mov eax, dword [ebp - 0x68]
lea edx, [ebp - 0x3c]
call fcn.0065c920
mov eax, dword [ebp - 0x3c]
call fcn.005b6a50
pop ecx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov al, 0x22
call fcn.0059e3a0
pop ecx
cmp byte [esi + 0x3c], 0
je 0x5b8d77
cmp byte [ebx + 0x3c], 0
je 0x5b8d77
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b9164
call fcn.005b6a50
pop ecx
jmp 0x5b9018
mov eax, dword [esi + 0x44]
test eax, eax
jne 0x5b8dc9
mov eax, ebx
call fcn.005534f4
test al, al
je 0x5b8da6
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x18]
mov edx, dword [ebx + 0x50]
cmp eax, dword [edx + 8]
jge 0x5b8da6
mov eax, dword [ebx + 0x50]
mov eax, dword [eax + 0x84]
mov edi, eax
mov ebx, eax
jmp 0x5b8dac
mov edi, dword [esi + 0x34]
mov ebx, dword [esi + 0x38]
mov edx, edi
mov eax, dword [esi + 0x2c]
call fcn.00629410
mov edi, eax
mov edx, ebx
mov eax, dword [esi + 0x30]
call fcn.00629410
mov ebx, eax
jmp 0x5b8fc7
dec eax
jne 0x5b8e2e
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b9194
call fcn.005b6a50
pop ecx
lea eax, [ebp - 0x10]
mov edx, 0x5b91b4
call fcn.0040330c
lea eax, [ebp - 0x18]
mov edx, 0x5b91b4
call fcn.0040330c
mov al, byte [edi + 0x60]
dec al
je 0x5b8e1c
sub al, 2
jne 0x5b8f04
lea eax, [ebp - 0x18]
mov edx, 0x5b91c4
call fcn.0040330c
jmp 0x5b8f04
lea eax, [ebp - 0x10]
mov edx, 0x5b91c4
call fcn.0040330c
jmp 0x5b8f04
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b91d0
call fcn.005b6a50
pop ecx
cmp byte [edi + 0x60], 3
jne 0x5b8e6f
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x3c]
mov edx, dword [0x672360]
mov edx, dword [edx + 8]
call fcn.00403438
mov eax, dword [ebp - 0x3c]
call fcn.005b6a50
pop ecx
jmp 0x5b8e92
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x3c]
mov edx, dword [0x672360]
mov edx, dword [edx]
call fcn.00403438
mov eax, dword [ebp - 0x3c]
call fcn.005b6a50
pop ecx
mov edx, 0x384
mov eax, esi
call fcn.0055ff38
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
je 0x5b8eb2
cmp byte [edi + 0x60], 3
je 0x5b8ec1
lea eax, [ebp - 0x10]
mov edx, 0x5b91c4
call fcn.0040330c
jmp 0x5b8ecb
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.005b6bdc
mov edx, 0x386
mov eax, esi
call fcn.0055ff38
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
je 0x5b8eeb
cmp byte [edi + 0x60], 3
jne 0x5b8efa
lea eax, [ebp - 0x18]
mov edx, 0x5b91c4
call fcn.0040330c
jmp 0x5b8f04
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.005b6bdc
mov edx, 0x385
mov eax, esi
call fcn.0055ff38
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
jne 0x5b8f2d
lea eax, [ebp - 0x14]
mov edx, 0x5b91c4
call fcn.0040330c
jmp 0x5b8f37
lea edx, [ebp - 0x14]
mov eax, ebx
call fcn.005b6bdc
mov edx, 0x387
mov eax, esi
call fcn.0055ff38
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
jne 0x5b8f60
lea eax, [ebp - 0x1c]
mov edx, 0x5b91c4
call fcn.0040330c
jmp 0x5b8f6a
lea edx, [ebp - 0x1c]
mov eax, ebx
call fcn.005b6bdc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x3c]
push eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x5c], eax
mov byte [ebp - 0x58], 0xb
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x54], eax
mov byte [ebp - 0x50], 0xb
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x4c], eax
mov byte [ebp - 0x48], 0xb
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x44], eax
mov byte [ebp - 0x40], 0xb
lea edx, [ebp - 0x5c]
mov eax, 0x5b91e0
mov ecx, 3
call fcn.0065d7d4
mov eax, dword [ebp - 0x3c]
call fcn.005b6a50
pop ecx
mov edi, dword [esi + 0x5c]
sub edi, dword [esi + 0x54]
mov ebx, dword [esi + 0x60]
sub ebx, dword [esi + 0x58]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x3c]
push eax
push 0x5a0
push edi
push 0x60
call sub.kernel32.dll_MulDiv
mov dword [ebp - 0x38], eax
mov byte [ebp - 0x34], 0
push 0x5a0
push ebx
push 0x60
call sub.kernel32.dll_MulDiv
mov dword [ebp - 0x30], eax
mov byte [ebp - 0x2c], 0
lea edx, [ebp - 0x38]
mov eax, 0x5b91f8
mov ecx, 1
call fcn.0065d7d4
mov eax, dword [ebp - 0x3c]
call fcn.005b6a50
pop ecx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5b9064
lea eax, [ebp - 0x68]
call fcn.00403880
lea eax, [ebp - 0x64]
mov edx, 2
call fcn.00403298
lea eax, [ebp - 0x3c]
call fcn.00403274
lea eax, [ebp - 0x24]
mov edx, 6
call fcn.00403298
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.00403898
ret