Function at 0x409974
Capabilities:
Accept command line arguments

Disassembly:
mov eax, 0x41b9ab
call fcn.0041b220
sub esp, 0x440
push ebx
push esi
xor ebx, ebx
push edi
mov esi, ecx
mov dword [ebp - 0x18], ebx
call fcn.00402c0a
mov ecx, esi
call fcn.0040a182
push 1
mov dword [esi + 8], eax
pop edi
cmp eax, edi
jne 0x409a30
push 0x422b40
mov ecx, esi
call fcn.0040a139
test eax, eax
je 0x409bec
mov ecx, esi
call fcn.0040a229
mov dword [esi + 0xc], eax
call fcn.00402b43
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0xc]
cmp eax, ebx
jne 0x4099e2
cmp dword [ebp - 0x14], ebx
je 0x409bfd
cmp eax, ebx
je 0x4099ea
call fcn.0040cd00
mov dword [eax + 0x28], ebx
call fcn.0040cd00
mov ecx, eax
call fcn.0040cd35
mov dword [ebp - 0x1c], eax
call fcn.0040cd00
mov eax, dword [eax + 0x14]
cmp eax, ebx
je 0x409a0a
cmp eax, 4
jne 0x409a0d
mov dword [esi + 0x10], edi
cmp dword [ebp - 0x1c], ebx
je 0x409d09
cmp dword [esi + 0xc], ebx
je 0x409a28
cmp dword [ebp - 0x14], ebx
jne 0x409a28
call fcn.0040cd00
mov dword [eax + 0x24], ebx
mov dword [ebp - 0x18], edi
jmp 0x409ee7
cmp eax, 3
jne 0x409b97
push 0x422ae8
mov ecx, esi
call fcn.0040a139
test eax, eax
je 0x409d32
lea eax, [ebp - 0x14]
mov dword [esi + 0xc], edi
push eax
push 0x422ad4
mov dword [ebp - 0x14], ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call fcn.00402a90
add esp, 0xc
test eax, eax
je 0x409a77
cmp dword [ebp - 0x14], ebx
je 0x409a77
mov dword [esi + 0x14], edi
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x242]
mov word [ebp - 0x244], bx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [ebp - 0x244]
push 0x103
push eax
mov ecx, esi
call fcn.0040a7bc
test eax, eax
je 0x409d43
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
call fcn.0040cd00
mov dword [eax + 0x24], ebx
call fcn.0040cd00
mov dword [eax + 0x20], ebx
call fcn.0040cd00
mov ecx, eax
call fcn.0040cd35
test eax, eax
je 0x409d54
lea eax, [ebp - 0x244]
push eax
call fcn.0040cd00
mov ecx, eax
call fcn.0040e497
call fcn.0040cd00
cmp dword [eax + 0x24], ebx
je 0x409b09
call fcn.00402b43
test eax, eax
jne 0x409b09
call fcn.0040cd00
mov dword [eax + 0x24], ebx
xor eax, eax
cmp dword [esi + 0x14], ebx
sete al
mov edi, eax
call fcn.0040cd00
mov dword [eax + 0x28], edi
xor eax, eax
cmp dword [esi + 0x14], ebx
sete al
mov edi, eax
call fcn.0040cd00
mov dword [eax + 0x2c], edi
mov al, byte [ebp - 0xd]
push ebx
lea ecx, [ebp - 0x2c]
mov byte [ebp - 0x2c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push 1
lea eax, [ebp - 0x2c]
pop edi
mov ecx, esi
push eax
mov dword [ebp - 4], edi
call fcn.0040a84a
test eax, eax
je 0x409b81
mov esi, dword [ebp - 0x28]
cmp esi, ebx
jne 0x409b5f
mov esi, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
call fcn.0040cd00
cmp esi, ebx
mov dword [ebp - 0x1c], eax
je 0x409b81
push esi
call dword [sym.imp.MSVCRT.dll_wcslen]
pop ecx
push eax
mov eax, dword [ebp - 0x1c]
push esi
lea ecx, [eax + 0x50]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x18], edi
push edi
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
jmp 0x409ee7
push 0x422a7c
mov ecx, esi
call fcn.0040a139
test eax, eax
je 0x409d6c
call fcn.00402b43
test eax, eax
mov ecx, esi
je 0x409d7d
call fcn.0040a3f2
test eax, eax
je 0x409e8b
call fcn.0040ac30
mov ecx, eax
call fcn.0040b277
call fcn.00410269
mov ecx, eax
call fcn.0041029e
test eax, eax
je 0x409ec8
jmp 0x409a28
call fcn.0040ac30
mov dword [eax + 0xc], 0x6a
jmp 0x409ee7
mov ecx, esi
call fcn.0040a8a6
test eax, eax
jne 0x409c2c
push 0x10
push 0x4226c0
push 0x422a60
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
call fcn.0040ac30
mov dword [eax + 0xc], 0x66
jmp 0x409ee7
mov ecx, esi
call fcn.0040a16b
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x242]
mov word [ebp - 0x244], bx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [ebp - 0x244]
push 0x104
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call fcn.00402985
pop ecx
mov esi, eax
mov al, byte [ebp - 0xd]
push ebx
lea ecx, [ebp - 0x2c]
mov byte [ebp - 0x2c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov edi, dword [sym.imp.MSVCRT.dll_wcslen]
cmp esi, ebx
mov dword [ebp - 4], ebx
je 0x409c9e
cmp word [esi], bx
je 0x409c9e
push esi
call edi
pop ecx
push eax
push esi
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
mov esi, 0x422a5c
push esi
call edi
pop ecx
push eax
push esi
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov esi, 0x422a48
push esi
call edi
pop ecx
push eax
push esi
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov eax, dword [ebp - 0x28]
cmp eax, ebx
jne 0x409cd2
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
lea eax, [ebp - 0x244]
push eax
call fcn.00402b85
pop ecx
test eax, eax
pop ecx
je 0x409cef
call fcn.0040ac30
mov dword [eax + 4], ebx
jmp 0x409cfb
call fcn.0040ac30
mov dword [eax + 0xc], 0x6b
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x2c]
jmp 0x409b8c
cmp dword [esi + 0xc], ebx
jne 0x409d21
push 0x10
push 0x4226c0
push 0x422a20
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
call fcn.0040ac30
mov dword [eax + 0xc], 0x64
jmp 0x409ee7
call fcn.0040ac30
mov dword [eax + 0xc], 0xca
jmp 0x409ee7
call fcn.0040ac30
mov dword [eax + 0xc], 0xc9
jmp 0x409ee7
mov ecx, esi
call fcn.0040a707
call fcn.0040ac30
mov dword [eax + 0xc], 0xc8
jmp 0x409ee7
call fcn.0040ac30
mov dword [eax + 0xc], 0x130
jmp 0x409ee7
call fcn.0040a8a6
test eax, eax
jne 0x409daa
push 0x10
push 0x4226a4
push 0x422a60
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
call fcn.0040ac30
mov dword [eax + 0xc], 0x12d
jmp 0x409ee7
mov ecx, esi
call fcn.0040a16b
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x44a]
mov word [ebp - 0x44c], bx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [ebp - 0x44c]
push 0x104
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call fcn.00402985
pop ecx
mov esi, eax
mov al, byte [ebp - 0xd]
push ebx
lea ecx, [ebp - 0x3c]
mov byte [ebp - 0x3c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov edi, dword [sym.imp.MSVCRT.dll_wcslen]
cmp esi, ebx
mov dword [ebp - 4], 2
je 0x409e20
cmp word [esi], bx
je 0x409e20
push esi
call edi
pop ecx
push eax
push esi
lea ecx, [ebp - 0x3c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
mov esi, 0x422a5c
push esi
call edi
pop ecx
push eax
push esi
lea ecx, [ebp - 0x3c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov esi, 0x422a48
push esi
call edi
pop ecx
push eax
push esi
lea ecx, [ebp - 0x3c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov eax, dword [ebp - 0x38]
cmp eax, ebx
jne 0x409e54
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
lea eax, [ebp - 0x44c]
push eax
call fcn.00402b85
pop ecx
test eax, eax
pop ecx
je 0x409e71
call fcn.0040ac30
mov dword [eax + 4], ebx
jmp 0x409e7d
call fcn.0040ac30
mov dword [eax + 0xc], 0x131
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x3c]
jmp 0x409b8c
mov ecx, esi
call fcn.0040a16b
mov ecx, esi
call fcn.0040a4b0
test eax, eax
jne 0x409ebe
push 0x10
push 0x4226a4
push 0x422a08
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
call fcn.0040ac30
mov dword [eax + 0xc], 0x12e
jmp 0x409ee7
call fcn.0040ac30
mov dword [eax + 4], ebx
jmp 0x409ee7
push 0x10
push 0x4226a4
push 0x422a08
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
call fcn.0040ac30
mov dword [eax + 0xc], 0x12c
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret