Function at 0x409fe0
Capabilities:
Copy file
Create a process with modified i/o handles and window
Create process on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44fe03
mov eax, dword fs:[0]
push eax
sub esp, 0x59c
mov eax, dword [0x462080]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 0xc]
lea eax, [ebp - 0x49c]
push 0x2c
push 0
push eax
call fcn.0042ca40
mov dword [ebp - 0x49c], 0
mov dword [ebp - 0x498], 0
mov dword [ebp - 0x494], 0
mov dword [ebp - 4], 0
push 0x40
mov dword [ebp - 0x490], 0
mov dword [ebp - 0x48c], 0
call fcn.0042aef0
xorps xmm0, xmm0
add esp, 0x10
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
mov dword [ebp - 0x490], eax
xor eax, eax
movups xmmword [ebp - 0x488], xmm0
mov dword [ebp - 0x478], 0
mov dword [ebp - 0x474], 7
mov word [ebp - 0x488], ax
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x554]
push 6
push str.action
movups xmmword [ebp - 0x554], xmm0
mov dword [ebp - 0x544], eax
mov dword [ebp - 0x540], eax
call fcn.00402100
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x428]
push 2
xorps xmm0, xmm0
mov dword [ebp - 0x418], 0
push 0x45b590
movups xmmword [ebp - 0x428], xmm0
mov dword [ebp - 0x414], 0
call fcn.00402100
push 1
lea eax, [ebp - 0x554]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x49c]
call fcn.00401370
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x414]
cmp ecx, 7
jbe 0x40a161
mov edx, dword [ebp - 0x428]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a157
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x540]
cmp ecx, 7
jbe 0x40a1a5
mov edx, dword [ebp - 0x554]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a19b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
push 7
xorps xmm0, xmm0
mov dword [ebp - 0x544], 0
push str.service
lea ecx, [ebp - 0x554]
mov dword [ebp - 0x540], 0
movups xmmword [ebp - 0x554], xmm0
call fcn.00402100
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x428]
push 2
xorps xmm0, xmm0
mov dword [ebp - 0x418], 0
push 0x45b5a8
movups xmmword [ebp - 0x428], xmm0
mov dword [ebp - 0x414], 0
call fcn.00402100
push 1
lea eax, [ebp - 0x554]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x49c]
call fcn.00401370
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x414]
cmp ecx, 7
jbe 0x40a26c
mov edx, dword [ebp - 0x428]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a262
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x540]
cmp ecx, 7
jbe 0x40a2b0
mov edx, dword [ebp - 0x554]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a2a6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
push 3
xorps xmm0, xmm0
mov dword [ebp - 0x544], 0
push 0x45b5b0
lea ecx, [ebp - 0x554]
mov dword [ebp - 0x540], 0
movups xmmword [ebp - 0x554], xmm0
call fcn.00402100
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x428]
push 2
xorps xmm0, xmm0
mov dword [ebp - 0x418], 0
push 0x45b5b8
movups xmmword [ebp - 0x428], xmm0
mov dword [ebp - 0x414], 0
call fcn.00402100
push 0
lea eax, [ebp - 0x554]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x49c]
call fcn.00401370
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x414]
cmp ecx, 7
jbe 0x40a377
mov edx, dword [ebp - 0x428]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a36d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x540]
cmp ecx, 7
jbe 0x40a3bb
mov edx, dword [ebp - 0x554]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a3b1
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
push esi
push dword [ebp + 8]
lea ecx, [ebp - 0x49c]
call fcn.004015a0
test al, al
jne 0x40a403
cmp dword [ebp - 0x474], 7
lea edx, [ebp - 0x488]
push dword [ebp - 0x478]
cmova edx, dword [ebp - 0x488]
mov ecx, 0x463f30
call fcn.00410f40
push eax
call fcn.0040fb20
add esp, 8
or esi, 0xffffffff
jmp 0x40b117
push 6
xorps xmm0, xmm0
mov dword [ebp - 0x544], 0
push str.action
lea ecx, [ebp - 0x554]
mov dword [ebp - 0x540], 0
movups xmmword [ebp - 0x554], xmm0
call fcn.00402100
lea eax, [ebp - 0x554]
mov byte [ebp - 4], 8
push eax
lea ecx, [ebp - 0x490]
call fcn.00401c30
push eax
lea ecx, [ebp - 0x458]
call fcn.00401e10
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x540]
cmp ecx, 7
jbe 0x40a499
mov edx, dword [ebp - 0x554]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a48f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1a7
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x544], 0
push 7
xorps xmm0, xmm0
mov dword [ebp - 0x540], 7
push str.service
lea ecx, [ebp - 0x440]
mov word [ebp - 0x554], ax
movups xmmword [ebp - 0x440], xmm0
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x42c], eax
call fcn.00402100
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0xb
push eax
lea ecx, [ebp - 0x490]
call fcn.00401c30
push eax
lea ecx, [ebp - 0x4b4]
call fcn.00401e10
mov byte [ebp - 4], 0xd
mov ecx, dword [ebp - 0x42c]
cmp ecx, 7
jbe 0x40a544
mov edx, dword [ebp - 0x440]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a53a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1ac
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x430], 0
mov word [ebp - 0x440], ax
lea eax, [ebp - 0x410]
push 0x200
push eax
push 0
mov dword [ebp - 0x42c], 7
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
xorps xmm0, xmm0
mov dword [ebp - 0x460], 0
lea ecx, [ebp - 0x410]
mov dword [ebp - 0x45c], 0
movups xmmword [ebp - 0x470], xmm0
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a5a0
sub ecx, edx
lea eax, [ebp - 0x410]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x470]
call fcn.00402100
mov byte [ebp - 4], 0xe
lea edx, [ebp - 0x470]
mov edi, dword [ebp - 0x45c]
cmp edi, 7
mov esi, dword [ebp - 0x460]
cmova edx, dword [ebp - 0x470]
test esi, esi
je 0x40a613
or ecx, 0xffffffff
lea eax, [esi - 1]
cmp eax, ecx
cmovb ecx, eax
cmp word [edx + ecx*2], 0x5c
lea ecx, [edx + ecx*2]
je 0x40a60d
nop dword [eax + eax]
cmp ecx, edx
je 0x40a613
sub ecx, 2
cmp word [ecx], 0x5c
jne 0x40a600
sub ecx, edx
sar ecx, 1
jmp 0x40a616
or ecx, 0xffffffff
cmp esi, ecx
mov dword [ebp - 0x4bc], 0
lea eax, [ebp - 0x470]
mov dword [ebp - 0x4b8], 0
cmovb ecx, esi
xorps xmm0, xmm0
cmp edi, 7
push ecx
cmova eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x4cc]
push eax
movups xmmword [ebp - 0x4cc], xmm0
call fcn.00402100
mov byte [ebp - 4], 0xf
lea edi, [ebp - 0x458]
mov eax, dword [ebp - 0x444]
cmp eax, 7
mov ecx, dword [ebp - 0x458]
mov edx, dword [ebp - 0x448]
cmova edi, ecx
cmp edx, 6
jne 0x40ad19
mov esi, edx
mov ecx, str.update
test esi, esi
je 0x40a6a5
sub edi, ecx
nop
mov ax, word [ecx + edi]
cmp ax, word [ecx]
jne 0x40ad0d
add ecx, 2
sub esi, 1
jne 0x40a690
push 3
xorps xmm0, xmm0
mov dword [ebp - 0x544], 0
push 0x45b5b0
lea ecx, [ebp - 0x554]
mov dword [ebp - 0x540], 0
movups xmmword [ebp - 0x554], xmm0
call fcn.00402100
lea eax, [ebp - 0x554]
push eax
lea eax, [ebp - 0x534]
push eax
lea ecx, [ebp - 0x490]
call fcn.00402080
mov edi, dword [ebp - 0x540]
mov esi, dword [ebp - 0x554]
mov eax, dword [eax + 8]
cmp byte [eax + 0xd], 0
jne 0x40a73b
cmp dword [eax + 0x24], 7
lea edx, [eax + 0x10]
jbe 0x40a70f
mov edx, dword [eax + 0x10]
push dword [eax + 0x20]
cmp edi, 7
lea ecx, [ebp - 0x554]
push edx
mov edx, dword [ebp - 0x544]
cmova ecx, esi
call fcn.00402dc0
shr eax, 0x1f
add esp, 8
mov byte [ebp - 0x539], 1
test al, al
je 0x40a742
mov byte [ebp - 0x539], 0
cmp edi, 7
jbe 0x40a776
lea ecx, [edi*2 + 2]
mov eax, esi
cmp ecx, 0x1000
jb 0x40a76c
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push esi
call fcn.0042af20
add esp, 8
cmp byte [ebp - 0x539], 0
je 0x40acf2
push 3
xorps xmm0, xmm0
mov dword [ebp - 0x544], 0
push 0x45b5b0
lea ecx, [ebp - 0x554]
mov dword [ebp - 0x540], 0
movups xmmword [ebp - 0x554], xmm0
call fcn.00402100
lea eax, [ebp - 0x554]
mov byte [ebp - 4], 0x10
push eax
lea ecx, [ebp - 0x490]
call fcn.00401c30
push eax
lea ecx, [ebp - 0x428]
call fcn.00401e10
mov byte [ebp - 4], 0x12
mov ecx, dword [ebp - 0x540]
cmp ecx, 7
jbe 0x40a819
mov edx, dword [ebp - 0x554]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40a80f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1b1
push ecx
push edx
call fcn.0042af20
add esp, 8
mov ecx, dword [ebp - 0x4bc]
xor eax, eax
mov word [ebp - 0x554], ax
mov esi, 0x7ffffffe
mov eax, esi
mov dword [ebp - 0x544], 0
sub eax, ecx
mov dword [ebp - 0x540], 7
cmp eax, 4
jb 0x40b1b6
cmp dword [ebp - 0x4b8], 7
lea eax, [ebp - 0x4cc]
push 4
cmova eax, dword [ebp - 0x4cc]
push str.upd
push ecx
push eax
push ecx
push dword [ebp - 0x558]
lea ecx, [ebp - 0x440]
call fcn.00402560
mov byte [ebp - 4], 0x13
lea ecx, [ebp - 0x470]
cmp dword [ebp - 0x45c], 7
lea eax, [ebp - 0x440]
push 0
cmova ecx, dword [ebp - 0x470]
cmp dword [ebp - 0x42c], 7
cmova eax, dword [ebp - 0x440]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x40ac3c
push 0x40
lea eax, [ebp - 0x524]
mov dword [ebp - 0x528], 0x44
push 0
push eax
call fcn.0042ca40
mov ecx, dword [ebp - 0x4a4]
add esp, 0xc
sub esi, ecx
cmp esi, 0xe
jb 0x40b1bb
cmp dword [ebp - 0x4a0], 7
lea eax, [ebp - 0x4b4]
push ecx
cmova eax, dword [ebp - 0x4b4]
push eax
push 0xe
push str._a_iupdate__s
push ecx
push dword [ebp - 0x558]
lea ecx, [ebp - 0x5a8]
call fcn.00402560
push 0x45b5e0
lea edx, [ebp - 0x5a8]
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x578]
call fcn.00401f40
add esp, 4
mov esi, eax
mov byte [ebp - 4], 0x15
lea ecx, [ebp - 0x428]
mov edi, dword [ebp - 0x414]
cmp edi, 7
mov edx, dword [esi + 0x10]
cmova ecx, dword [ebp - 0x428]
mov eax, dword [esi + 0x14]
sub eax, edx
mov dword [ebp - 0x55c], edx
mov edx, dword [ebp - 0x418]
mov dword [ebp - 0x560], ecx
cmp edx, eax
ja 0x40a9c1
cmp dword [esi + 0x14], 7
mov ecx, dword [ebp - 0x55c]
mov dword [ebp - 0x55c], esi
lea eax, [edx + ecx]
mov dword [ebp - 0x558], eax
mov dword [esi + 0x10], eax
mov eax, esi
jbe 0x40a997
mov eax, dword [esi]
mov dword [ebp - 0x55c], eax
lea ecx, [eax + ecx*2]
lea eax, [edx + edx]
push eax
push dword [ebp - 0x560]
push ecx
call fcn.0042c4c0
mov eax, dword [ebp - 0x55c]
add esp, 0xc
mov ecx, dword [ebp - 0x558]
xor edx, edx
mov word [eax + ecx*2], dx
jmp 0x40a9e0
push edx
push ecx
mov byte [ebp - 0x558], 0
mov ecx, esi
push dword [ebp - 0x558]
push edx
call fcn.00402b30
mov edi, dword [ebp - 0x414]
mov esi, eax
mov dword [ebp - 0x544], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x554], xmm0
mov dword [ebp - 0x540], 0
xor eax, eax
movups xmm0, xmmword [esi]
movups xmmword [ebp - 0x554], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [ebp - 0x544], xmm0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 7
mov word [esi], ax
push 0x45b5dc
lea edx, [ebp - 0x554]
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0x4e4]
call fcn.00401f40
add esp, 4
mov byte [ebp - 4], 0x18
mov ecx, dword [ebp - 0x540]
cmp ecx, 7
jbe 0x40aa89
mov edx, dword [ebp - 0x554]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40aa7f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1c0
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x544], 0
mov dword [ebp - 0x540], 7
mov word [ebp - 0x554], ax
mov byte [ebp - 4], 0x19
mov ecx, dword [ebp - 0x564]
cmp ecx, 7
jbe 0x40aaea
mov edx, dword [ebp - 0x578]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40aae0
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1c0
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x568], 0
mov dword [ebp - 0x564], 7
mov word [ebp - 0x578], ax
mov byte [ebp - 4], 0x1a
mov ecx, dword [ebp - 0x594]
cmp ecx, 7
jbe 0x40ab4b
mov edx, dword [ebp - 0x5a8]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40ab41
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1c0
push ecx
push edx
call fcn.0042af20
add esp, 8
lea edx, [ebp - 0x538]
mov dword [ebp - 0x598], 0
push edx
lea edx, [ebp - 0x528]
mov dword [ebp - 0x594], 7
push edx
push 0
push 0
xor eax, eax
lea ecx, [ebp - 0x4e4]
cmp dword [ebp - 0x4d0], 7
push 0x228
cmova ecx, dword [ebp - 0x4e4]
cmp dword [ebp - 0x42c], 7
push 0
push 0
mov word [ebp - 0x5a8], ax
lea eax, [ebp - 0x440]
cmova eax, dword [ebp - 0x440]
push 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x40abce
mov edx, str.Cant_run_self_copy
call fcn.0040f860
push eax
call fcn.0040fb20
add esp, 4
jmp 0x40abf7
mov edx, str.proc_started
call fcn.0040f860
push eax
call fcn.0040fb20
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
add esp, 4
push dword [ebp - 0x538]
call esi
push dword [ebp - 0x534]
call esi
mov ecx, dword [ebp - 0x4d0]
cmp ecx, 7
jbe 0x40ac37
mov edx, dword [ebp - 0x4e4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40ac2d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1c5
push ecx
push edx
call fcn.0042af20
add esp, 8
or esi, 0xffffffff
jmp 0x40ac58
mov edx, str.Cant_make_self_copy
or esi, 0xffffffff
call fcn.0040f860
push eax
call fcn.0040fb20
mov edi, dword [ebp - 0x414]
add esp, 4
mov ecx, dword [ebp - 0x42c]
cmp ecx, 7
jbe 0x40ac98
mov edx, dword [ebp - 0x440]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40ac8e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1ca
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x430], 0
mov dword [ebp - 0x42c], 7
mov word [ebp - 0x440], ax
cmp edi, 7
jbe 0x40afc0
mov edx, dword [ebp - 0x428]
lea ecx, [edi*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40af80
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1ca
jmp 0x40af80
mov edx, str.zip_path_arg_is_missing
or esi, 0xffffffff
call fcn.0040f860
push eax
call fcn.0040fb20
add esp, 4
jmp 0x40afc0
mov eax, dword [ebp - 0x444]
mov ecx, dword [ebp - 0x458]
cmp eax, 7
lea edi, [ebp - 0x458]
cmova edi, ecx
cmp edx, 7
jne 0x40ad77
mov esi, edx
mov ecx, str.restart
test esi, esi
je 0x40ad48
sub edi, ecx
mov ax, word [edi + ecx]
cmp ax, word [ecx]
jne 0x40ad6b
add ecx, 2
sub esi, 1
jne 0x40ad37
sub esp, 0x28
lea ecx, [ebp - 0x4b4]
mov eax, esp
mov dword [eax], vtable.std::_Func_impl_no_alloc_class__int___cdecl_wmain_int__wchar_t___const_::_27::_lambda_1___int___.0
mov dword [eax + 0x24], eax
call fcn.00409da0
add esp, 0x28
mov esi, eax
jmp 0x40afc0
mov eax, dword [ebp - 0x444]
mov ecx, dword [ebp - 0x458]
cmp eax, 7
lea esi, [ebp - 0x458]
cmova esi, ecx
cmp edx, 7
jne 0x40af89
mov ecx, str.iupdate
test edx, edx
je 0x40adb5
sub esi, ecx
nop word [eax + eax]
mov ax, word [esi + ecx]
cmp ax, word [ecx]
jne 0x40af89
add ecx, 2
sub edx, 1
jne 0x40ada0
push 3
xorps xmm0, xmm0
mov dword [ebp - 0x544], 0
push 0x45b5b0
lea ecx, [ebp - 0x554]
mov dword [ebp - 0x540], 0
movups xmmword [ebp - 0x554], xmm0
call fcn.00402100
lea eax, [ebp - 0x554]
mov byte [ebp - 4], 0x1b
push eax
lea ecx, [ebp - 0x490]
call fcn.00401c30
push eax
lea ecx, [ebp - 0x4e4]
call fcn.00401e10
mov byte [ebp - 4], 0x1d
mov ecx, dword [ebp - 0x540]
cmp ecx, 7
jbe 0x40ae4b
mov edx, dword [ebp - 0x554]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40ae41
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1cf
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x544], 0
mov word [ebp - 0x554], ax
lea ecx, [ebp - 0x590]
lea eax, [ebp - 0x4e4]
mov dword [ebp - 0x540], 7
push eax
call fcn.00401e10
lea eax, [ebp - 0x4cc]
mov byte [ebp - 4], 0x1e
push eax
lea ecx, [ebp - 0x578]
call fcn.00401e10
sub esp, 0x28
mov esi, esp
mov dword [ebp - 0x558], esi
mov dword [esi + 0x24], 0
push 0x34
mov byte [ebp - 4], 0x20
call fcn.0042aef0
movups xmm0, xmmword [ebp - 0x590]
xor ecx, ecx
add esp, 4
mov word [ebp - 0x590], cx
mov dword [eax], vtable.std::_Func_impl_no_alloc_class__int___cdecl_wmain_int__wchar_t___const_::_31::_lambda_2___int___.0
mov dword [eax + 0x14], 0
mov dword [eax + 0x18], 0
movups xmmword [eax + 4], xmm0
movq xmm0, qword [ebp - 0x580]
movq qword [eax + 0x14], xmm0
movups xmm0, xmmword [ebp - 0x578]
mov word [ebp - 0x578], cx
mov dword [ebp - 0x580], 0
movups xmmword [eax + 0x1c], xmm0
mov dword [ebp - 0x57c], 7
movq xmm0, qword [ebp - 0x568]
mov dword [ebp - 0x568], ecx
lea ecx, [ebp - 0x4b4]
movq qword [eax + 0x2c], xmm0
mov dword [ebp - 0x564], 7
mov dword [esi + 0x24], eax
mov byte [ebp - 4], 0x1f
call fcn.00409da0
add esp, 0x28
lea ecx, [ebp - 0x590]
mov esi, eax
call fcn.00401500
mov ecx, dword [ebp - 0x4d0]
cmp ecx, 7
jbe 0x40afc0
mov edx, dword [ebp - 0x4e4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40af80
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
jmp 0x40afbd
mov edx, str.Invalid_action
or esi, 0xffffffff
call fcn.0040f860
cmp dword [ebp - 0x444], 7
lea edx, [ebp - 0x458]
push dword [ebp - 0x448]
cmova edx, dword [ebp - 0x458]
mov ecx, eax
call fcn.00410f40
push eax
call fcn.0040fb20
add esp, 8
mov ecx, dword [ebp - 0x4b8]
cmp ecx, 7
jbe 0x40b000
mov edx, dword [ebp - 0x4cc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40aff6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
mov ecx, dword [ebp - 0x45c]
cmp ecx, 7
jbe 0x40b040
mov edx, dword [ebp - 0x470]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40b036
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
mov ecx, dword [ebp - 0x4a0]
xor eax, eax
mov dword [ebp - 0x460], 0
mov dword [ebp - 0x45c], 7
mov word [ebp - 0x470], ax
cmp ecx, 7
jbe 0x40b09d
mov edx, dword [ebp - 0x4b4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40b093
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
mov ecx, dword [ebp - 0x444]
xor eax, eax
mov dword [ebp - 0x4a4], 0
mov dword [ebp - 0x4a0], 7
mov word [ebp - 0x4b4], ax
cmp ecx, 7
jbe 0x40b0fa
mov edx, dword [ebp - 0x458]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40b0f0
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x448], 0
mov dword [ebp - 0x444], 7
mov word [ebp - 0x458], ax
mov ecx, dword [ebp - 0x474]
cmp ecx, 7
jbe 0x40b157
mov edx, dword [ebp - 0x488]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40b14d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b1d4
push ecx
push edx
call fcn.0042af20
add esp, 8
xor eax, eax
mov dword [ebp - 0x478], 0
lea ecx, [ebp - 0x490]
mov dword [ebp - 0x474], 7
mov word [ebp - 0x488], ax
call fcn.0040b250
lea ecx, [ebp - 0x49c]
call fcn.0040b2a0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042aee2
mov esp, ebp
pop ebp
ret
call fcn.0042fb7f
call fcn.0042fb7f
call fcn.0042fb7f
call fcn.00401350
call fcn.00401350
call fcn.0042fb7f
call fcn.0042fb7f
call fcn.0042fb7f
call fcn.0042fb7f
call fcn.0042fb7f
int3