Function at 0x5b8cec
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xd
push 0
push 0
dec ecx
jne 0x5b8cf4
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x5b933f
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 + 0xb0]
mov edx, dword [edx + 0x1c]
mov ebx, dword [edx + eax*4]
mov eax, dword [ebp - 4]
mov esi, dword [eax + 0x24]
mov eax, dword [ebp - 4]
call fcn.005641ec
test al, al
je 0x5b8ec2
mov edx, 0x394
mov eax, esi
call fcn.00562734
mov edi, eax
mov edx, 0x393
mov eax, esi
call fcn.00562734
mov ebx, eax
cmp ebx, 0xa
jl 0x5b8dbf
cmp ebx, 0x3e8
jg 0x5b8dbf
mov eax, ebx
mov ecx, 0xa
cdq
idiv ecx
mov ebx, eax
mov eax, 0x64
sub eax, ebx
call fcn.00656b80
shr eax, 1
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x38], 0
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x34], eax
mov byte [ebp - 0x30], 0
lea edx, [ebp - 0x3c]
mov eax, 0x5b9350
mov ecx, 1
call fcn.00659050
jmp 0x5b8dea
mov edx, 0x396
mov eax, esi
call fcn.00562734
mov ebx, eax
test ebx, ebx
jle 0x5b8ddd
lea edx, [ebp - 0x20]
mov eax, ebx
call fcn.005b6ea4
jmp 0x5b8dea
lea eax, [ebp - 0x20]
mov edx, 0x5b9384
call fcn.0040330c
cmp edi, 1
je 0x5b8e30
lea eax, [ebp - 0x40]
mov edx, dword [0x672240]
mov edx, dword [edx + edi*4]
call fcn.00403438
mov ecx, dword [ebp - 0x40]
lea eax, [ebp - 0x24]
mov edx, 0x5b9394
call fcn.00403568
test edi, edi
jne 0x5b8e23
lea eax, [ebp - 0x24]
mov edx, 0x5b93ac
call fcn.00403524
jmp 0x5b8e30
lea eax, [ebp - 0x24]
mov edx, 0x5b93c4
call fcn.00403524
mov edx, 0x395
mov eax, esi
call fcn.00562734
mov ebx, eax
cmp ebx, 2
jl 0x5b8e4b
cmp ebx, 0x7bc0
jle 0x5b8e50
mov ebx, 0x1e
lea eax, [ebp - 0x40]
push eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x60], eax
mov byte [ebp - 0x5c], 0xb
lea edx, [ebp - 0x64]
mov eax, ebx
call fcn.005b6ea4
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
mov edx, 0x181
mov eax, esi
call fcn.00562734
lea edx, [ebp - 0x68]
call fcn.004c2a64
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0xb
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x48], eax
mov byte [ebp - 0x44], 0xb
lea edx, [ebp - 0x60]
mov eax, 0x5b93d4
mov ecx, 3
call fcn.00659050
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp + 8]
add eax, 0xfffffffc
call fcn.00403524
mov eax, dword [ebp + 8]
jmp 0x5b92fa
lea edx, [ebp - 0x6c]
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 + 0x160]
call fcn.0065885c
lea eax, [ebp - 0x6c]
mov edx, dword [0x673330]
mov edx, dword [edx]
call fcn.00403ac4
mov eax, dword [ebp - 0x6c]
call fcn.00624f1c
lea edx, [ebp - 0x6c]
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 + 0x160]
call fcn.0065885c
mov edx, dword [ebp - 0x6c]
mov eax, dword [0x67248c]
mov eax, dword [eax]
mov eax, dword [eax + 0x18]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 0x28]
mov ecx, dword [eax + ecx*4]
lea eax, [ebp - 8]
call fcn.00403b24
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
cmp byte [eax + 0x4a], 0
jne 0x5b8f82
call fcn.00560fac
mov eax, dword [ebp - 8]
call fcn.00654c98
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov ecx, dword [eax + 0x34]
mov edx, dword [eax + 0x30]
mov eax, dword [ebp - 0x2c]
mov edi, dword [eax]
call dword [edi + 8]
mov eax, dword [ebp - 0x2c]
call fcn.004028c0
call fcn.0053d548
test al, al
je 0x5b8f91
mov dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
call fcn.00560dac
jmp 0x5b8f91
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.005b878c
pop ecx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b9418
call fcn.005b6d20
pop ecx
mov eax, dword [0x6730b4]
test byte [eax + 1], 0x20
je 0x5b8fcd
lea eax, [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov edx, 0x5b9430
call fcn.00403b24
jmp 0x5b8fe9
lea eax, [ebp - 0xc]
mov edx, dword [0x67248c]
mov edx, dword [edx]
mov edx, dword [edx + 0x18]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 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 - 0x6c]
mov eax, dword [ebp - 0xc]
call fcn.005b6f04
mov eax, dword [ebp - 0x6c]
lea edx, [ebp - 0x40]
call fcn.00658264
mov eax, dword [ebp - 0x40]
call fcn.005b6d20
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.0059f1a4
pop ecx
cmp byte [esi + 0x3c], 0
je 0x5b904d
cmp byte [ebx + 0x3c], 0
je 0x5b904d
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b9448
call fcn.005b6d20
pop ecx
jmp 0x5b92fa
mov eax, dword [esi + 0x44]
test eax, eax
jne 0x5b909f
mov eax, ebx
call fcn.00555e94
test al, al
je 0x5b907c
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x1c]
mov edx, dword [ebx + 0x50]
cmp eax, dword [edx + 8]
jge 0x5b907c
mov eax, dword [ebx + 0x50]
mov eax, dword [eax + 0x84]
mov edi, eax
mov ebx, eax
jmp 0x5b9082
mov edi, dword [esi + 0x34]
mov ebx, dword [esi + 0x38]
mov edx, edi
mov eax, dword [esi + 0x2c]
call fcn.00622538
mov edi, eax
mov edx, ebx
mov eax, dword [esi + 0x30]
call fcn.00622538
mov ebx, eax
jmp 0x5b92a9
dec eax
jne 0x5b9107
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b9478
call fcn.005b6d20
pop ecx
lea eax, [ebp - 0x10]
mov edx, 0x5b9498
call fcn.0040330c
lea eax, [ebp - 0x18]
mov edx, 0x5b9498
call fcn.0040330c
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x60]
dec al
je 0x5b90f5
sub al, 2
jne 0x5b91e6
lea eax, [ebp - 0x18]
mov edx, 0x5b94a8
call fcn.0040330c
jmp 0x5b91e6
lea eax, [ebp - 0x10]
mov edx, 0x5b94a8
call fcn.0040330c
jmp 0x5b91e6
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
mov eax, 0x5b94b4
call fcn.005b6d20
pop ecx
mov eax, dword [ebp - 4]
cmp byte [eax + 0x60], 3
jne 0x5b914b
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x40]
mov edx, dword [0x672240]
mov edx, dword [edx + 8]
call fcn.00403438
mov eax, dword [ebp - 0x40]
call fcn.005b6d20
pop ecx
jmp 0x5b916e
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x40]
mov edx, dword [0x672240]
mov edx, dword [edx]
call fcn.00403438
mov eax, dword [ebp - 0x40]
call fcn.005b6d20
pop ecx
mov edx, 0x384
mov eax, esi
call fcn.00562734
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
je 0x5b9191
mov eax, dword [ebp - 4]
cmp byte [eax + 0x60], 3
je 0x5b91a0
lea eax, [ebp - 0x10]
mov edx, 0x5b94a8
call fcn.0040330c
jmp 0x5b91aa
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.005b6ea4
mov edx, 0x386
mov eax, esi
call fcn.00562734
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
je 0x5b91cd
mov eax, dword [ebp - 4]
cmp byte [eax + 0x60], 3
jne 0x5b91dc
lea eax, [ebp - 0x18]
mov edx, 0x5b94a8
call fcn.0040330c
jmp 0x5b91e6
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.005b6ea4
mov edx, 0x385
mov eax, esi
call fcn.00562734
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
jne 0x5b920f
lea eax, [ebp - 0x14]
mov edx, 0x5b94a8
call fcn.0040330c
jmp 0x5b9219
lea edx, [ebp - 0x14]
mov eax, ebx
call fcn.005b6ea4
mov edx, 0x387
mov eax, esi
call fcn.00562734
mov ecx, 0x27b
cdq
idiv ecx
mov ebx, eax
test ebx, ebx
jne 0x5b9242
lea eax, [ebp - 0x1c]
mov edx, 0x5b94a8
call fcn.0040330c
jmp 0x5b924c
lea edx, [ebp - 0x1c]
mov eax, ebx
call fcn.005b6ea4
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x40]
push eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x60], eax
mov byte [ebp - 0x5c], 0xb
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0xb
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x48], eax
mov byte [ebp - 0x44], 0xb
lea edx, [ebp - 0x60]
mov eax, 0x5b94c4
mov ecx, 3
call fcn.00659050
mov eax, dword [ebp - 0x40]
call fcn.005b6d20
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 - 0x40]
push eax
push 0x5a0
push edi
push 0x60
call sub.kernel32.dll_MulDiv
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x38], 0
push 0x5a0
push ebx
push 0x60
call sub.kernel32.dll_MulDiv
mov dword [ebp - 0x34], eax
mov byte [ebp - 0x30], 0
lea edx, [ebp - 0x3c]
mov eax, 0x5b94dc
mov ecx, 1
call fcn.00659050
mov eax, dword [ebp - 0x40]
call fcn.005b6d20
pop ecx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5b9346
lea eax, [ebp - 0x6c]
call fcn.00403880
lea eax, [ebp - 0x68]
mov edx, 2
call fcn.00403298
lea eax, [ebp - 0x40]
call fcn.00403274
lea eax, [ebp - 0x24]
mov edx, 6
call fcn.00403298
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.00403898
ret