Function at 0x403648
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff76c
sub dword [0x7d90b2], esi
mov dword [0x7d9090], ecx
mov dword [0x7d9098], ebx
cmp dword [0x7d9104], 0
jg 0x40367a
mov dword [0x7d9094], edi
mov dword [0x7d9092], ebx
jmp 0x403682
mov edx, dword [esp + 8]
mov dword [esp - 0xc], eax
xor eax, eax
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
test eax, eax
jne 0x4036c2
add dword [0x7d90b0], eax
mov dword [0x7d908e], edx
mov ebx, 0x13b
mov dword [0x7d9088], eax
mov word [0x7d90a4], 0xcfc
mov dword [0x7d9054], ecx
mov dword [0x7d90aa], ebx
mov byte [0x7d9033], 0xcc
mov dword [esp - 0x12], ecx
mov eax, 0x404308
mov dword [ebp - 0xc], eax
mov eax, 0x404318
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], 0x4015d8
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], 1
mov dword [ebp - 0x20], 0x1684f
mov eax, dword [ebp - 0x20]
push eax
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_CopyFileExW
test eax, eax
je 0x40373a
mov dword [0x7d90ed], 0x13995
add dword [0x7d90ce], ebx
mov dword [0x7d9066], esi
call fcn.004025a8
xor eax, eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
mov dword [0x7d905f], edi
lea edx, [0x7d905e]
mov dword [edx + 0x24], 0x31
mov dword [0x7d9045], 0x169c8
lea ebx, [0x7d9073]
sub dword [ebx + 0x10], 1
mov dword [0x7d90b5], edx
lea eax, [ebp - 0x1f3]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
test eax, eax
jne 0x4037b8
mov dword [0x7d90c0], edi
mov eax, dword [0x7d9062]
cmp dword [0x7d9080], edi
jl 0x4037a8
mov dword [0x7d907a], esi
mov dword [esp - 0x20], edx
mov dword [0x7d90f6], eax
xchg dword [0x7d9084], ecx
mov edi, dword [esp + 0x1c]
mov edi, 0x8f
mov dword [0x7d9082], 0x16c79
mov dword [esp - 0x10], edx
mov dword [0x7d9066], ebx
call fcn.00402f5c
mov dword [0x7d905f], edi
lea edx, [0x7d905e]
mov dword [edx + 0x24], 0x31
mov dword [0x7d9045], 0x169c8
lea ebx, [0x7d9073]
sub dword [ebx + 0x10], 1
mov dword [0x7d90b5], edx
push 1
push ebx
push eax
call fcn.00402f5c
xor eax, eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
test eax, eax
jne 0x403830
mov dword [0x7d90e9], esi
mov dword [0x7d902c], edx
mov dword [0x7d90be], esi
lea ebx, [0x7d9099]
mov dword [ebx], 0x3d
test ah, ah
jne 0x40385e
xchg dword [0x7d902e], edi
mov dword [0x7d903a], 0x1536f
mov dword [0x7d90ab], ecx
mov dword [0x7d9015], esi
jmp 0x40386a
mov dword [0x7d9085], eax
mov dword [0x7d9039], edx
mov dword [0x7d908a], ebx
mov dword [0x7d9093], eax
mov ax, word [ebp - 0x2a]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
test ax, ax
je 0x403897
mov dword [0x7d9059], ebx
mov ecx, dword [esp + 0x1c]
mov ecx, edi
mov dword [0x7d90f6], eax
sub ebx, dword [0x7d9044]
mov dword [0x7d9052], eax
mov dword [0x7d90a3], esi
push eax
mov eax, 0x7d9044
call fcn.00402f5c
mov byte [ebp - 0x101], 0
lea eax, [ebp - 0x2e5]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
test eax, eax
jne 0x4038f5
cmp esi, 0xffffffff
jne 0x4038de
mov dword [0x7d902d], edx
mov dword [0x7d90c8], eax
jmp 0x4038e4
xchg dword [0x7d901a], edi
mov dword [0x7d90cd], ecx
mov dword [0x7d90eb], ebx
mov edi, 0x1d8
inc byte [ebp - 0x101]
cmp byte [ebp - 0x101], 2
jne 0x4038bb
mov word [0x7d9012], 0xf338
mov dword [0x7d9100], 0x11320
test dh, dh
jne 0x40392b
mov dword [0x7d907c], 0x14d65
mov dword [esp - 0x10], ebx
jmp 0x403945
mov dword [0x7d90c5], edx
mov ecx, 0x132
mov dword [0x7d907c], edi
mov word [0x7d902b], 0xc8c5
mov dword [0x7d9085], ebx
mov ax, word [ebp - 0x2c]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
test ax, ax
je 0x40396c
inc byte [0x7d9069]
mov dword [0x7d90dd], edi
mov dword [0x7d9102], esi
mov dword [0x7d9106], eax
mov dword [0x7d90d4], 0x15e1d
mov dword [0x7d9075], eax
mov eax, 0x404324
mov dword [ebp - 0x30], eax
mov eax, 0x404340
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], 0x4015d8
xor eax, eax
mov dword [ebp - 0x3c], eax
xor eax, eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x44], 0x1faa1
mov eax, dword [ebp - 0x44]
push eax
mov eax, dword [ebp - 0x40]
push eax
mov eax, dword [ebp - 0x3c]
push eax
mov eax, dword [ebp - 0x38]
push eax
mov eax, dword [ebp - 0x34]
push eax
mov eax, dword [ebp - 0x30]
push eax
call sub.kernel32.dll_CopyFileExW
test eax, eax
jne 0x4039ee
mov byte [0x7d90d5], 0x9c
mov dword [0x7d9076], eax
mov dword [0x7d9070], ecx
mov dword [0x7d904f], ebx
mov dword [0x7d90d9], 0x11486
call fcn.004047b4
mov edi, 0x8f
mov dword [0x7d9082], 0x16c79
mov dword [esp - 0x10], edx
mov dword [0x7d9066], ebx
mov edx, 0x7d90b4
push 0
call fcn.004015ec
mov dword [0x7d90c4], esi
and dword [0x7d90f8], ecx
lea edi, [0x7d90be]
sub dword [edi + 0xc], 0xd5
mov dword [0x7d903f], ecx
mov byte [0x7d90b0], 0x63
mov eax, 0x40435c
mov dword [ebp - 0x48], eax
mov eax, 0x40437c
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x50], 0x4015d8
xor eax, eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x58], 1
mov dword [ebp - 0x5c], 0x19a9b
mov eax, dword [ebp - 0x5c]
push eax
mov eax, dword [ebp - 0x58]
push eax
mov eax, dword [ebp - 0x54]
push eax
mov eax, dword [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x4c]
push eax
mov eax, dword [ebp - 0x48]
push eax
call sub.kernel32.dll_CopyFileExW
test eax, eax
je 0x403aa8
mov dword [0x7d90ef], eax
mov dword [0x7d9087], esi
mov dword [0x7d90a1], ebx
lea edx, [0x7d908c]
mov dword [edx + 0x1c], 0x49
mov dword [0x7d9106], eax
mov dword [0x7d90d4], 0x15e1d
mov dword [0x7d9075], eax
call fcn.00402f5c
mov byte [ebp - 0x101], 0
mov dword [0x7d9056], esi
mov dword [esp - 0xc], eax
mov byte [0x7d90aa], 0x37
mov dword [0x7d9078], edi
mov eax, 0x404388
mov dword [ebp - 0x60], eax
mov eax, 0x4043a4
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x68], 0x4015d8
xor eax, eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x70], 1
mov dword [ebp - 0x74], 0x17a32
mov eax, dword [ebp - 0x74]
push eax
mov eax, dword [ebp - 0x70]
push eax
mov eax, dword [ebp - 0x6c]
push eax
mov eax, dword [ebp - 0x68]
push eax
mov eax, dword [ebp - 0x64]
push eax
mov eax, dword [ebp - 0x60]
push eax
call sub.kernel32.dll_CopyFileExW
test eax, eax
je 0x403b62
mov dword [0x7d90f5], 0x15cf8
and dword [0x7d908b], edx
cmp byte [0x7d908a], 0
jle 0x403b4f
mov dword [esp - 4], ecx
mov dword [0x7d90fe], ebx
mov dword [0x7d90a9], esi
mov dword [0x7d90bd], ebx
mov byte [0x7d90df], 0xa4
mov dword [0x7d9048], 0x176ec
mov dword [0x7d910a], 0x15024
sub dword [0x7d9044], ebx
inc byte [ebp - 0x101]
cmp byte [ebp - 0x101], 1
jne 0x403aca
xor eax, eax
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x78]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
test eax, eax
jne 0x403bb7
mov dword [0x7d903d], eax
mov dword [0x7d90ad], 0x11a4b
mov dword [0x7d9036], eax
sub ebx, dword [0x7d9044]
mov dword [0x7d9052], eax
mov dword [0x7d90a3], esi
call fcn.004015ec
add dword [0x7d90e8], ebx
mov dword [0x7d90d2], edi
cmp byte [0x7d9054], 0
jl 0x403bf3
mov dword [0x7d9098], esi
mov dword [0x7d9073], 0x12209
and dword [0x7d901d], esi
mov edx, 0x64
sub dword [0x7d906d], eax
mov ax, word [ebp - 0x7a]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
test ax, ax
jne 0x403c32
mov dword [esp - 0x24], edx
mov dword [0x7d907f], eax
mov dword [0x7d905a], edi
lea esi, [0x7d90b5]
add dword [esi + 0x28], 5
mov edi, 0xdc
call fcn.004025a8
xor eax, eax
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x80]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
test eax, eax
jne 0x403c68
mov dword [0x7d9089], ecx
add dword [0x7d9045], esi
lea ecx, [0x7d90da]
sub dword [ecx + 0x12], 0x88
mov dword [0x7d90b5], esi
call fcn.00402f5c
cmp eax, 0xffffffff
jne 0x403c84
mov dword [0x7d908a], ecx
lea eax, [0x7d9029]
sub dword [eax + 0x20], 0x59
jmp 0x403c8e
mov dword [0x7d902b], ebx
mov dword [esp - 0xc], edx
cmp word [0x7d904f], cx
jl 0x403caf
mov dword [0x7d90cb], 0x17cea
mov dword [0x7d9091], ecx
and dword [0x7d904f], eax
jmp 0x403cc7
mov dword [0x7d90a0], edi
lea eax, [0x7d90cc]
mov dword [eax], 0x5f
mov dword [0x7d901e], esi
mov ecx, 0x17e
mov dword [0x7d90d6], edi
xchg dword [0x7d909b], esi
xor eax, eax
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x84]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
test eax, eax
je 0x403d0c
mov dword [0x7d9066], eax
mov byte [0x7d9034], 0xc3
mov word [0x7d9079], 0xc87c
mov dword [0x7d90c6], esi
mov dword [0x7d90c7], 0x17938
and esi, dword [0x7d90ca]
mov dword [0x7d906c], ecx
mov eax, 0x4043cc
mov dword [ebp - 0x88], eax
mov eax, 0x4043e8
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x90], 0x4015d8
xor eax, eax
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x98], 1
mov dword [ebp - 0x9c], 0x10e7d
mov eax, dword [ebp - 0x9c]
push eax
mov eax, dword [ebp - 0x98]
push eax
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x90]
push eax
mov eax, dword [ebp - 0x8c]
push eax
mov eax, dword [ebp - 0x88]
push eax
call sub.kernel32.dll_CopyFileExW
lea eax, [ebp - 0x3d7]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
test eax, eax
jne 0x403db8
sub ebx, 0x30
mov dword [0x7d904b], 0x144b2
mov ebx, dword [esp + 8]
mov dword [0x7d9066], 0x15bf4
mov ax, word [ebp - 0x9e]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
test ax, ax
jne 0x403def
mov dword [0x7d90fe], ebx
lea edi, [0x7d9057]
mov dword [edi + 0x1c], eax
mov ebx, dword [0x7d9069]
mov dword [0x7d90f1], ecx
mov dword [0x7d9098], 0x174f8
mov dword [0x7d90de], edx
cmp word [0x7d90aa], 0
jge 0x403e0b
xchg dword [0x7d90e6], ebx
mov dword [0x7d906a], esi
mov ecx, dword [0x7d902c]
mov dword [0x7d9075], 0x10d32
mov dword [0x7d902e], eax
mov word [0x7d909b], 0x1c4
mov word [0x7d90f6], 0x6d99
add dword [0x7d9076], ecx
mov dword [esp - 4], ebx
cmp esi, 0xffffffff
jge 0x403e50
mov dword [0x7d908f], eax
mov dword [0x7d908d], edi
jmp 0x403e56
mov dword [0x7d90db], ebx
lea eax, [ebp - 0x4c9]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
test eax, eax
jne 0x403e77
mov word [0x7d901c], 0xf2db
add ecx, esi
mov dword [0x7d9020], eax
mov dword [0x7d9106], eax
mov dword [0x7d90d4], 0x15e1d
mov dword [0x7d9075], eax
xor eax, eax
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0xa4]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
test eax, eax
je 0x403eb7
mov dword [0x7d9087], ebx
mov dword [0x7d9034], esi
mov edi, 0x57
dec ebx
mov ax, word [ebp - 0xa6]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
call fcn.004015ec
add dword [0x7d90c5], ecx
mov dword [0x7d9014], edx
mov dword [esp - 0x28], eax
mov byte [0x7d90aa], 0x74
mov eax, 0x404408
mov dword [ebp - 0xac], eax
mov eax, 0x404424
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xb4], 0x4015d8
xor eax, eax
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0xbc], 1
mov dword [ebp - 0xc0], 0x161bc
mov eax, dword [ebp - 0xc0]
push eax
mov eax, dword [ebp - 0xbc]
push eax
mov eax, dword [ebp - 0xb8]
push eax
mov eax, dword [ebp - 0xb4]
push eax
mov eax, dword [ebp - 0xb0]
push eax
mov eax, dword [ebp - 0xac]
push eax
call sub.kernel32.dll_CopyFileExW
test eax, eax
jne 0x403f5e
inc byte [0x7d9072]
mov dword [esp - 8], edx
mov ecx, 0x19b
mov dword [0x7d90d3], ebx
add dword [0x7d90a8], edi
add dword [0x7d90ae], eax
mov dword [esp - 0xc], ebx
mov dword [esp - 0x12], ecx
lea eax, [ebp - 0x5bb]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
test eax, eax
je 0x403fa1
mov byte [0x7d90db], 0x28
xchg dword [0x7d90a8], esi
xchg dword [0x7d90ba], edx
and ecx, dword [0x7d90a8]
mov ax, word [ebp - 0xc2]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
sub edi, 0xe8
lea esi, [0x7d9084]
mov dword [esi], ecx
mov dword [0x7d9020], 0x11cea
lea eax, [ebp - 0x6ad]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
mov dword [0x7d908c], edi
mov dword [0x7d9095], ecx
mov dword [0x7d90dd], 0x1425b
call fcn.00402f5c
call fcn.004015ec
mov ax, word [ebp - 0xc4]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
test ax, ax
je 0x404025
mov dword [0x7d90d4], 0x13fee
mov esi, edi
mov dword [0x7d905e], eax
mov word [0x7d906d], 0x7b71
mov dword [0x7d90c8], edi
mov eax, 0x404450
mov dword [ebp - 0xc8], eax
mov eax, 0x40446c
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xd0], 0x4015d8
xor eax, eax
mov dword [ebp - 0xd4], eax
xor eax, eax
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xdc], 0x13a4d
mov eax, dword [ebp - 0xdc]
push eax
mov eax, dword [ebp - 0xd8]
push eax
mov eax, dword [ebp - 0xd4]
push eax
mov eax, dword [ebp - 0xd0]
push eax
mov eax, dword [ebp - 0xcc]
push eax
mov eax, dword [ebp - 0xc8]
push eax
call sub.kernel32.dll_CopyFileExW
test eax, eax
jne 0x4040cb
sub dword [0x7d9034], edx
mov word [0x7d9049], 0x8e65
sub dword [0x7d90b9], ebx
cmp esi, 0xffffffff
jne 0x4040bb
mov word [0x7d90fb], 0x5440
mov dword [0x7d90b1], eax
mov dword [0x7d909f], 0x15af7
mov dword [0x7d90f1], esi
call fcn.004047b4
lea eax, [ebp - 0x79f]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
test eax, eax
jne 0x4040fc
dec eax
mov dword [esp - 0x1c], ebx
xchg dword [0x7d9073], esi
mov word [0x7d9094], 0xc235
lea edi, [0x7d90cc]
add dword [edi], ebx
mov dword [0x7d9048], 0x176ec
mov dword [0x7d910a], 0x15024
sub dword [0x7d9044], ebx
mov dword [esp - 0xc], edx
mov esi, ebx
mov dword [0x7d9082], ebx
mov dword [0x7d903b], edx
mov word [0x7d9096], 0xe653
xor eax, eax
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xe0]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
test eax, eax
je 0x404167
mov dword [0x7d9093], eax
mov dword [0x7d90dc], edx
lea ecx, [0x7d9076]
and dword [ecx], 0xa3
and edi, 0xc5
call fcn.004047b4
xor eax, eax
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0xe4]
push eax
call sub.kernel32.dll_ConvertThreadToFiber
mov dword [0x7d9063], edx
mov dword [0x7d9052], 0x15dc2
mov dword [0x7d90d3], edx
add dword [0x7d90fe], esi
mov dword [0x7d909d], ecx
lea eax, [ebp - 0x891]
push eax
call sub.advapi32.dll_GetCurrentHwProfileW
test eax, eax
je 0x4041db
lea esi, [0x7d904f]
mov dword [esi], 0x35
mov dword [0x7d9017], ecx
mov dword [0x7d906d], 0x1568e
mov dword [0x7d9097], 0x12c8e
sub esi, 0x5f
mov ecx, 0x7d903b
push esi
mov eax, 0x7d90d6
call fcn.00402f5c
mov dword [0x7d9027], ecx
mov dword [0x7d90d2], 0x14da8
and esi, 0x77
mov ax, word [ebp - 0xe6]
push eax
call sub.kernel32.dll_GlobalDeleteAtom
call fcn.004025a8
mov edi, 0x8f
mov dword [0x7d9082], 0x16c79
mov dword [esp - 0x10], edx
mov dword [0x7d9066], ebx
call fcn.004015ec
mov dword [0x7d9048], 0x176ec
mov dword [0x7d910a], 0x15024
sub dword [0x7d9044], ebx
push eax
push edi
push ecx
call fcn.004015ec
mov dword [0x7d9083], ebx
mov byte [0x7d90db], 0x12
add dword [0x7d9096], eax
mov dword [0x7d90fb], edx
mov eax, 0x404478
mov dword [ebp - 0xec], eax
mov eax, 0x404480
mov dword [ebp - 0xf0], eax
mov dword [ebp - 0xf4], 0x4015d8
xor eax, eax
mov dword [ebp - 0xf8], eax
mov dword [ebp - 0xfc], 1
mov dword [ebp - 0x100], 0x1dba0
mov eax, dword [ebp - 0x100]
push eax
mov eax, dword [ebp - 0xfc]
push eax
mov eax, dword [ebp - 0xf8]
push eax
mov eax, dword [ebp - 0xf4]
push eax
mov eax, dword [ebp - 0xf0]
push eax
mov eax, dword [ebp - 0xec]
push eax
call sub.kernel32.dll_CopyFileExW
mov byte [0x7d9107], 0xe4
cmp cx, word [esp + 8]
jge 0x4042f5
dec dword [0x7d9021]
mov byte [0x7d9030], 0x90
mov dword [0x7d9021], ecx
sub esi, 0x36
mov dword [0x7d904d], eax
mov dword [0x7d9026], edx
mov esp, ebp
pop ebp
ret