Function at 0x140003fe0
Capabilities:
Copy file
Extract resource via kernel32 functions

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x2d8]
sub rsp, 0x3d8
mov rax, qword [section..data]
xor rax, rsp
mov qword [rbp + 0x2c0], rax
mov rbx, qword [rbp + 0x340]
mov r13, r9
mov qword [rbp - 0x70], r9
mov r14, r8
mov qword [rsp + 0x78], r8
mov qword [rbp - 0x80], rdx
mov r15, rcx
mov qword [rbp - 0x58], rcx
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessorNumber]
lea r12d, [r14 + r15]
mov rdx, r15
movzx ecx, al
mov r8d, r12d
mov dword [rsp + 0x64], eax
mov dword [rsp + 0x68], r12d
call fcn.14000a060
mov rdx, r13
xor ecx, ecx
mov rdi, rax
call qword [sym.imp.KERNEL32.dll_LoadResource]
mov qword [rbp + 0xb8], 0
mov qword [rbp + 0xb0], rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov ecx, r13d
imul ecx, r15d
or rsi, 0xffffffffffffffff
mov qword [rbp + 0xc0], rax
mov dword [rsp + 0x70], ecx
mov rax, rsi
nop
inc rax
cmp byte [rdi + rax], 0
jne 0x140004090
imul eax, r15d
mov qword [rbp + 0xd0], r13
add eax, ecx
mov dword [rbp + 0xc8], eax
mov rax, rsi
nop
inc rax
cmp byte [rdi + rax], 0
jne 0x1400040b0
mov ecx, r15d
sub ecx, r12d
sub ecx, eax
mov rax, rsi
inc rax
cmp byte [rbx + rax], 0
jne 0x1400040c4
mov edx, dword [rbp - 0x80]
movsx r13, byte [rsp + 0x64]
add ecx, eax
mov dword [rbp + 0xd8], ecx
mov qword [rbp + 0xe0], r14
mov rcx, rsi
imul edx, r14d
mov dword [rbp - 0x40], edx
nop
inc rcx
cmp byte [rbx + rcx], 0
jne 0x1400040f0
imul ecx, dword [rbp - 0x70]
mov eax, r15d
imul eax, edx
add ecx, eax
mov rax, rsi
sub ecx, r13d
sub ecx, r12d
nop
inc rax
cmp byte [rdi + rax], 0
jne 0x140004110
sub ecx, eax
mov qword [rbp + 0xf0], 0
mov r14, rsi
mov dword [rbp + 0xe8], ecx
nop
inc r14
cmp byte [rbx + r14], 0
jne 0x140004130
lea rax, str.prompt
add r14b, r12b
mov qword [rbp - 0x30], rax
add r14b, r15b
call qword [sym.imp.USER32.dll_GetForegroundWindow]
lea rcx, [rbp + 0x180]
mov edx, 0x104
mov qword [rbp - 0x20], r15
mov r12, rax
mov qword [rbp - 0x28], rax
call qword [sym.imp.KERNEL32.dll_FindFirstVolumeA]
movups xmm0, xmmword [rbp - 0x30]
mov qword [rbp - 0x18], rax
lea rax, [rbp]
mov qword [rsp + 0x30], 0
movaps xmmword [rbp], xmm0
movaps xmm0, xmmword [rbp + 0xb0]
movups xmm1, xmmword [rbp - 0x20]
movaps xmmword [rbp + 0x30], xmm0
movaps xmm0, xmmword [rbp + 0xd0]
mov qword [rsp + 0x28], rax
lea r9, str.world
lea r8, [rbp + 0x30]
movaps xmmword [rbp + 0x10], xmm1
movaps xmm1, xmmword [rbp + 0xc0]
movaps xmmword [rbp + 0x50], xmm0
movsd xmm0, qword [rbp + 0xf0]
lea rdx, [0x1400ed3b4]
lea rcx, [rbp + 0x150]
movsd qword [rbp + 0x70], xmm0
mov byte [rsp + 0x20], r14b
movaps xmmword [rbp + 0x40], xmm1
movaps xmm1, xmmword [rbp + 0xe0]
movaps xmmword [rbp + 0x60], xmm1
call fcn.140010fb0
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x100], xmm0
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rbp + 0x110], xmm1
movups xmmword [rbp + 0x120], xmm0
cmp r14b, byte [rsp + 0x64]
jne 0x14000422b
mov r8, qword [rsp + 0x78]
lea rcx, str.page
mov rdx, r8
call fcn.140011450
movzx eax, byte [rbp - 0x80]
mov rcx, rsi
imul byte [rsp + 0x78]
movzx edx, al
mov byte [rsp + 0x75], al
nop dword [rax]
inc rcx
cmp byte [rdi + rcx], 0
jne 0x140004240
movzx eax, r12b
movzx r12d, r15b
lea r8, str.numeracy
add r12b, r12b
imul byte [rbp + 0x120]
sub r12b, al
sub r12b, byte [rbp - 0x70]
add r12b, byte [rbp + 0xc0]
add r12b, dl
lea rdx, str.aftershave
add r12b, r14b
sub r12b, cl
lea rcx, str.cord
add r12b, 5
movzx r9d, r12b
call fcn.140016e90
mov r8, rax
mov qword [rbp - 0x68], rax
cmp r12b, r14b
jae 0x140004ae1
mov ecx, dword [rsp + 0x68]
mov rax, qword [rbp - 0x80]
xor r8d, r8d
mov qword [rsp + 0x58], r8
add eax, ecx
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], r8
movzx edx, r12b
mov qword [rsp + 0x40], r13
imul eax, r15d
sub eax, dword [rsp + 0x78]
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], ecx
add eax, 0xffffffe0
mov dword [rsp + 0x28], ecx
mov dword [rbp - 0x78], edx
add eax, dword [rbp + 0xb0]
mov r9d, edx
mov dword [rsp + 0x20], ecx
add eax, edx
lea r8, str.aftershave
lea rdx, str.numeracy
mov dword [rsp + 0x6c], eax
movsx eax, byte [rsp + 0x64]
mov ecx, eax
call qword [sym.imp.USER32.dll_CreateWindowExA]
mov r8d, dword [rbp - 0x78]
movzx edx, r14b
mov r14, qword [rbp - 0x68]
mov qword [rbp + 0x30], rax
lea eax, [r13*2 + 4]
lea ecx, [r8*8]
mov r13d, r15d
mov dword [rbp - 0x38], edx
sub r13d, eax
mov rax, qword [rsp + 0x78]
sub r13d, dword [rbp - 0x80]
sub r13d, eax
sub r13d, ecx
mov ecx, dword [rbp + 0x110]
sub r13d, r14d
sub r13d, dword [rbp + 0x120]
imul ecx, dword [rbp - 0x18]
add r13d, dword [rbp - 0x28]
imul ecx, edx
add r13d, edx
inc eax
mov dword [rbp + 0x38], r13d
imul eax, r15d
add ecx, eax
mov eax, dword [rsp + 0x68]
sub ecx, dword [rbp - 0x70]
add eax, 0xffffffdb
add ecx, r8d
add eax, ecx
mov dword [rbp + 0x3c], eax
lea rax, str.waiter
mov qword [rbp + 0x40], rax
call qword [sym.imp.USER32.dll_GetForegroundWindow]
mov r15, rsi
mov qword [rbp + 0x48], rax
nop dword [rax]
inc r15
cmp byte [rbx + r15], 0
jne 0x1400043a0
movsxd rdx, dword [rsp + 0x64]
mov eax, 0xa
movsx rcx, dl
mov edx, 0x1bf
sub eax, ecx
xor ecx, ecx
sub eax, r14d
lea r8d, [rcx + 0xf]
add r15d, eax
lea eax, [r14 + r14]
mov r14, qword [rbp - 0x58]
sub eax, dword [rbp + 0x100]
mov dword [rbp + 0x50], r15d
shl eax, 2
sub eax, dword [rsp + 0x70]
add eax, dword [rbp - 0x80]
add eax, r14d
mov dword [rbp + 0x54], eax
mov rax, qword [rsp + 0x78]
mov qword [rbp + 0x58], rax
call qword [sym.imp.KERNEL32.dll_FindResourceA]
mov qword [rbp + 0x60], rax
lea rax, str.c3a1
mov qword [rbp + 0x68], rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov rcx, rsi
mov qword [rbp - 0x50], rax
nop dword [rax + rax]
inc rcx
cmp byte [rbx + rcx], 0
jne 0x140004420
imul ecx, dword [rbp - 0x80]
mov r8d, dword [rsp + 0x64]
mov eax, 1
movsx edx, r8b
sub eax, edx
imul ecx, dword [rbp - 0x70]
imul eax, r14d
add ecx, eax
mov rax, rsi
nop word [rax + rax]
inc rax
cmp byte [rdi + rax], 0
jne 0x140004450
add eax, eax
movzx edx, r12b
mov r8d, 0x140
sub ecx, eax
lea eax, [rdx*8]
xor edx, edx
sub ecx, eax
sub ecx, dword [rbp - 0x68]
mov dword [rbp], ecx
lea rcx, [rbp + 0x180]
call fcn.1400e27d0
lea rdx, [rbp + 0x180]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov r8d, dword [rsp + 0x6c]
mov dword [rbp + 0x18], 0x20
mov qword [rbp + 8], rax
lea rax, str.c0ret
lea r9, [rbp + 0xb0]
movups xmm0, xmmword [rbp]
mov qword [rbp + 0x10], rax
lea rax, [rbp + 0x80]
movaps xmmword [rbp + 0x80], xmm0
movaps xmm0, xmmword [rbp + 0x30]
mov qword [rsp + 0x30], rax
mov rax, qword [rbp - 0x50]
movups xmm1, xmmword [rbp + 0x10]
movaps xmmword [rbp + 0xb0], xmm0
movaps xmm0, xmmword [rbp + 0x50]
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x78]
movaps xmmword [rbp + 0x90], xmm1
movaps xmm1, xmmword [rbp + 0x40]
movaps xmmword [rbp + 0xd0], xmm0
mov qword [rsp + 0x20], rax
movaps xmmword [rbp + 0xc0], xmm1
movaps xmm1, xmmword [rbp + 0x60]
movaps xmmword [rbp + 0xe0], xmm1
call fcn.140010870
mov rcx, qword [rbp - 0x70]
mov r14, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
mov ecx, dword [rsp + 0x6c]
mov qword [rbp - 0x48], rax
movzx eax, cl
shl al, 2
lea edx, [rax + rcx]
mov rcx, rsi
mov byte [rsp + 0x74], dl
inc rcx
cmp byte [rbx + rcx], 0
jne 0x140004541
movzx eax, byte [rbp - 0x58]
inc cl
imul cl
movzx ecx, al
movzx eax, byte [rbp - 0x68]
shl al, 6
add cl, al
mov rax, rsi
sub cl, dl
sub cl, byte [rbp + 0x38]
inc rax
cmp byte [r14 + rax], 0
jne 0x140004566
add al, 8
add cl, al
add cl, byte [rbp]
add cl, byte [rsp + 0x68]
add cl, byte [rbp - 0x70]
add cl, byte [rbp - 0x80]
add cl, byte [rbp - 0x50]
add cl, r12b
mov byte [rsp + 0x60], cl
call qword [sym.imp.USER32.dll_GetForegroundWindow]
movzx edx, r12b
mov qword [rbp - 0x60], rax
mov eax, dword [rsp + 0x68]
lea eax, [rax + rax*4]
lea ecx, [rax*2 + 1]
mov eax, dword [rbp - 0x68]
imul ecx, dword [rbp - 0x58]
imul eax, edx
add ecx, eax
sub ecx, dword [rsp + 0x78]
sub ecx, r13d
mov r13d, dword [rbp - 0x40]
add ecx, dword [rbp - 0x70]
lea eax, [r13 + 0x3d]
add ecx, dword [rbp + 8]
add ecx, dword [rsp + 0x6c]
add eax, ecx
mov dword [rbp - 0x78], eax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9, qword [rbp - 0x60]
movzx r8d, byte [rsp + 0x60]
mov edx, dword [rbp - 0x48]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x70], eax
lea rax, str.coil
lea rcx, [rbp + 0x80]
mov qword [rsp + 0x28], rax
mov eax, dword [rbp - 0x78]
mov dword [rsp + 0x20], eax
call fcn.140011d30
lea rdx, str.demur
xor ecx, ecx
movups xmm0, xmmword [rax]
movsd xmm1, qword [rax + 0x10]
movups xmmword [rbp + 0x138], xmm0
movsd qword [rbp + 0x148], xmm1
call fcn.14000d680
xor ecx, ecx
mov edx, 0xc5
mov qword [rbp - 0x40], rax
mov rax, qword [rbp - 0x80]
lea r8d, [rcx + 0x1c]
mov qword [rbp + 0x80], rax
mov rax, qword [rsp + 0x78]
mov qword [rbp + 0x88], rax
call qword [sym.imp.KERNEL32.dll_FindResourceA]
mov qword [rbp + 0x90], rax
mov rax, rsi
inc rax
cmp byte [rdi + rax], 0
jne 0x140004666
imul eax, dword [rbp - 0x38]
mov edx, dword [rsp + 0x64]
movsx ecx, dl
movzx edx, r12b
imul eax, ecx
mov ecx, dword [rsp + 0x6c]
imul eax, dword [rsp + 0x68]
imul ecx, edx
shl ecx, 4
sub ecx, eax
mov eax, dword [rbp + 0x138]
imul eax, dword [rsp + 0x70]
add eax, 0xe
lea edx, [rax + rcx*2]
mov rcx, rsi
sub edx, dword [rbp - 0x70]
sub edx, dword [rbp + 0x128]
sub edx, r13d
inc rcx
cmp byte [rbx + rcx], 0
jne 0x1400046b2
mov r13, qword [rbp - 0x58]
lea eax, [rdx + r13]
mov edx, 0x15
add ecx, eax
lea r8d, [rdx + 8]
add ecx, dword [rbp - 0x60]
mov dword [rbp + 0x98], ecx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_FindResourceA]
mov qword [rbp + 0xa0], rax
mov rax, rsi
nop dword [rax]
cmp byte [rdi + rax + 1], 0
lea rax, [rax + 1]
jne 0x1400046f0
movsx r10d, byte [rsp + 0x60]
mov r9, qword [rsp + 0x78]
lea eax, [rax + rax*4]
lea edx, [rax*2 + 1]
mov eax, r10d
mov rcx, rsi
imul eax, dword [rsp + 0x70]
imul eax, dword [rbp - 0x48]
imul edx, dword [rbp - 0x70]
sub edx, eax
mov eax, dword [rbp + 0x60]
imul eax, dword [rbp + 8]
add edx, eax
sub edx, r9d
sub edx, dword [rbp + 0x140]
inc rcx
cmp byte [rbx + rcx], 0
jne 0x140004737
mov r8, qword [rbp - 0x40]
lea eax, [rdx + r13]
mov rdx, rsi
nop dword [rax + rax]
inc rdx
cmp byte [r8 + rdx], 0
jne 0x140004750
add ecx, eax
mov rax, rsi
nop
inc rax
cmp byte [r14 + rax], 0
jne 0x140004760
mov r11d, dword [rsp + 0x68]
add ecx, edx
add eax, 0xa
add eax, ecx
mov rdx, rsi
add eax, dword [rsp + 0x6c]
add eax, r11d
mov dword [rbp + 0xa8], eax
inc rdx
cmp byte [rbx + rdx], 0
jne 0x140004786
mov rax, rsi
inc rax
cmp byte [rdi + rax], 0
jne 0x140004792
mov ecx, dword [rbp - 0x50]
imul edx, eax
movzx eax, r12b
imul ecx, r15d
imul ecx, eax
mov eax, 2
sub eax, ecx
lea ecx, [rax + rax*4]
mov eax, dword [rbp - 0x60]
imul eax, dword [rbp - 0x78]
imul eax, dword [rbp - 0x48]
add ecx, eax
mov eax, dword [rbp - 0x70]
imul eax, r9d
add ecx, eax
sub ecx, edx
sub ecx, dword [rbp - 0x80]
add ecx, r13d
add ecx, dword [rbp - 0x18]
mov dword [rbp + 0xac], ecx
mov rcx, rsi
inc rcx
cmp byte [rdi + rcx], 0
jne 0x1400047e0
movzx r15d, byte [rsp + 0x6c]
movzx eax, r11b
imul cl
movzx edx, al
movzx eax, r12b
imul byte [rbp + 0x128]
movzx ecx, al
shl al, 2
add cl, al
movzx eax, r10b
imul byte [rsp + 0x70]
add al, al
add cl, al
mov rax, rsi
add cl, r9b
add cl, cl
sub r15b, cl
sub r15b, dl
sub r15b, byte [rbp - 0x80]
sub r15b, byte [rbp - 0x50]
nop dword [rax]
inc rax
cmp byte [r8 + rax], 0
jne 0x140004830
sub r15b, al
mov rax, rsi
inc rax
cmp byte [r14 + rax], 0
jne 0x140004840
movups xmm0, xmmword [rbp + 0x80]
movups xmm1, xmmword [rbp + 0x90]
mov rcx, qword [rbp - 0x60]
add r15b, 0x23
lea rdx, [rbp - 0x30]
add r15b, al
movzx r8d, r15b
movaps xmmword [rbp - 0x30], xmm0
movaps xmmword [rbp - 0x20], xmm1
movups xmm0, xmmword [rbp + 0xa0]
movaps xmmword [rbp - 0x10], xmm0
call fcn.14000fb00
mov rcx, rsi
mov rdx, rax
nop dword [rax]
inc rcx
cmp byte [r14 + rcx], 0
jne 0x140004890
movzx eax, byte [rbp]
imul cl
movzx ecx, al
movzx eax, byte [rsp + 0x78]
imul cl
movzx r9d, al
movzx eax, byte [rbp - 0x60]
add al, al
add r9b, al
mov rax, rsi
sub r9b, byte [rbp + 0x110]
sub r9b, byte [rbp - 0x48]
sub r9b, byte [rbp + 0xac]
sub r9b, byte [rbp - 0x68]
add r9b, byte [rsp + 0x70]
add r9b, byte [rsp + 0x68]
add r9b, r13b
add r9b, r12b
add r9b, byte [rsp + 0x75]
add r9b, byte [rsp + 0x64]
nop word [rax + rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x1400048f0
sub r9b, al
mov rax, rsi
nop
inc rax
cmp byte [rbx + rax], 0
jne 0x140004900
add r9b, 0xd
lea r8, str.c1a0
lea rdx, str.baobab
lea rcx, str.c3a2
add r9b, al
call fcn.140016e90
mov qword [rbp - 0x38], rax
call fcn.140013f10
xor ecx, ecx
lea r8d, [rcx + 0x1b]
mov edx, 0x2b6
mov qword [rbp - 0x40], rax
call qword [sym.imp.KERNEL32.dll_FindResourceA]
mov rdx, qword [rbp - 0x38]
mov rcx, rsi
mov qword [rbp + 0x130], rax
movzx eax, dl
add al, al
add dl, al
add dl, dl
mov qword [rbp - 0x38], rdx
inc rcx
cmp byte [rbx + rcx], 0
jne 0x140004963
movzx eax, byte [rsp + 0x64]
imul cl
movzx ecx, al
movzx eax, r13b
sub cl, byte [rsp + 0x68]
imul cl
movzx r13d, al
movzx eax, byte [rbp - 0x68]
imul byte [rsp + 0x74]
sub r13b, al
mov eax, dword [rbp + 0x120]
shl al, 2
add r13b, al
movzx eax, r12b
shl al, 2
lea ecx, [rax + r12]
add cl, cl
add r13b, cl
sub r13b, byte [rbp - 0x48]
sub r13b, dl
sub r13b, byte [rsp + 0x78]
sub r13b, byte [rbp - 0x60]
sub r13b, r15b
add r13b, byte [rbp - 0x78]
add r13b, byte [rsp + 0x70]
add r13b, byte [rbp - 0x80]
add r13b, byte [rbp - 0x40]
add r13b, byte [rbp - 0x50]
add r13b, byte [rsp + 0x60]
call qword [sym.imp.USER32.dll_GetActiveWindow]
mov r8d, dword [rsp + 0x68]
mov qword [rbp - 0x30], rax
lea rax, str.co_producer
lea rdx, str.aftershave
lea rcx, str.c1a0
mov qword [rbp - 0x28], rax
call qword [sym.imp.KERNEL32.dll_CopyFileA]
mov dword [rbp - 0x10], 0x40
mov dword [rbp - 0x20], eax
lea rax, str.c1a2
mov qword [rbp - 0x18], rax
call qword [sym.imp.USER32.dll_GetForegroundWindow]
mov rcx, rsi
movups xmm0, xmmword [rbp - 0x30]
movups xmm1, xmmword [rbp - 0x20]
mov qword [rbp - 8], rax
movaps xmmword [rbp], xmm0
movaps xmmword [rbp + 0x10], xmm1
movups xmm0, xmmword [rbp - 0x10]
movaps xmmword [rbp + 0x20], xmm0
inc rcx
cmp byte [r14 + rcx], 0
jne 0x140004a40
mov r10, qword [rbp - 0x68]
mov r14d, dword [rsp + 0x64]
movzx eax, r15b
imul byte [rbp + 0x148]
mov r15, qword [rbp - 0x58]
add cl, al
movzx eax, byte [rbp - 0x60]
imul cl
movzx edx, al
shl al, 2
add dl, al
movzx eax, byte [rsp + 0x6c]
imul byte [rbp + 0x50]
movzx ecx, al
movzx eax, r10b
imul cl
shl al, 3
add dl, al
movzx eax, r14b
imul r15b
add dl, al
mov rax, qword [rbp - 0x38]
sub dl, al
mov rax, rsi
nop dword [rax]
inc rax
cmp byte [rdi + rax], 0
jne 0x140004aa0
mov rcx, qword [rbp + 0x108]
sub dl, al
mov rax, rsi
inc rax
cmp byte [rcx + rax], 0
jne 0x140004ab5
sub dl, al
lea r9, [rbp]
movzx r8d, r13b
mov byte [rsp + 0x20], dl
mov rdx, qword [rbp + 0x130]
mov rcx, r10
call fcn.1400097c0
mov r8, qword [rbp - 0x68]
jmp 0x140004ae6
mov r14d, dword [rsp + 0x64]
mov rcx, rsi
nop dword [rax]
inc rcx
cmp byte [rdi + rcx], 0
jne 0x140004af0
movzx eax, byte [rsp + 0x68]
inc r14b
imul cl
movzx edx, al
movzx eax, r15b
imul r14b
movzx ecx, al
movzx eax, r12b
imul r8b
sub cl, al
add dl, cl
sub dl, byte [rbp - 0x80]
sub dl, 4
add dl, byte [rbp - 0x70]
add dl, byte [rsp + 0x78]
add dl, byte [rbp + 0x128]
nop
cmp byte [rbx + rsi + 1], 0
lea rsi, [rsi + 1]
jne 0x140004b30
lea eax, [rsi + rdx]
mov rcx, qword [rbp + 0x2c0]
xor rcx, rsp
call fcn.1400dd340
add rsp, 0x3d8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret